容器環境初始化
pod 由pod 鏡像來提供,在pod 生命周期里容器主要分為兩種:初始化容器和主容器
初始化容器一定要成功運行并退出,當初始化容器運行退出完了之后主容器開始和運行
主容器開始運行的時候,有兩個探針:存活探針和就緒探針
Init 容器是一種特殊容器,在?Pod?內的應用容器啟動之前運行。Init 容器可以包括一些應用鏡像中不存在的實用工具和安裝腳本。
初始化容器
在集群內部coredns提供解析服務,每當在集群內創建一個services時,就會創建一個corends解析
添加services定義
在添加services解析之前pod會一直處于就緒狀態
添加了services解析之后
初始化容器的效果:
在打開myapp容器之前,首先通過init容器檢測集群內的解析是否到位,如果解析沒有到位,后續的容器不會啟動?,直到解析到位,環境就緒;容器在開啟svc解析成功后,init容器退出,主容器運行。
kubelet可以選擇是否執行在容器上運行的三種探針執行和做出反應:
回收創建的資源
創建存活探針
存活探針監測失敗導致容器不斷被重啟
一旦存活探針報錯,就認為該pod不存活,就會不斷重啟pod內的容器
將端口修改為80,就可以啟動成功
就緒探針
此時還處于未就緒狀態
沒有定義就緒探針就代表就緒探針是成功的,默認成功
但是現在定義了就緒探針,就緒探針就不會成功
創建測試頁面
創建svc
刪除測試頁面
就緒探針失敗,容器未就緒
注:存活探針如果監測失敗,會不斷的去重啟這個容器,讓它達到一個自愈的功能;
就緒探針相當于一種健康檢測,是k8s對應用上線和下線的一種優雅操作。