pod的生命周期:
1.init container
2.main contianer
(1) post start hook :容器啟動后做什么操作(可以命令查看kubectl explain pod.spec.containers.livesysle)
(2) readiness probe :容器正常工作階段 (可以命令查看kubectl explain pod.spec.containers.readinessProbe/livenessProbe) (用於存活性探測和就緒性探測)
(2) pre stop hook :容器停止前做什么操作 (可以命令查看kubectl explain pod.spec.containers.livesysle)
例:
在kubectl explain pod.spec.containers.readinessProbe下面的選項解釋:
exec (健康狀態監測) 以命令方式來檢測容器健康監測,注意一定得是容器內包含的鏡像所支持的命令才可以。(如:ps,ss,netstat命令檢查服務的端口或者反饋來判斷容器是否健康)
failureThreshold 多判斷幾次,連續N次監測不成功才認為真不健康。 (錯誤閾值)
httpGet (健康狀態監測) 例:可以用請求服務,看看是否會有你認為標准的反饋結果,如果正常則可以認為是健康的。
initialDelaySeconds 初始化多久以后再檢查,不定義的話,剛啟動就檢查。
periodSeconds 檢查周期,隔多長時間監測一次。
successThreshold 多判斷幾次,連續N次監測成功才認為是健康的。 (成功閾值)
tcpSocket (健康狀態監測) 探測服務所監聽的某一端口是否可以響應,若能響應,則認為健康。
timeoutSeconds 當檢查時對方沒響應,我們最多等待多長時間后就認為是監測失敗。
健康狀態監測和就緒狀態監測區別:健康監測有權重啟容器,就緒監測無權重啟容器。
pod對象的相位:
pod對象總是應該處於其生命進程中的一下幾個相位(phase)之一
1.pending:apiserver創建了pod資源對象並已存入etcd中,但尚未被調度完成,或仍處於從倉庫下載鏡像的過程中。
2.running: pod 已經被調度到某節點,並且所有容器都已經被kubelet創建完成。
3.succeeded:pod中的所有容器都已經成功終止並且不會被重啟;
4.failed:所有容器都已經終止,但至少有一個容器終止失敗,即容器返回了非0值的推出狀態或已經被系統終止。
5.unknown:apiserver無法正常獲取到pod對象的狀態信息,通常是由於其無法與所在工作節點的kubelet通信所致。