共计 1212 个字符,预计需要花费 4 分钟才能阅读完成。
POD 解决了什么问题?
成组资源调度问题的解决。
mesos 采纳的资源囤积策略容易呈现死锁和调度效率低下问题;
google 采纳的乐观调度技术难度十分大;
而 k8s 应用 pod 优雅的解决了这个问题。
pod 的呈现解决了两个问题。
第一:解决了超亲密关系的过程合作;
第二:容器设计模式 sidecar 利用的载体;
POD 是什么?
pod 是逻辑概念,在 linux 操作系统中并不存在,对应了容器组,是 k8s 中原子调度单位,物理构造如下图:
infra 容器是一个应用编译语言编写的轻量级程序,其它业务容器共享了 infra 容器的 network namespace,即 pod 的所有网络流量都是通过 infra 容器来解决的,永远处于暂停状态,跟 pod 同生命周期。
pod 里的容器共享 volumn ;
物理构造决定了它非常适合用来解决超亲密关系的容器或者说程序。
POD 的利用例子
共享 volumn: 的两个容器
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 独立更新和演进)
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 即服务网格的根底。
原创不易,关注诚可贵,转发价更高!转载请注明出处,让咱们互通有无,共同进步,欢送沟通交流。
正文完