Kubernetes CKA課程筆記 49
前面章節過後,開發者已經可以順利的開發與Debug各自的Pod
在一般情況下,一個Pod內只會建立(定義)一個Container
或我們可以稱Main Container,也就是處理主要工作的Container
但是開發者有時候會有需求,需要附掛一些小程式一併執行,例如:
- 更新Cache內容
- 做一些認證(authentication)的處理
- 蒐集主要程式的log資訊
這邊可先將這類程式稱作:Helper Application
並且還有其他種類的形式如在主要程式運作前要跑的腳本,例如:
4.在主要應用程式啟動前要設置環境參數
所以又該如何佈署這類小程式或腳本到K8s?
- 在K8s中Pod就如同虛擬的OS系統,Pod本身有自己的以下資訊:
- 1. 自己的IP位置
- 2. 自己的PORT
- 3. 進入的條件….etc
- 並且Pod內允許存在多個Container
- 不同Container可以是一個Main與Helper的應用程式
- 一般Helper Container術語上又可被稱為Sidecar Container
- 通常Sidecar Container都與Main Container非同步(asynchronously)地運行
- 如下範例Sidecar同步mysql-db的資料
- 或是一般app應用程式蒐集log數據如下圖
- 由於sidecar都在同一個Pod(如機台一樣)
- 所以sidecar與Main Container溝通都是走localhost,而不用hostname
- 並且彼此分享Data
- 甚至Pod內的sidecar container可以很多個!!如下圖
Init Container:
考量到前面提到的情境,如果要在Main Container啟動前
先執行一個script.sh內容,而且可能只執行"乙次"
可能是設置系統環境變數,或是系統檢查
抑或是等待另一個service是可以取用的狀態,才要將Main Container啟動
在上述的情境下
可能side-by-side,週期性持續在Main Container旁邊一起啟動運作的
Sidecar Container就不是那麼合適
我們要求的情境下,只在最初運作執行任務,甚至要比Main Container先執行
完成任務即exits!
符合上述條件者的就叫做 → Init Container
Pod Configuration File寫法如下:
執行上會有如下連續圖的順序動作:
以上Kubernetes提供總共有兩種Multi-Container Pod形式:
- Sidecar Container
- Init Container
都有不同運行特性,可以挑選使用!
下一篇就是教如何佈署這兩種額外的Container!