1. Pod的設(shè)計動機
1.1 玩法
容器介于操作系統(tǒng)和應(yīng)用之間,容器的推薦玩法是每個容器運行一個進程。
1.2 對外
Pod作為一個獨立的部署單位,支持橫向擴展和復(fù)制。共生(協(xié)同調(diào)度),命運共同體(例如被終結(jié)),協(xié)同復(fù)制,資源共享,依賴管理
1.3 對內(nèi)
Pod內(nèi)容器互相協(xié)作如下:
- pod中的應(yīng)用必須協(xié)調(diào)端口占用。
每個pod都有一個唯一的IP地址,跟物理機和其他pod都處于一個扁平的網(wǎng)絡(luò)空間中,它們之間可以直接連通。 - Pod中應(yīng)用容器的hostname被設(shè)置成Pod的名字。
- Pod中的應(yīng)用容器可以共享volume。
Volume能夠保證pod重啟時使用的數(shù)據(jù)不丟失
1.4 Pod死掉
在以下幾種情況下都會死:
- 調(diào)度失敗
- 節(jié)點故障
- 缺少資源
- 節(jié)點維護
- 用戶主動干掉Pod
2. lnit容器
概念
Init 容器是一種專用的容器,在應(yīng)用程序容器啟動之前運行??偸沁\行到成功完成為止。
每個 Init 容器都必須在下一個 Init 容器啟動之前成功完成。作用
等待一個 Service 創(chuàng)建完成,通過類似如下 shell 命令:
for i in {1..100}; do sleep 1; if dig myservice; then exit 0; fi; exit 1
在啟動應(yīng)用容器之前等一段時間,使用類似 sleep 60 的命令
3. 鏡像拉取策略
imagePullPolicy選項參數(shù)如下:
-
Always
總是拉取新鏡像
imagePullPolicy: Always
-
IfNotPresent
本地有則使用本地鏡像,不拉取
imagePullPolicy: IfNotPresent
- Never
只使用本地鏡像,從不拉取
imagePullPolicy: Never
4. pod狀態(tài)狀態(tài)
-
Pending
Pod已被K8S系統(tǒng)接收,但有一個或多個容器鏡像尚未創(chuàng)建。等待時間包括調(diào)庫Pod的時間和通過網(wǎng)絡(luò)下載鏡像的時間。 -
Running
該Pod已經(jīng)綁定到一個節(jié)點上,Pod中所有容器都已被創(chuàng)建。至少有一個容器正在運行,或者正處于啟動或重啟狀態(tài)。 -
Successd
Pod中所有容器都被成功終止并且不會再重啟。 -
Failed
Pod中所有容器都已經(jīng)終止,并且至少有一個容器是因為失敗終止。也就是說,容器以非0狀態(tài)退出或被系統(tǒng)終止。 -
Unkonwn
無法獲取Pod的狀態(tài),通常是因為與Pod所屬主機通信失敗
5. 容器重啟策略
字段Pod.spec.restartPolicy
Always(默認)
exitCode=任何數(shù)字,執(zhí)行重啟操作OnFailure
exitCode!=0,執(zhí)行重啟操作Never
exitCode=任何數(shù)字,不容器。
6. pod狀態(tài)和重啟策略


image.png