pod 知識點 下
我參與11月更文挑戰(zhàn)的第 25 天,活動詳情查看:2021最后一次更文挑戰(zhàn)」
上一篇分享了 pod 的基本知識點,有 K8S 環(huán)境的小伙伴還是可以用起來的,還對比較簡單,知道了 pod 的 yaml 文件結(jié)構(gòu),標(biāo)識,基本的創(chuàng)建 pod 和刪除 pod 的用法等等,我們繼續(xù)

pod 的基本分類
前面我們說到了 pod 分為靜態(tài) pod 和普通的 pod ,那么這倆有啥區(qū)別呢?

靜態(tài) pod
由 kubelet 進行管理
存在于特定 Node 上的 pod
不能通過 Api Server 管理
無法 ReplicationController,Deployment,Daemonset 進行關(guān)聯(lián)
kubelet 無法對該 pod 進行健康檢查
普通 pod
一旦創(chuàng)建,就會被放到 etcd 存儲中
會被 k8s 中的 master 調(diào)度到某個 Node 上面并綁定,該 Node 上的 kubelet 會實例化成 docker 容器 運行起來
k8s 會對 pod 做健康檢查,若 pod 中的容器暫停或者異常,k8s 會將他們重啟
若 pod 所在的 Node 宕機了,那么 k8s 會將 該 Node 的所有 pod 重新調(diào)度到別的節(jié)點上面
pod 的生命周期是啥樣的

如上圖,我們可以看到 mykubia pod 的運行狀態(tài)是 RUNNING , 那么 pod 的生命周期是什么樣子的呢?會有哪些狀態(tài)呢?
Pending
Pending 狀態(tài) 表示 ?Api Server 已經(jīng)創(chuàng)建好了該 pod,但是 pod 中的一個或者多個容器還沒有被創(chuàng)建,或者現(xiàn)在正在下載鏡像
Running
pod 內(nèi)所有的容器已經(jīng)創(chuàng)建好了,至少有一個容器是運行狀態(tài)、正在啟動狀態(tài)或者是正在重啟狀態(tài)
Completed
pod 內(nèi)的容器均已執(zhí)行正常退出,且不會再次重啟了
Failed
pod 內(nèi)的容器均已執(zhí)行正常退出,至少有一個容器是退出失敗的
Unknown
由于某種原因無法獲取到 pod 的狀態(tài),例如網(wǎng)絡(luò)問題等等
pod 的重啟策略是啥樣的

上一篇文章我們手寫 yaml 的時候,還記得 yaml 里面的這個字段嗎 ?restartPolicy: [Always|Never|OnFailure]
restartPolicy 指的是 pod 的重啟策略,分別為:
Always
如果 pod 里面的容器失效的時候,kubelet 會自動重啟這個容器
Never
不管容器運行的狀態(tài)怎么樣,正常還是異常,kubelet 都不會重啟該容器
OnFailure
容器終止運行的時候,并且退出碼不是 0, kubelet 就會重啟該 容器
上面說到的 pod 的狀態(tài)又是如何轉(zhuǎn)換的呢?

我們可以來對比一下,當(dāng) pod 中有 1 個 或者多個容器在運行的時候,發(fā)生如下情況,pod 的狀態(tài)會是如何轉(zhuǎn)換的
當(dāng) pod 中有 1 個容器的時候:
當(dāng)前 pod 的狀態(tài)若發(fā)生如下事件pod 的狀態(tài)會如何調(diào)整Running容器成功退出- Always 重啟策略
狀態(tài)仍然是 Running
- Never 重啟策略
狀態(tài)會變成 Completed
- OnFailure 重啟策略
狀態(tài)會變成 CompletedRunning容器退出異常- Always 重啟策略
狀態(tài)仍然是 Running
- Never 重啟策略
狀態(tài)會變成 Failed
- OnFailure 重啟策略
狀態(tài)會變成 Running
當(dāng) pod 中有 2 個以上的容器的時候:
當(dāng)前 pod 的狀態(tài)若發(fā)生如下事件pod 的狀態(tài)會如何調(diào)整Running有 1 容器退出異常- Always 重啟策略
狀態(tài)仍然是 Running
- Never 重啟策略
狀態(tài)會變成 Running
- OnFailure 重啟策略
狀態(tài)會變成 RunningRunning容器資源被限制,容器被殺掉- Always 重啟策略
狀態(tài)仍然是 Running
- Never 重啟策略
狀態(tài)會變成 Failed
- OnFailure 重啟策略
狀態(tài)會變成 Running
pod 的資源是如何配置的?
例如上一篇我們手寫的 yaml 就有提到

pod 的 yaml 中,我們可以設(shè)置 cpu 的個數(shù)和 memory 的大小,這些值都是一個具體的值,都是絕對值
cpu 的單位是 個數(shù) , 例如可以配置 500m 表示 0.5 個 CPU
memory 的單位是 字節(jié)數(shù) , 例如可以配置 64 Mi 表示 64 M 的內(nèi)存
request
表示資源申請的最小數(shù)量,滿足系統(tǒng)必須要求
limits
表示申請該資源的最大數(shù)量,這個值是不能突破的,如果突破了,K8S 就會將該 pod 殺掉
今天就到這里,學(xué)習(xí)所得,若有偏差,還請斧正
歡迎點贊,關(guān)注,收藏
朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

好了,本次就到這里
技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。
我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~