kubernetes實踐之三十九:Pod初始化容器之Init Container

百聯達發表於2018-05-13
一:前言
在很多應用場景中,應用在啟動之前都需要進行如下初始化操作
1. 等待其他關聯元件正確執行(例如資料庫
2.基於環境變數或配置模版生成配置檔案
3.從遠端資料庫獲取本地所需配置,或者將自身註冊到某個中央資料庫中
4.下載相關依賴包,或者對系統進行一些配置操作

Init container與應用容器本質上是一樣的,但他們是僅執行一次就結束的任務,並且必須在成功執行完成後,系統才能繼續執行下一個容器。

二:例項
nginx-init-containers.yaml

點選(此處)摺疊或開啟

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.     name: nginx
  5. spec:
  6.    initContainers:
  7.    - name: install
  8.      image: busybox
  9.      command:
  10.      - wget
  11.      - "-O"
  12.      - "/work-dir/index.html"
  13.      - http://kubernetes.io
  14.      volumeMounts:
  15.      - name: workdir
  16.         mountPath: "/work-dir"
  17.    containers:
  18.    - name: nginx
  19.       image: nginx
  20.       ports:
  21.       - containerPort: 80
  22.       volumeMounts:
  23.       - name: workdir
  24.          mountPath: /usr/share/nginx/html
  25.    volumes:
  26.    - name: workdir
  27.       emptyDir: {}
kubectl create -f  nginx-init-containers.yaml

kubectl describe pod nginx


三:說明
init container與應用容器的區別
1.執行方式不同,它們必須先於應用容器執行完成,當設定了多個init container時,將按順序逐個執行,當所有init container都成功執行後,kubernetes才會初始化Pod的各種資訊。

2.在init container的定義中也可以設定資源限制,volume的使用和安全策略,但與應用容器略有不同

3.init container不能設定readinessProbe探針,因為必須在它們成功執行後才能繼續執行Pod中定義的普通容器

4.在Pod重新啟動時,init container將會重新執行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2154415/,如需轉載,請註明出處,否則將追究法律責任。

相關文章