備戰(zhàn)CKA每日一題——第8天 | initContainer概念眷蜓、用法、使用場(chǎng)景簡(jiǎn)介胎围;k8s secret env吁系、volume考題引出

本活動(dòng)在微信公眾號(hào)【我的小碗湯】上舉行,有送書活動(dòng)白魂!這里參與答題不能參與到送書活動(dòng)哦汽纤!

昨日考題

提供一個(gè)pod的yaml,要求添加Init Container福荸,Init Container的作用是創(chuàng)建一個(gè)空文件蕴坪,pod的Containers判斷文件是否存在,不存在則退出
注意:附帶Pod完整yaml

昨日答案

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: cka-1126
  name: cka-1126
spec:
  initContainers:
  - image: busybox
    name: init-c
    command: ['sh', '-c', 'touch /tmp/cka-1126']
    volumeMounts:
    - name: workdir
      mountPath: "/tmp"
  containers:
  - image: busybox
    name: cka-1126
    command: ['sh', '-c', 'ls /tmp/cka-1126 && sleep 3600 || exit 1']
    volumeMounts:
    - name: workdir
      mountPath: "/tmp"
  volumes:
  - name: workdir
    emptyDir: {}

主Container的command就是判斷文件是否存在敬锐,存在則不退出背传,不存在則退出;也可以用以下if判斷:

command: ['sh', '-c', 'if [ -e /tmp/cka-1126 ];then echo "file exits";else echo "file not exits" && exit 1;fi']

昨日解析

本題的關(guān)鍵點(diǎn)是init容器與主容器需要共同掛載一個(gè)名為workdir的目錄台夺,init容器在里面創(chuàng)建一個(gè)空文件径玖,主容器去檢驗(yàn)文件是否存在,檢驗(yàn)主要用的是shell的語(yǔ)法颤介;

command: ['sh', '-c', 'ls /tmp/cka-1126 && sleep 3600 || exit 1']

這句話意思是:如果ls /tmp/cka-1126返回碼為0梳星,即文件存在,將sleep 3600秒滚朵;否則exit 1退出丰泊;

也可以用shellif語(yǔ)法判斷。

官方文檔地址:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-initialization/
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

梳理概念

初始化容器始绍,顧名思義容器啟動(dòng)的時(shí)候瞳购,會(huì)先啟動(dòng)可一個(gè)或多個(gè)容器,如果有多個(gè)亏推,那么這幾個(gè)Init Container按照定義的順序依次執(zhí)行学赛,一個(gè)執(zhí)行成功年堆,才能執(zhí)行下一個(gè),只有所有的Init Container執(zhí)行完后盏浇,主容器才會(huì)啟動(dòng)变丧。由于一個(gè)Pod里的存儲(chǔ)卷是共享的,所以Init Container里產(chǎn)生的數(shù)據(jù)可以被主容器使用到绢掰。

Init Container可以在多種K8S資源里被使用到如Deployment痒蓬、Daemon Set、StatefulSet滴劲、Job等攻晒,但歸根結(jié)底都是在Pod啟動(dòng)時(shí),在主容器啟動(dòng)前執(zhí)行班挖,做初始化工作鲁捏。

Init 容器支持應(yīng)用容器的全部字段和特性,包括資源限制萧芙、數(shù)據(jù)卷和安全設(shè)置给梅。然而,Init 容器不支持 Readiness Probe双揪,因?yàn)樗鼈儽仨氃?Pod 就緒之前運(yùn)行完成动羽;在資源限制、調(diào)度方面也會(huì)略有不同渔期。

應(yīng)用場(chǎng)景

等待其它模塊Ready:比如有一個(gè)應(yīng)用里面有兩個(gè)容器化的服務(wù)曹质,一個(gè)是Web Server擎场,另一個(gè)是數(shù)據(jù)庫(kù)宅静。其中Web Server需要訪問(wèn)數(shù)據(jù)庫(kù)。但是當(dāng)我們啟動(dòng)這個(gè)應(yīng)用的時(shí)候磷账,并不能保證數(shù)據(jù)庫(kù)服務(wù)先啟動(dòng)起來(lái),所以可能出現(xiàn)在一段時(shí)間內(nèi)Web Server連接數(shù)據(jù)庫(kù)錯(cuò)誤绰咽。為了解決這個(gè)問(wèn)題琐谤,我們可以在運(yùn)行Web Server服務(wù)的Pod里使用一個(gè)InitContainer斗忌,去檢查數(shù)據(jù)庫(kù)是否準(zhǔn)備好,直到數(shù)據(jù)庫(kù)可以連接,Init Container才結(jié)束退出,然后Web Server容器被啟動(dòng)厘贼,發(fā)起正式的數(shù)據(jù)庫(kù)連接請(qǐng)求。

初始化配置:比如集群里檢測(cè)所有已經(jīng)存在的成員節(jié)點(diǎn)岳掐,為主容器準(zhǔn)備好集群的配置信息,這樣主容器起來(lái)后就能用這個(gè)配置信息加入集群;目前在容器化觅赊,初始化集群配置文件時(shí)經(jīng)常用到;

提供一種阻塞容器啟動(dòng)的方式:必須在initContainer容器啟動(dòng)成功后坯约,才會(huì)運(yùn)行下一個(gè)容器,保證了一組條件運(yùn)行成功的方式卿拴;

其它使用場(chǎng)景:將pod注冊(cè)到一個(gè)中央數(shù)據(jù)庫(kù)粥鞋、下載應(yīng)用依賴等壕曼。

Kubernetes 1.5 版本 開(kāi)始支持在annotations下用pod.beta.kubernetes.io/init-containers申明initContainer,像以下這樣。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
  annotations:
    pod.beta.kubernetes.io/init-containers: '[
        {
            "name": "init-myservice",
            "image": "busybox",
            "command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"]
        },
        {
            "name": "init-mydb",
            "image": "busybox",
            "command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"]
        }
    ]'
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']

Kubernetes 1.6 版本的新語(yǔ)法將 Init 容器的聲明移到 spec 下制妄,但是老的 annotation 語(yǔ)法仍然可以使用。

今日考題

創(chuàng)建Secret名為cka1127-secret具篇,內(nèi)含有password字段,值為cka1127栓霜,然后在名為cka1127-01的Pod1里使用ENV進(jìn)行調(diào)用销凑,名為cka1127-02的Pod2里使用Volume掛載在/data 下仅炊;
注意:提交評(píng)論:包含命令和yaml斗幼,以及注意點(diǎn)「ⅲ可分多次評(píng)論蜕窿。

作者簡(jiǎn)介

作者:小碗湯,一位熱愛(ài)呆馁、認(rèn)真寫作的小伙桐经,目前維護(hù)原創(chuàng)公眾號(hào):『我的小碗湯』,專注于寫linux智哀、golang次询、docker荧恍、kubernetes等知識(shí)等提升硬實(shí)力的文章瓷叫,期待你的關(guān)注。轉(zhuǎn)載說(shuō)明:務(wù)必注明來(lái)源(注明:來(lái)源于公眾號(hào):我的小碗湯送巡, 作者:小碗湯)

作者簡(jiǎn)潔

作者:小碗湯摹菠,一位熱愛(ài)、認(rèn)真寫作的小伙骗爆,目前維護(hù)原創(chuàng)公眾號(hào):『我的小碗湯』次氨,專注于寫go語(yǔ)言、docker摘投、kubernetes煮寡、java等開(kāi)發(fā)、運(yùn)維知識(shí)等提升硬實(shí)力的文章,期待你的關(guān)注。轉(zhuǎn)載說(shuō)明:務(wù)必注明來(lái)源(注明:來(lái)源于公眾號(hào):我的小碗湯胁出,作者:小碗湯)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒂秘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碎税,更是在濱河造成了極大的恐慌润努,老刑警劉巖情连,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件貌矿,死亡現(xiàn)場(chǎng)離奇詭異炭菌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)逛漫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門黑低,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人尽楔,你說(shuō)我怎么就攤上這事投储。” “怎么了阔馋?”我有些...
    開(kāi)封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵玛荞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呕寝,道長(zhǎng)勋眯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任下梢,我火速辦了婚禮客蹋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孽江。我一直安慰自己讶坯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布岗屏。 她就那樣靜靜地躺著辆琅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪这刷。 梳的紋絲不亂的頭發(fā)上婉烟,一...
    開(kāi)封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音暇屋,去河邊找鬼似袁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咐刨,可吹牛的內(nèi)容都是我干的昙衅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼定鸟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼而涉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仔粥,我...
    開(kāi)封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤婴谱,失蹤者是張志新(化名)和其女友劉穎蟹但,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谭羔,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡华糖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘟裸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片客叉。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖话告,靈堂內(nèi)的尸體忽然破棺而出兼搏,到底是詐尸還是另有隱情,我是刑警寧澤沙郭,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布佛呻,位于F島的核電站,受9級(jí)特大地震影響病线,放射性物質(zhì)發(fā)生泄漏吓著。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一送挑、第九天 我趴在偏房一處隱蔽的房頂上張望绑莺。 院中可真熱鬧,春花似錦惕耕、人聲如沸纺裁。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)欺缘。三九已至,卻和暖如春惭缰,著一層夾襖步出監(jiān)牢的瞬間浪南,已是汗流浹背笼才。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工漱受, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骡送。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓昂羡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親摔踱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虐先,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容