K8S基本操作-25-Init Containers
Init Containers
在 Kubernetes (K8S) 中,Init Containers 是一種特殊的容器,在 Pod 內的應用容器啟動之前運行。 Init Containers 可以包含一些應用鏡像中不存在的實用工具和安裝腳本。 你可以在 Pod 的規約中與用來描述應用容器的 containers 陣列平行的位置指定Init Containers。
Init Containers 可用於以下場景:
- 初始化 Pod 所需的環境,例如下載配置、建立資料目錄等。
- 檢查 Pod 所需的依賴項,例如資料庫連線、外部服務等。
- 執行一些一次性操作,例如初始化資料庫、產生憑證等。
Init Containers 有以下特點:
- 總是運行到完成。
- 每個都必須在下一個啟動之前成功完成。
- 不會影響應用容器的運作。
- 可以超過一個 Init Containers
範例
在這個範例中,Init Container init-db 會在應用程式容器 my-app 啟動之前執行。 init-db 容器會執行指令 echo ‘hello world’ > /data/db.txt,將文字 hello world 寫入到檔案 /data/db.txt 中。 然後,應用容器 my-app 會在啟動時讀取檔案 /data/db.txt 中的內容。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
initContainers:
- name: init-db
image: busybox
command: ["sh", "-c", "echo 'hello world' > /data/db.txt"]
containers:
- name: my-app
image: my-app
command: ["sh", "-c", "cat /data/db.txt"]