内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

KubeletBootstrapCheckpoint怎么應(yīng)用

本篇內(nèi)容介紹了“Kubelet Bootstrap Checkpoint怎么應(yīng)用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司,為您提供成都網(wǎng)站建設(shè)公司、成都網(wǎng)站制作公司、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)成都高空作業(yè)車租賃等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

Kubelet Bootstrap Checkpoint是什么

Kubelet Bootstrap Checkpoint是kubelet對(duì)特定的Pods的進(jìn)行備份、恢復(fù)的kubelet內(nèi)置模塊。

  • Kubelet Bootstrap Checkpoint是對(duì)當(dāng)前Node上帶有Annotation:node.kubernetes.io/bootstrap-checkpoint=true的Pods的Checkpoint到文件系統(tǒng)機(jī)制。

  • 當(dāng)kubelet重啟時(shí),會(huì)檢查checkpoint目錄下各個(gè)Pods對(duì)應(yīng)的checkpoint文件,加載所有的checkpoint文件,轉(zhuǎn)換成Pod Object,然后啟動(dòng)這些Pods。

Kubelet Bootstrap Checkpoint應(yīng)用場(chǎng)景

看起來似乎有點(diǎn)像static pod的使用方式:根據(jù)某個(gè)目錄下Pod的描述文件,kubelet監(jiān)控這些文件,根據(jù)文件的變更與否,決定是否刪除、創(chuàng)建、更新對(duì)應(yīng)的Pods。又或者有點(diǎn)像DaemonSet的使用場(chǎng)景。

最大的不同是,Kubelet Bootstrap Checkpoint是會(huì)對(duì)特定Pods的checkpoint,如果Pods通過API發(fā)生變更或者創(chuàng)建,那么最新的Pod數(shù)據(jù)會(huì)寫入到Pod對(duì)應(yīng)的checkpoint文件中,Pod對(duì)應(yīng)的checkpoint文件名格式是Pod_UID.yaml,存放的內(nèi)容是完整的Pod API Object的Yaml格式內(nèi)容,包括Status。

Kubelet Bootstrap Checkpoint主要的應(yīng)用場(chǎng)景:

  • self-hosted-kubernetes用來對(duì)k8s托管的apiserver,controller-manager,scheduler,kubelet,etcd,Adds-on組件進(jìn)行升級(jí)、維護(hù)的場(chǎng)景。關(guān)于self-hosted-kubernetes的更多內(nèi)容請(qǐng)參考self-hosted-kubernetes design-proposals,bootkube, kubeadm upgrade等都與此相關(guān)。這也是社區(qū)設(shè)計(jì)這一特性的主要?jiǎng)訖C(jī)。下圖是bootkube的原理圖。

Kubelet Bootstrap Checkpoint怎么應(yīng)用

那么,對(duì)于用戶來說,部署普通應(yīng)用時(shí)給Pod加上Annotation:node.kubernetes.io/bootstrap-checkpoint=true來給該P(yáng)od提供bootstrap checkpoint會(huì)帶來什么好處嗎?

對(duì)于用戶而言,如果apiserver能正常訪問,那么bootstrap checkpoint確實(shí)沒有什么用處,因?yàn)閑tcd中已經(jīng)有Pods API Object信息了,checkpoint就顯得多此一舉了。如果checkpoint文件和etcd中數(shù)據(jù)存在不一致的情況,反而會(huì)導(dǎo)致Pod先通過checkpoint恢復(fù)后,很快又根據(jù)etcd中Object Info進(jìn)行重建的問題。

但是,對(duì)于Node上一些特殊的常駐Agent,比如cmdb agent,需要定期上報(bào)Node的狀態(tài)等信息,以DaemonSet Pod方式運(yùn)行在Node上,如果在對(duì)Kubernetes進(jìn)行升級(jí)時(shí)方式不對(duì)或者不順暢,Node系統(tǒng)重啟并長(zhǎng)時(shí)間無法與apiserver進(jìn)行通信(比如apiserver升級(jí)失敗),這將導(dǎo)致Node上無法運(yùn)行DaemonSet Pod,那么這個(gè)Node上的cmdb agent就無法正常上報(bào)信息。對(duì)于這種情況,如果我們給這個(gè)DaemonSet Pod設(shè)置了對(duì)應(yīng)Annotation和啟用了Kubelet Bootstrap Checkpoint,那么kubelet可以在不依賴apiserver的情況下,通過本地的checkpoint文件恢復(fù)之前備份的Pods。

因此,給一些per-node上的關(guān)鍵用戶組件使用Bootstrap Checkpoint是有價(jià)值的。

怎么啟用Kubelet Bootstrap Checkpoint

  • Kubelet啟動(dòng)參數(shù)中配置--bootstrap-checkpoint-path,默認(rèn)為“”,意味著默認(rèn)Disable。

  • 給需要Bootstrap Checkpoint的Pods加上Annotation:node.kubernetes.io/bootstrap-checkpoint=true。

Bootstrap Checkpoint工作機(jī)制

  • kubelet啟動(dòng)時(shí),在NerMainKubelet中會(huì)檢查--bootstrap-checkpoint-path是否不為空,如果不為空,就會(huì)創(chuàng)建checkpointManager。

創(chuàng)建或者變更Pod

  • 當(dāng)用戶提交創(chuàng)建Pod請(qǐng)求后,經(jīng)過scheduler調(diào)度,最后由kubelet發(fā)現(xiàn)調(diào)度到本節(jié)點(diǎn),由kubelet開始Pod的創(chuàng)建流程。

  • checkpointManager不為空的情況下,kubelet會(huì)檢查Pod是都有Annotation:node.kubernetes.io/bootstrap-checkpoint=true,kubelet在HandlePodAddtions時(shí)會(huì)遍歷所有Pods,在dispatchWorker去創(chuàng)建Pod前,PodManager會(huì)調(diào)用checkpoint.WritePod接口先將滿足Annotation的Pods寫入到它們對(duì)應(yīng)的checkpoint文件(Pod_UID.yaml)中。

  • 同樣的,當(dāng)Pod Spec發(fā)生變更,kubelet通過HandlePodUpdates遍歷所有Pods,由PodManager調(diào)用checkpoint.WritePod接口將滿足Annotation的Pods最新內(nèi)容寫入到它們對(duì)應(yīng)的的checkpoint文件中。

  • 如果checkpoint.WritePod發(fā)生Error,可以在kubelet日志中看到,但是并不會(huì)引發(fā)流程異常,也就是說,Pod還會(huì)繼續(xù)創(chuàng)建起來,但是checkpoint失敗。

刪除Pod

  • 當(dāng)用戶提交刪除Pod請(qǐng)求后,kubelet通過HandlePodRemove遍歷所有Pods,由PodManager調(diào)用checkpoint.DeletePod接口將Pod對(duì)應(yīng)的checkpoint文件刪除。

  • 如果Pod對(duì)應(yīng)的checkpoint文件不存在,不會(huì)有異常返回,也不應(yīng)該有異常返回。

  • 如果Pod對(duì)應(yīng)的checkpoint文件存在,但是刪除失敗,那么會(huì)有kubelet Error日志,但是流程不會(huì)失敗。

注意,這里并不會(huì)去檢查Pod的Annotation是否滿足條件,而是對(duì)所有Pods都試圖去刪除對(duì)個(gè)格式的文件名。為什么不先檢查Annotation呢?這樣性能不是會(huì)更高么?試想一下這種場(chǎng)景,Pod的Checkpoint Annotation在變更時(shí)被刪除了,那么他的checkpoint文件就會(huì)被殘留。之后該P(yáng)od被刪除了,然后kubelet發(fā)生重啟時(shí),還會(huì)從checkpoint中恢復(fù)這個(gè)已經(jīng)被刪除的Pod,這很糟糕。當(dāng)然,很快這個(gè)Pod會(huì)從apiserver中同步中知道已經(jīng)被刪除了,然后kubelet再次刪除這個(gè)Pod.

Kubelet重啟

  • 當(dāng)kubelet發(fā)生冷重啟時(shí),會(huì)先檢查--bootstrap-checkpoint-path是否配置了,如果是,就會(huì)調(diào)用checkpoint.LoadPods根據(jù)配置的目錄下的所有Pod_UID.yaml格式的文件,并通過FNV Hash算法進(jìn)行CheckSum檢查。

  • 檢查通過后,將checkpoint yaml文件內(nèi)容轉(zhuǎn)換成Pod API Object,然后把這些Pods對(duì)象通過kubetypes.PodUpdate類型的channel一直傳遞給Kubelet.syncLoopIteration,最終由dispatch給Kubelet podWorkers去創(chuàng)建對(duì)應(yīng)的Pods實(shí)例。

Bootstrap Checkpoint工作流

Bootstrap Checkpoint的代碼很簡(jiǎn)單,也不多,這里直接貼出對(duì)應(yīng)的代碼流程概要圖。

Kubelet Bootstrap Checkpoint怎么應(yīng)用

其他注意事項(xiàng)

  • 目前Bootstrap Checkpoint只是對(duì)本節(jié)點(diǎn)的特定Pods進(jìn)行Checkpoint,并不包括其他Kubernetes Object的Checkpoint。

  • 更不是對(duì)kubelet內(nèi)存數(shù)據(jù)的Checkpoint。這些都不是它想做的事,更不是應(yīng)該做的事,集群狀態(tài)存儲(chǔ)的地方越多,問題就會(huì)越多。

“Kubelet Bootstrap Checkpoint怎么應(yīng)用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

分享文章:KubeletBootstrapCheckpoint怎么應(yīng)用
標(biāo)題鏈接:http://m.rwnh.cn/article0/gspgio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站營銷、云服務(wù)器、微信小程序、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
新宾| 友谊县| 临漳县| 宾阳县| 河津市| 东阿县| 平定县| 离岛区| 江北区| 苍溪县| 湘阴县| 九龙坡区| 中阳县| 偏关县| 轮台县| 三河市| 玛曲县| 文化| 靖远县| 伊春市| 营口市| 芜湖市| 平顶山市| 巴青县| 加查县| 五常市| 东丽区| 武宣县| 习水县| 化州市| 灵寿县| 那坡县| 翁源县| 大英县| 澎湖县| 靖远县| 日喀则市| 琼结县| 扶沟县| 公安县| 大足县|