容器組(Pod)
- 在k8s中是最小的資源分配和調(diào)度單位,由一個(gè)或多個(gè)容器組成茄靠。同一個(gè)Pod中,不同容器共享命名空間(網(wǎng)絡(luò)蝶桶、IPC慨绳、文件系統(tǒng))、Cgroup和存儲(chǔ)卷。
- 創(chuàng)建過程
先創(chuàng)建一個(gè)pause容器脐雪,該容器創(chuàng)建相關(guān)命令空間厌小,然后創(chuàng)建Pod中的其他應(yīng)用容器,并共享pause創(chuàng)建的命名空間和Cgroup喂江、存儲(chǔ)
- 定義
apiVersion: v1
kind: Pod
metadata:
name: nginx-test
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort:80
- 容器組的狀態(tài)
- 待定Pending:容器鏡像未就緒
- 運(yùn)行Running:所有容器都被創(chuàng)建召锈,至少一個(gè)容器在運(yùn)行中
- 成功Succeeded:所有容器都正常退出,任務(wù)完成
- 失敗Failed:所有容器都退出获询,至少一個(gè)容器是非正常退出
- 未知Unknown:未知狀態(tài)涨岁,例如所在節(jié)點(diǎn)無法匯報(bào)狀態(tài)
服務(wù)
- 主要是為了解決Pod地址可變后繼續(xù)給外部提供服務(wù)的問題
- 服務(wù)類型:ClusterIP(產(chǎn)生一個(gè)集群內(nèi)的地址,該地址只能在集群內(nèi)被解析和訪問)吉嚣、NodePort(在每個(gè)集群節(jié)點(diǎn)上映射服務(wù)到一個(gè)靜態(tài)的本地端口)梢薪、LoadBalancer(使用外部的路由服務(wù),自動(dòng)路由到NodePort和ClusterIP上面)尝哆、ExternalName
- 創(chuàng)建過程
服務(wù)在創(chuàng)建后會(huì)分配一個(gè)集群地址秉撇,通過kube-proxy進(jìn)程負(fù)責(zé)將訪問Service的請(qǐng)求代理到具體的Pod
- 服務(wù)健康檢查
- 通過HTTP獲取資源是否成功
- 在容器中執(zhí)行命令,返回值是否為0
- 打開給定的socker端口是否成功
包括成功秋泄、失敗琐馆、位置三個(gè)狀態(tài),其中LivenessProbe反映的是容器自身狀態(tài)恒序,如配置了重啟策略瘦麸,則失敗后會(huì)自動(dòng)重啟,ReadinessProbe則用來反映容器內(nèi)的服務(wù)是否可用
存儲(chǔ)卷
- 存儲(chǔ)卷即容器掛載的數(shù)據(jù)卷歧胁,和Pod有一致的生命周期
- 存儲(chǔ)卷類型滋饲,emptyDir、hostPath喊巍、nfs屠缭、gcePersistentDisk、awsElastic崭参、gitRepo呵曹、secret
- 定義
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /tmp
server:192.168.137.33