k8s中pod的完整生命週期

2021-10-10 23:20:14 字數 1975 閱讀 4925

(1)pod物件的生命週期從開始建立到終止退出的時間範圍稱為生命週期。

(2)其中建立主容器是必須的操作,初始化init容器,啟動後鉤子,存活性探測,就緒性探測,停止前鉤子為可選執行。

(3)pod在整個生命週期的過程中總會處於以下幾個狀態:

pending:建立了pod資源並存入etcd中,但尚未完成排程。

containercreating:pod 的排程完成,被分配到指定 node 上。處於容器建立的過程中。通常是在拉取映象的過程中。

running:pod 包含的所有容器都已經成功建立,並且成功執行起來。

succeeded:pod中的所有容器都已經成功終止並且不會被重啟

failed:所有容器都已經終止,但至少有乙個容器終止失敗,也就是說容器返回了非0值的退出狀態或已經被系統終止。

unknown:因為某些原因無法取得 pod 的狀態。這種情況通常是因為與 pod 所在主機通訊失敗。

(4)pod生命週期的重要行為:

1.初始化容器

乙個pod可以擁有任意數量的init容器。init容器時順序執行的,並且僅當最後乙個init容器執行完畢才會去啟動容器。換句話說,init容器也可以用來延遲pod的主容器的啟動。

2.生命週期鉤子:

pod允許定義兩種型別的生命週期鉤子,啟動後(post-start)鉤子和停止前(pre-stop)鉤子

這些生命週期鉤子是基於每個容器來指定的,和init容器不同的是,init容器時應用到整個pod。而這些鉤子是針對容器的,是在容器啟動後和停止前執行的。

3.容器探針:

他是kubectl對容器週期性執行的健康狀態診斷。分為兩種: liveness(存活性探測), readiness(就緒性檢測)

liveness(存活性探測):判斷容器是否處於runnning狀態,策略是重啟容器

readiness(就緒性檢測):判斷容器是否準備就緒並對外提供服務,將容器設定為不可用,不接受service**的請求

三種處理器用於pod檢測:

execaction:在容器中執行乙個命令,並根據返回的狀態碼進行診斷1,只有返回0為成功,

tcpsocketaction:通過與容器的某tcp埠嘗試建立連線金慈寧宮診斷

4.容器的重啟策略:

定義是否重啟pod物件

always:但凡pod物件終止就重啟,預設設定

onfailure:僅在pod出現錯誤時才重啟

never:從不

注:一旦pod繫結到乙個節點上,就不會被重新繫結到另乙個節點上,要麼重啟,要麼終止

5.pod的終止過程

終止過程主要分為如下幾個步驟:

(1)使用者發出刪除 pod 命令

(2)pod 物件隨著時間的推移更新,在寬限期(預設情況下30秒),pod 被視為「dead」狀態

(3)將 pod 標記為「terminating」狀態

(4)第三步同時執行,監控到 pod 物件為「terminating」狀態的同時啟動 pod 關閉過程

(5)第三步同時進行,endpoints 控制器監控到 pod 物件關閉,將pod與service匹配的 endpoints 列表中刪除

(6)如果 pod 中定義了 prestop 鉤子處理程式,則 pod 被標記為「terminating」狀態時以同步的方式啟動執行;若寬限期結束後,prestop 仍未執行結束,第二步會重新執行並額外獲得乙個2秒的小寬限期

(7)pod 內物件的容器收到 term 訊號

(8)寬限期結束之後,若存在任何乙個執行的程序,pod 會收到 sigkill 訊號

(9)kubelet 請求 api server 將此 pod 資源寬限期設定為0從而完成刪除操作

k8s排程 原理 K8s排程原理和Pod生命週期

1 k8s排程原理 pod只存在某乙個物理節點上,可以執行多個container 2 pod的生命週期 暫停pod,可以暫停deployment kubectl get depolyment kubectl scale replicas 0 deployment 刪除pod。刪除之後,狀態變成suc...

k8s集群建立pod,執行pod

k8s集群搭建好後,各個node的狀態變成了ready,就可以建立pod,建立完成後,就會預設的執行其中的container。使用乙個簡單yaml檔案描述pod apiversion v1 必選,版本號,例如v1,版本號必須可以用 kubectl api versions 查詢到 kind pod ...

k8s檢視pod的命令

引數解析 name pod名 ready 準備好的副本數 status 狀態 restarts 重啟 age 已經執行的時間 kubectl get pod o wide 引數解析 ip ip位址 node 執行節點 nominated node 指定節點 kubectl describe pod ...