如何解讀“K8S不支持Docker”?
如何解讀“K8S不支持Docker”?
talkwithtrend
talkwithtrend.com社區(qū)(即twt社區(qū))官方公眾號,持續(xù)發(fā)布優(yōu)秀社區(qū)原創(chuàng)內(nèi)容。內(nèi)容深度服務(wù)企業(yè)內(nèi)各方向的架構(gòu)師、運(yùn)維主管、開發(fā)和運(yùn)維工程師等IT專業(yè)崗位人群,讓您時(shí)刻和國內(nèi)企業(yè)IT同行保持信息同步。
來自社區(qū)會(huì)員分享,歡迎大家來探討
@zhanxuechao 咨詢專家:
容器不只是 Docker ,但不可否認(rèn) Docker 是容器的代名詞、容器時(shí)代的引領(lǐng)者。實(shí)際上 K8S 出現(xiàn)并得以快速發(fā)展,也是由于 Docker 的強(qiáng)大優(yōu)勢和快速發(fā)展, 2014 年 Google 推出 Kubernetes 也主要用于解決大規(guī)模場景下 Docker 容器編排的問題。
2015 年,由 Docker 公司和其他容器行業(yè)領(lǐng)導(dǎo)者共同成立(它也是 Linux 基金會(huì)旗下項(xiàng)目) OCI ( Open Container Initiative ), OCI 主要包含兩個(gè)規(guī)范:( 1 )運(yùn)行時(shí)規(guī)范( runtime-spec ):容器運(yùn)行時(shí),如何運(yùn)行指定的文件系統(tǒng)上的包;( 2 )容器鏡像規(guī)范( image-spec ):如何創(chuàng)建一個(gè) OCI 運(yùn)行時(shí)可運(yùn)行的文件系統(tǒng)上的包。Docker 把它自己的容器鏡像格式和 runtime ( 現(xiàn)在的 runc ) 都捐給了 OCI 作為初始工作。2016 年 6 月, Docker v1.12 發(fā)布,推出 Docker 多主機(jī)多容器編排解決方案,即 Docker Swarm ,意在完善其容器生態(tài)圈技術(shù)框架,并且嘗試撼動(dòng) K8S 在容器編排的地位。
2016 年 12 月, Kubernetes 未解決不同容器運(yùn)行時(shí)產(chǎn)品 / 項(xiàng)目的兼容性問題時(shí)(此時(shí) K8S 已在嘗試支持其他容器運(yùn)行時(shí),如 rkt 、 cri-o 、 containerd 等 ),發(fā)布統(tǒng)一標(biāo)準(zhǔn)的 CRI ( Container Runtime Interface ),凡是支持 CRI 的運(yùn)行時(shí),皆可直接作為 Kubernetes 的底層運(yùn)行時(shí)。為了將自己運(yùn)行時(shí)產(chǎn)品或項(xiàng)目運(yùn)行在 K8S 下,有些 runtime 廠商或社區(qū)就開發(fā)了 符合 CRI 標(biāo)準(zhǔn)的轉(zhuǎn)接線就是一個(gè) shim ,叫做 CRI-shim 。但對 Docker 而言,其自身在容器方面過于強(qiáng)大且自信,為提供符合 K8S 的 CRI 接口規(guī)范的 shim ,不過考慮到 Docker 的用戶群體龐大, K8S (其實(shí)是 kubelet )里繼續(xù)內(nèi)置了連接 docker 的代碼叫做( dockershim )。
所謂 K8S 不再支持 Docker ,實(shí)質(zhì)上是 K8S 要放棄對現(xiàn)在 K8S 代碼倉庫中的 dockershim 的維護(hù)支持, 以便其可以像計(jì)劃的那樣,僅負(fù)責(zé)維護(hù)其 CRI ,任何兼容 CRI 的運(yùn)行時(shí),皆可作為 K8S 的 runtime 。實(shí)際上,在 K8S 提出 CRI 時(shí), Docker 在技術(shù)方面是可以實(shí)現(xiàn)的,但這也會(huì)帶來一個(gè)新的問題,即使 Docker 實(shí)現(xiàn)了 CRI ,但它仍然不是一個(gè)單純的容器運(yùn)行時(shí),它本身包含了大量的非 “ 純底層容器運(yùn)行時(shí) ” 所具備的功能。所以后來 Docker 分離出來 containerd 項(xiàng)目,作為一個(gè)底層容器運(yùn)行時(shí)出現(xiàn)了,它是 K8S 容器運(yùn)行時(shí)更好的選擇。目前, Docker 使用 containerd 作為其底層容器運(yùn)行時(shí)以及眾多的云廠商及公司在生產(chǎn)環(huán)境中使用 containerd 作為其 K8S 的運(yùn)行時(shí),這也從側(cè)面驗(yàn)證了 containerd 的穩(wěn)定性。現(xiàn)在 K8S 和 Docker 社區(qū)都相信 containerd 已經(jīng)足夠成熟可直接作為 K8S 的運(yùn)行時(shí)了,而無需再通過 dockershim 使用 Docker 作為 K8S 的運(yùn)行時(shí)了。這也標(biāo)志著 Docker 為 K8S 提供一個(gè)現(xiàn)代化的容器運(yùn)行時(shí)的承諾最終兌現(xiàn)了。同時(shí), K8S 代碼倉庫中的 dockershim 將會(huì)在未來版本中移除,但是 Mirantis 公司( 2019 年 Mirantis 收購 Docker 的企業(yè)服務(wù))已經(jīng)和 Docker 達(dá)成合作,在未來會(huì)共同維護(hù)一份 dockershim 組件,以便支持 Docker 作為 K8S 的容器運(yùn)行時(shí)。
@顧黃亮 技術(shù)總監(jiān) 暢銷書作者:
@annoymous:
歡迎探討
歡迎點(diǎn)擊文末 閱讀原文 到社區(qū)閱讀和討論交流,發(fā)表您的看法 覺得本文有用,請 轉(zhuǎn)發(fā) 或點(diǎn)擊 賞 ,讓更多同行看到
資料/文章推薦:
-
容器云平臺(tái)規(guī)劃部署架構(gòu)設(shè)計(jì) | 周末送資料
-
K8S 需要多少臺(tái)服務(wù)器?
-
容器云平臺(tái)監(jiān)控架構(gòu)設(shè)計(jì)及優(yōu)化
-
Kubernetes 常見故障排查和處理
-
容器常見故障排查處理和使用規(guī)范建議
-
容器云平臺(tái)如何進(jìn)行日常巡檢?| 運(yùn)維進(jìn)階
下載 twt 社區(qū)客戶端 APP
長按識別二維碼即可下載
或到應(yīng)用商店搜索“twt”
長按二維碼關(guān)注公眾號
*本公眾號所發(fā)布內(nèi)容僅代表作者觀點(diǎn),不代表社區(qū)立場
-
2023年各省最新電價(jià)一覽!8省中午執(zhí)行谷段電價(jià)! 2023-01-03
-
PPT導(dǎo)出高分辨率圖片的四種方法 2022-09-22
-
全國消防救援總隊(duì)主官及簡歷(2023.2) 2023-02-10
-
盤點(diǎn) l 中國石油大慶油田現(xiàn)任領(lǐng)導(dǎo)班子 2023-02-28
-
我們的前輩!歷屆全國工程勘察設(shè)計(jì)大師完整名單! 2022-11-18
-
關(guān)于某送變電公司“4·22”人身死亡事故的快報(bào) 2022-04-26
