k8s - pod 的生命週期

先上圖,通過圖來看看pod的生命週期

當kubectl調用創建pod的命令之後,pod會經歷以下幾個階段,跟着圖來走

如圖,這個pod裏面會有n個容器

1. init container(初次化容器)

每個容器都可以存放一些初次容器(init container),這個初次容器的目的就在運行真正容器之前的一些準備工作,例如拷貝文件,初次化文件,或者獲取一些敏感字段如密碼,祕鑰等。爲什麼這樣做呢?有以下幾個點

  • a.假設每個容器裏面都帶有一些拷貝的命令工具,如zip,或者crul等工具,就會造成每一個容器的大小會增加,因爲這些unzip等工具,在容器運行當中是不會使用到的,這樣變成工具冗餘了,所以希望能在初次化容器中完成所有工作後就把容器關閉。
  • b.因爲在真正啓動的容器當中,是不可以訪問敏感字段空間的,所以初次化容器就能把需要的敏感字段拿到後,賦予給主容器當中,這樣就不會出現主容器的安全性問題了。
  • c.這裏注意的是,初次容器是同步運行的,按順序執行,第一初次化容器執行容器失敗,是不會進入第二個初次化容器的。
  • d.這裏也涉及到初次化容器的啓動策略

 

2. start (啓動容器)

初次化容器全部執行完成後,將會全部被殺掉,然後主容器將會被啓動

 

3. readiness (探針)

啓動過程中,會帶有探針,目的是檢查容器是否啓動成功,如果成功,纔會把服務端口暴露出去

 

4. liveness (存活)

在整個過程中會檢查主容器的存活狀態

 

5. stop (停止容器

最後就是停止容器,這裏必須是人爲的停止或者控制器停止

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章