POD解决了什么问题?
成组资源调度问题的解决。
mesos采纳的资源囤积策略容易呈现死锁和调度效率低下问题;
google采纳的乐观调度技术难度十分大;
而k8s应用pod优雅的解决了这个问题。
pod的呈现解决了两个问题。
第一:解决了超亲密关系的过程合作;
第二:容器设计模式sidecar利用的载体;
POD是什么?
pod是逻辑概念,在linux操作系统中并不存在,对应了容器组,是k8s中原子调度单位,物理构造如下图:
infra容器是一个应用编译语言编写的轻量级程序,其它业务容器共享了infra容器的network namespace,即pod的所有网络流量都是通过infra容器来解决的,永远处于暂停状态,跟pod同生命周期。
pod里的容器共享volumn ;
物理构造决定了它非常适合用来解决超亲密关系的容器或者说程序。
POD的利用例子
共享volumn:的两个容器
<code class="yaml">apiVersion: v1 kind: pod metadata: name: two-container spec: restartPolicy: Never volumes: - name: shared-data hostPath: path: /data containers: - name: nginx-container image: nginx volumeMounts: - name: shared-data mountPath: /usr/share/nginx/html - name: debian-container image: debian volumeMounts: - name: shared-data mountPath: /pod-data command: ["/bin/sh"] args: ["-c","echo hello from > /pod-data/index.html"]
sidecar模式利用例子:(javaweb程序采纳sidecar模式共享volumn,是的war跟tomcat独立更新和演进)
<code class="yaml">apiVersion: v1 kind: Pod metadata: name: javaweb spec: initContainers: - image: war:v2 name: war command: ["cp", "/sample.war","app"] volumeMounts: - mountPath: /app name: app-volunn containers: - image: tomcat name: tomcat command: ["sh","-c","startup.sh"] volumeMounts: - mountPath: /app name: app-volunn volumes: - name: app-volumn emptyDir: {}
小结
pod的物理构造决定了它非常适合解决超亲密关系的一组容器,也是sidecar即服务网来源gao.dai.ma.com搞@代*码网格的根底。
原创不易,关注诚可贵,转发价更高!转载请注明出处,让咱们互通有无,共同进步,欢送沟通交流。