您的位置:首页 > 其它

云原生系列1 pod基础

2021-02-14 23:44 896 查看

POD解决了什么问题?


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

mesos采用的资源囤积策略容易出现死锁和调度效率低下问题;
google采用的乐观调度技术难度非常大;


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


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

第一:解决了超亲密关系的进程协作;

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


POD是什么?



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

![image.png](https://img2020.cnblogs.com/other/268922/202102/268922-20210214234357945-337352592.png)



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即服务网格的基础。



![pod.png](https://img2020.cnblogs.com/other/268922/202102/268922-20210214234358709-1363172180.png)

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: