K8s之初始化容器Init Container

前言

前面我們知道一個Pod中其實可以運行多個容器洞坑,之前說的都是普通的工作容器心软,但其實還有一種特殊的容器叫作Init Container 初始化容器扎瓶,它再普通容器之前運行颗祝∽巧粒可以有多個初始化容器恼布,所有初始化容器按順序依次運行直到完成,所有容器都運行完成后搁宾,普通容器才開始運行折汞。

Init Container不支持探測,因為在Pod就緒之前它們必須運行完成猛铅。

Init Container 在1.3引入的Alpha版本字支,1.5之后更新為Beta版本。主要是完成應用容器需要的前置條件奸忽。比如需要其它關聯(lián)組件正確運行才能啟動(如數(shù)據(jù)庫)

下面我們來使用 Init Container

使用

準備 kube-nginx.yml 內容如下堕伪。

假設初始化容器需要提前給Nginx容器創(chuàng)建一個請求頁面 /root/index/initContainer.html,頁面的內容為 Init Container is Running栗菜,將該頁面以共享存儲的方式掛載在Nginx的/usr/share/nginx/html目錄欠雌,那么啟動之后可以通過 127.0.0.1/initContainer.html 訪問。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  initContainers:
  - name: create
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ['sh','-c','sleep 10; mkdir -p /root/index; echo "Init Container is Running" > /root/index/initContainer.html']
    volumeMounts:
    - name: init-test
      mountPath: /root/index
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP
    volumeMounts:
    - name: init-test
      mountPath: /usr/share/nginx/html
  volumes:
  - name: init-test
    emptyDir: {}

啟動Pod疙筹,觀察Pod狀態(tài)富俄,觀察Pod創(chuàng)建過程

# 啟動
[root@master init-container]# kubectl apply -f kube-nginx.yml 
pod/nginx created

# 查看Pod狀態(tài)
[root@master init-container]# kubectl get pods nginx
NAME    READY   STATUS     RESTARTS   AGE
nginx   0/1     Init:0/1   0          10s
[root@master init-container]# kubectl get pods nginx
NAME    READY   STATUS            RESTARTS   AGE
nginx   0/1     PodInitializing   0          11s
[root@master init-container]# kubectl get pods nginx
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          14s

#Pod創(chuàng)建過程
[root@master init-container]# kubectl describe  pod nginx|grep -A 100 Events
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  49s   default-scheduler  Successfully assigned default/nginx to node01
  Normal  Pulled     49s   kubelet            Container image "busybox" already present on machine
  Normal  Created    49s   kubelet            Created container create
  Normal  Started    49s   kubelet            Started container create
  Normal  Pulled     38s   kubelet            Container image "nginx" already present on machine
  Normal  Created    38s   kubelet            Created container nginx
  Normal  Started    38s   kubelet            Started container nginx
  
# 請求
[root@master init-container]# kubectl exec -it nginx -c nginx -- curl 127.0.0.1/initContainer.html
Init Container is Running

從上面的結果可看出,當初始化容器還沒執(zhí)行完成時而咆,Pod狀態(tài)為 Init:0/1霍比,完成之后開始運行nginx容器,此時狀態(tài)為 PodInitializing暴备,稍等一小會Pod狀態(tài)為 Running 表示業(yè)務容器也已經(jīng)運行成功悠瞬。

通過觀察Pod的創(chuàng)建過程知道,先是拉取 busybox 鏡像運行涯捻,運行成功后才是拉取nginx鏡像運行浅妆,表明初始化容器在業(yè)務容器之前運行

上面只是一個簡單入門案例,假如是一個tomcat障癌,那么是不是可以把業(yè)務的 war 包放到某個可以下載的地方凌外,每次代碼更新只需要初始化容器通過 wget 去拉取并通過掛載方式掛載到tomcat的webapp目錄下。這樣就不需要每次將 tomcat涛浙,jdk康辑,war包重新打鏡像了。

注意點

Pod的重啟會導致Init Container重新運行蝗拿,如果是一些要保證冪等性的操作需要謹慎使用

Init Container鏡像發(fā)生改變會引起Pod的重啟晾捏,業(yè)務容器鏡像的變更只會重啟業(yè)務容器

Init Container也可以定義資源,會作為Pod的有效初始資源哀托,取所有Init Container的最大limits/requests, 如果這個值比所有應用容器之和還大,那么最終Pod的有效limits/requests為初始化容器的值劳秋,否則為所有應用容器之和仓手。

Init Container就介紹到這胖齐,后面將介紹Pod的調度。


歡迎關注嗽冒,學習不迷路呀伙!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市添坊,隨后出現(xiàn)的幾起案子剿另,更是在濱河造成了極大的恐慌,老刑警劉巖贬蛙,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雨女,死亡現(xiàn)場離奇詭異,居然都是意外死亡阳准,警方通過查閱死者的電腦和手機氛堕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來野蝇,“玉大人讼稚,你說我怎么就攤上這事∪粕颍” “怎么了锐想?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乍狐。 經(jīng)常有香客問我赠摇,道長,這世上最難降的妖魔是什么澜躺? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任蝉稳,我火速辦了婚禮,結果婚禮上掘鄙,老公的妹妹穿的比我還像新娘耘戚。我一直安慰自己,他們只是感情好操漠,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布收津。 她就那樣靜靜地躺著,像睡著了一般浊伙。 火紅的嫁衣襯著肌膚如雪撞秋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天嚣鄙,我揣著相機與錄音吻贿,去河邊找鬼。 笑死哑子,一個胖子當著我的面吹牛舅列,可吹牛的內容都是我干的肌割。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼帐要,長吁一口氣:“原來是場噩夢啊……” “哼把敞!你這毒婦竟也來了?” 一聲冷哼從身側響起榨惠,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤奋早,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赠橙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耽装,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年简烤,在試婚紗的時候發(fā)現(xiàn)自己被綠了剂邮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡横侦,死狀恐怖挥萌,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情枉侧,我是刑警寧澤引瀑,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站榨馁,受9級特大地震影響憨栽,放射性物質發(fā)生泄漏。R本人自食惡果不足惜翼虫,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一屑柔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珍剑,春花似錦掸宛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至别凤,卻和暖如春饰序,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背规哪。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工求豫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓注祖,卻偏偏與公主長得像猾蒂,于是被迫代替她去往敵國和親均唉。 傳聞我的和親對象是個殘疾皇子是晨,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容