Kubernetes CKA課程筆記 50

擁有複數Containers的Pod — Deploy Sidecar/Init Container

ZONGRU Li
Nov 13, 2021

Add Sidecar Container:

首先從之前課程中製作的deployment元件:nginx-deploymentyaml檔著手

編輯內容:

如上圖,在containers這個list區塊

再增加一個container name,使用busybox image

來作為sidecar container使用

(如上我不看內容根本無法區別哪個是Main或sidecar,所以應該是看任務決定)

並且sidecar會與Main Container一同運行

所以其內Process最好設計為週期性執行(就像上面持續地echo訊息)

並且其實也可以改為如下args形式(詳46篇解說)

這邊就先維持都放在command內:

先移除舊的deployment元件,重新建立:

然後當然就是要確認sidecar有沒有出現:

接著就是要看看裡面的sidecar container有沒有做事,執行:

kubectl logs {Pod name}

這時候要再指定要看log的Container,所以指令改為:

kubectl logs {Pod name} -c {指定的Container名稱}

以上就是Sidecar Container簡單範例!

Add Init Container:

同樣地再次編輯nginx-deployment.yaml檔案來加入Init Container

在上面Main/sidecar的containers同階下新增initContainers區塊來加入init container

編輯好後重建deployment元件,並確認Pod狀態:

所以可以看到Main與sidecar container會與init container分開

持續地觀察,init container仍無法完成Job:

所以就要來確認裡面的log,與前面sidecar同樣方式執行:

kubectl logs {Pod name} -c {指定的Container,init container也可以}

放大log來看:

內容顯示nslookup找不到mydb-service的服務

要修正則很簡單,就是先建一個service元件,首先確認指令執行:

kubectl create service --help

所以最後建立指令為:

kubectl create service clusterip {service名稱} --tcp={service的PORT}:{目標Pod使用的PORT}

連到service IP為:20.99.170.19
就是途中的新建service的IP

最終確認Pod狀態得到:

init container消失了,Main與sidecar Container成功建立!

至此完成了這個Init Container的範例!

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet