kubernetes實踐之三十九:Pod初始化容器之Init Container
一:前言
在很多應用場景中,應用在啟動之前都需要進行如下初始化操作
1. 等待其他關聯元件正確執行(例如資料庫)
2.基於環境變數或配置模版生成配置檔案
3.從遠端資料庫獲取本地所需配置,或者將自身註冊到某個中央資料庫中
4.下載相關依賴包,或者對系統進行一些配置操作
Init container與應用容器本質上是一樣的,但他們是僅執行一次就結束的任務,並且必須在成功執行完成後,系統才能繼續執行下一個容器。
二:例項
nginx-init-containers.yaml
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將會重新執行
在很多應用場景中,應用在啟動之前都需要進行如下初始化操作
1. 等待其他關聯元件正確執行(例如資料庫)
2.基於環境變數或配置模版生成配置檔案
3.從遠端資料庫獲取本地所需配置,或者將自身註冊到某個中央資料庫中
4.下載相關依賴包,或者對系統進行一些配置操作
Init container與應用容器本質上是一樣的,但他們是僅執行一次就結束的任務,並且必須在成功執行完成後,系統才能繼續執行下一個容器。
二:例項
nginx-init-containers.yaml
點選(此處)摺疊或開啟
-
apiVersion: v1
-
kind: Pod
-
metadata:
-
name: nginx
-
spec:
-
initContainers:
-
- name: install
-
image: busybox
-
command:
-
- wget
-
- "-O"
-
- "/work-dir/index.html"
-
- http://kubernetes.io
-
volumeMounts:
-
- name: workdir
-
mountPath: "/work-dir"
-
containers:
-
- name: nginx
-
image: nginx
-
ports:
-
- containerPort: 80
-
volumeMounts:
-
- name: workdir
-
mountPath: /usr/share/nginx/html
-
volumes:
-
- name: workdir
- emptyDir: {}
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes之初始容器(init container)AI
- kubernetes實踐之三十八:Pod排程
- kubernetes實踐之三十六:在容器內獲取Pod資訊 Downward APIAPI
- kubernetes實踐之三十七:Pod健康檢查
- kubernetes實踐之十九:API概述API
- kubernetes實踐之三十五:Pod配置管理ConfigMap
- kubernetes實踐之五十九:NetworkPolicy
- kubernetes實踐之四十九:Scheduler原理分析
- k8s中初始化容器(init container)的作用及其使用方法K8SAI
- kubernetes實踐之四十:Pod的升級與回滾
- kubernetes實踐之三十一:kubectl
- kubernetes實踐之二十二:Pod
- Pod和容器的LimitRange原理和實踐總結MIT
- kubernetes實踐之三十: SonarQube和SonarQube Runner
- kubernetes實踐之三十三:基本概念
- kubernetes實踐之四十一:Pod自動擴容與縮容
- kubernetes實踐之六十九:istio-1.0.0部署和試用
- Kubernetes筆記(五):瞭解Pod(容器組)筆記
- Kubernetes+Docker+Istio 容器雲實踐Docker
- kubernetes實踐之三十二:Jenkins和SonarQube整合Jenkins
- 系統初始化之sys init
- Kubernetes之Pod工作負載負載
- kubernetes實踐之十一:EFK
- kubernetes實踐之三:ETCD TLS證書叢集安裝TLS
- kubernetes實踐之三十四: Master節點安裝與配置AST
- 【三】Kubernetes學習筆記-Pod 生命週期與 Init C 介紹筆記
- kubernetes實踐之二十九:Kubernetes+Harbor+Gitlab+Jenkins+Maven DevOpsGitlabJenkinsMavendev
- kubernetes高階之pod安全策略
- 容器映象加速指南:探索 Kubernetes 快取最佳實踐快取
- kubernetes實踐之五十二:Helm
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之五十八:CronJob
- kubernetes實踐之十七:架構架構
- kubernetes實踐之六十:Cabin-Manage Kubernetes
- Kubernetes原始碼分析之Pod的刪除原始碼
- Flutter 基礎Widgets之容器Container詳解FlutterAI
- Kubernetes容器雲的網際網路企業實踐
- [kubernetes]Error from server (BadRequest):container install-cni is not valid for pod kube-dnsErrorServerAIDNS