云原生系列1 pod基礎(chǔ)
POD解決了什么問題?
成組資源調(diào)度問題的解決。
mesos采用的資源囤積策略容易出現(xiàn)死鎖和調(diào)度效率低下問題;
google采用的樂觀調(diào)度技術(shù)難度非常大;
而k8s使用pod優(yōu)雅的解決了這個問題。
pod的出現(xiàn)解決了兩個問題。
第一:解決了超親密關(guān)系的進程協(xié)作;
第二:容器設(shè)計模式sidecar應用的載體;
POD是什么?
pod是邏輯概念,在linux操作系統(tǒng)中并不存在,對應了容器組,是k8s中原子調(diào)度單位,物理結(jié)構(gòu)如下圖:

infra容器是一個使用編譯語言編寫的輕量級程序,其它業(yè)務容器共享了infra容器的network namespace,即pod的所有網(wǎng)絡流量都是通過infra容器來處理的,永遠處于暫停狀態(tài),跟pod同生命周期。
pod里的容器共享volumn ;
物理結(jié)構(gòu)決定了它非常適合用來處理超親密關(guān)系的容器或者說程序。
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: {}
小結(jié)
pod的物理結(jié)構(gòu)決定了它非常適合處理超親密關(guān)系的一組容器,也是sidecar即服務網(wǎng)格的基礎(chǔ)。

原創(chuàng)不易,關(guān)注誠可貴,轉(zhuǎn)發(fā)價更高!轉(zhuǎn)載請注明出處,讓我們互通有無,共同進步,歡迎溝通交流。
no pays,no gains!

浙公網(wǎng)安備 33010602011771號