POD解决了什么问题?



成组资源调度问题的解决。

mesos采纳的资源囤积策略容易呈现死锁和调度效率低下问题;
google采纳的乐观调度技术难度十分大;


而k8s应用pod优雅的解决了这个问题。


pod的呈现解决了两个问题。

第一:解决了超亲密关系的过程合作;

第二:容器设计模式sidecar利用的载体;


POD是什么?




pod是逻辑概念,在linux操作系统中并不存在,对应了容器组,是k8s中原子调度单位,物理构造如下图:









infra容器是一个应用编译语言编写的轻量级程序,其它业务容器共享了infra容器的network namespace,即pod的所有网络流量都是通过infra容器来解决的,永远处于暂停状态,跟pod同生命周期。


pod里的容器共享volumn ;




物理构造决定了它非常适合用来解决超亲密关系的容器或者说程序。




POD的利用例子




共享volumn:的两个容器

apiVersion: v1kind: podmetadata:  name: two-containerspec:  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独立更新和演进)

apiVersion: v1kind: Podmetadata:    name: javawebspec:  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即服务网格的根底。






原创不易,关注诚可贵,转发价更高!转载请注明出处,让咱们互通有无,共同进步,欢送沟通交流。