一文(wén)了解docker與k8s

其實 Docker 和(hé) k8s 并非直接的(de)競争對(duì)手兩者相(xiàng)互依存。 Docker 是一個(gè)容器(qì)化(huà)平台,而 k8s 是 Docker 等容器(qì)平台的(de)協調器(qì)。


1、容器(qì)化(huà)時(shí)代

(1)虛拟化(huà)技(jì)術已經走過是三個(gè)時(shí)代,沒有(yǒu)容器(qì)化(huà)技(jì)術的(de)研究就不會有(yǒu)Docker技(jì)術的(de)誕生(shēng)。

92db4a74263963299a4cfaca8bcd00fc_ec11626762a64152bba452d4d17701ae


1)物(wù)理(lǐ)機(jī)時(shí)代: 多個(gè)應用程序排在一台機(jī)器(qì)上(shàng)。

c5dfe5312c15371dfcb0e95ba83670f8_64326dc4c6964844becc353b1b8b423b


2)虛拟機(jī)時(shí)代:一台物(wù)理(lǐ)機(jī)器(qì)安裝多個(gè)虛拟機(jī)(VM),一個(gè)虛拟機(jī)跑多個(gè)程序。

510d4ee48c84c07d804318aa9fa75af7_40c55805701241328c0186b7786983e8


3)容器(qì)化(huà)時(shí)代:一台物(wù)理(lǐ)機(jī)器(qì)安裝多個(gè)容器(qì)實例(Container),一個(gè)容器(qì)跑多個(gè)程序。

9fb3c6ac08c3b76fe8c3051bcd540736_ef123f35bd664eef87ea27e4e1024eeb


(2)容器(qì)化(huà)解決了什麽問(wèn)題?


用一段話(huà)描述:


測試人(rén)員(yuán):你(nǐ)這(zhè)個(gè)功能有(yǒu)問(wèn)題。


開(kāi)發人(rén)員(yuán):我本地(dì)是好(hǎo)的(de)呀!


開(kāi)發人(rén)員(yuán)編寫代碼,在自(zì)己本地(dì)環境測試完成後,将代碼部署到測試或生(shēng)産環境中經常會遇到各種各樣的(de)問(wèn)題。明(míng)明(míng)本地(dì)完美(měi)運行的(de)代碼為(wèi)什麽部署後出現(xiàn)很(hěn)多 bug,原因有(yǒu)很(hěn)多:不同的(de)操作(zuò)系統、不同的(de)依賴庫等。總結一句話(huà):因為(wèi)本地(dì)環境和(hé)遠(yuǎn)程環境不一緻。


容器(qì)化(huà)技(jì)術正好(hǎo)解決了這(zhè)一關鍵問(wèn)題,它将軟件(jiàn)程序和(hé)運行的(de)基礎環境分開(kāi)。開(kāi)發人(rén)員(yuán)編碼完成後将程序打包到一個(gè)容器(qì)鏡像中,鏡像中詳細列出了所依賴的(de)環境,在不同的(de)容器(qì)中運行标準化(huà)的(de)鏡像,從(cóng)根本上(shàng)解決了環境不一緻的(de)問(wèn)題。


注:容器(qì)的(de)概念已經出現(xiàn)不短的(de)時(shí)間(jiān)。但(dàn)直到 2013 年(nián)開(kāi)源項目 Docker 的(de)出現(xiàn)才極大推廣了容器(qì)這(zhè)項技(jì)術,并推動了軟件(jiàn)開(kāi)發中容器(qì)化(huà)和(hé)微(wēi)服務的(de)趨勢,這(zhè)種趨勢後來(lái)被稱為(wèi)雲原生(shēng)開(kāi)發。


2、容器(qì)化(huà)技(jì)術解決的(de)核心問(wèn)題

可移植性:不依賴具體(tǐ)的(de)操作(zuò)系統或雲平台,比如在阿裏雲或騰訊雲直接随意遷移。

占地(dì)小(xiǎo):容器(qì)隻需要其應用程序以及它需要運行的(de)所有(yǒu)容器(qì)和(hé)庫的(de)依賴清單,不需要将所有(yǒu)的(de)依賴庫都(dōu)打包在一起。

共享 bin 和(hé) lib:不同的(de)容器(qì)可以共享 bin 和(hé) lib,進一步節省了空間(jiān)。

 


3、docker的(de)出現(xiàn)

2010 年(nián)一位年(nián)輕小(xiǎo)夥子(zǐ)在美(měi)國(guó)舊(jiù)金(jīn)山成立了一家(jiā)名叫【dotCloud】的(de)公司, 開(kāi)發了 Docker 的(de)核心技(jì)術,從(cóng)此開(kāi)啓了容器(qì)技(jì)術的(de)時(shí)代。後面 dotCloud 公司将自(zì)己的(de)容器(qì)技(jì)術進行了簡化(huà)和(hé)标準化(huà),取名為(wèi) Docker,就是大家(jiā)熟悉的(de)鲸魚 logo。


2013 年(nián) dotCloud 公司宣布将 Docker 開(kāi)源,随着越來(lái)越多的(de)工(gōng)程師(shī)發現(xiàn)了它的(de)優點, Docker 的(de)人(rén)氣迅速攀升,成為(wèi)當時(shí)最火爆的(de)開(kāi)源技(jì)術之一。


當前有(yǒu) 30% 以上(shàng)的(de)企業(yè)在其 AWS 環境中使用 Docker,并且這(zhè)個(gè)數字還(hái)在繼續增長(cháng)。


此時(shí)的(de) Docker,已經成為(wèi)行業(yè)裏人(rén)氣最火爆的(de)開(kāi)源技(jì)術,沒有(yǒu)之一。甚至像 Google、微(wēi)軟、Amazon、VMware 這(zhè)樣的(de)巨頭,都(dōu)對(duì)它青睐有(yǒu)加,表示将全力支持。


Docker 火了之後,dotCloud 公司幹脆把公司名字也改成了 Docker Inc. 。


Docker 和(hé)容器(qì)技(jì)術為(wèi)什麽會這(zhè)麽火爆?說(shuō)白了,就是因為(wèi)它 “輕”。在容器(qì)技(jì)術之前,業(yè)界的(de)網紅是虛拟機(jī)。虛拟機(jī)技(jì)術的(de)代表,是 VMWare 和(hé) OpenStack 。


相(xiàng)信很(hěn)多人(rén)都(dōu)用過虛拟機(jī)。虛拟機(jī),就是在你(nǐ)的(de)操作(zuò)系統裏面,裝一個(gè)軟件(jiàn),然後通(tōng)過這(zhè)個(gè)軟件(jiàn),再模拟一台甚至多台“子(zǐ)電(diàn)腦”出來(lái)。

371e2014ac7e56eb76895ff2578a53af_da382a1532c54b80a3b4237e9193359c

在 “子(zǐ)電(diàn)腦” 裏,你(nǐ)可以和(hé)正常電(diàn)腦一樣運行程序,例如登錄 QQ。如果你(nǐ)願意,你(nǐ)可以變出好(hǎo)幾個(gè) “子(zǐ)電(diàn)腦”,裏面都(dōu)登錄上(shàng) QQ。“子(zǐ)電(diàn)腦” 和(hé) “子(zǐ)電(diàn)腦” 之間(jiān),是相(xiàng)互隔離的(de),互不影響。


虛拟機(jī)屬于虛拟化(huà)技(jì)術。而 Docker 這(zhè)樣的(de)容器(qì)技(jì)術,也是虛拟化(huà)技(jì)術,屬于輕量級的(de)虛拟化(huà)。


虛拟機(jī)雖然可以隔離出很(hěn)多 “子(zǐ)電(diàn)腦”,但(dàn)占用空間(jiān)更大,啓動更慢(màn),虛拟機(jī)軟件(jiàn)可能還(hái)要花(huā)錢(例如:VMWare)。


而容器(qì)技(jì)術恰好(hǎo)沒有(yǒu)這(zhè)些缺點。它不需要虛拟出整個(gè)操作(zuò)系統,隻需要虛拟一個(gè)小(xiǎo)規模的(de)環境(類似 “沙箱”)。Docker 可以輕松創建容器(qì)和(hé)基于容器(qì)的(de)應用程序,最初是為(wèi) Linux 構建的(de),現(xiàn)在也可以在 Windows 和(hé) MacOS 上(shàng)運行。


它啓動時(shí)間(jiān)很(hěn)快,幾秒鐘(zhōng)就能完成。而且,它對(duì)資源的(de)利用率很(hěn)高(gāo)(一台主機(jī)可以同時(shí)運行幾千個(gè) Docker 容器(qì))。此外(wài),它占的(de)空間(jiān)很(hěn)小(xiǎo),虛拟機(jī)一般要幾 GB 到幾十 GB 的(de)空間(jiān),而容器(qì)隻需要 MB 級甚至 KB 級。


079e743aeee2347aa63e88ee603b3d3a_1043df8b2d0c4f6e99c2ec04ee669204


正因為(wèi)如此,容器(qì)技(jì)術受到了熱烈的(de)歡迎和(hé)追捧,發展迅速。大家(jiā)需要注意,Docker 本身(shēn)并不是容器(qì),它是創建容器(qì)的(de)工(gōng)具,是應用容器(qì)引擎。想要搞懂 Docker,其實看(kàn)它的(de)兩句口号就行。


第一句,是 “Build, Ship and Run”。


第二句口号則是:“Build once,Run anywhere(搭建一次,到處能用)”。


c579a921e1f28fe1bea3a884fa0004d4_e535166d5b2148b0a66f79200383792a


Build(構建鏡像): 鏡像就像是集裝箱,包含文(wén)件(jiàn)以及運行環境等等資源;

Ship(運輸鏡像):在宿主機(jī)和(hé)倉庫間(jiān)進行運輸,這(zhè)裏倉庫就像是超級碼頭;

Run(運行鏡像):運行的(de)鏡像就是一個(gè)容器(qì),容器(qì)就是運行程序的(de)地(dì)方。

說(shuō)白了,這(zhè)個(gè) Docker 鏡像,是一個(gè)特殊的(de)文(wén)件(jiàn)系統。它除了提供容器(qì)運行時(shí)所需的(de)程序、庫、資源、配置等文(wén)件(jiàn)外(wài),還(hái)包含了一些為(wèi)運行時(shí)準備的(de)一些配置參數(例如:環境變量)。鏡像不包含任何動态數據,其內(nèi)容在構建之後也不會被改變。


綜上(shàng)所述,Docker 的(de)運行過程,也就是去(qù)倉庫把鏡像拉到本地(dì),然後用執行命令把鏡像運行起來(lái)變成容器(qì),這(zhè)也就是為(wèi)什麽人(rén)們常常将 Docker 稱為(wèi)碼頭工(gōng)人(rén)或碼頭裝卸工(gōng)。


負責對(duì) Docker 鏡像進行管理(lǐ)的(de),是 Docker Registry 服務(類似倉庫管理(lǐ)員(yuán))。當然,不是任何人(rén)建的(de)任何鏡像都(dōu)是合法的(de)。萬一有(yǒu)人(rén)構建的(de)鏡像存在問(wèn)題呢(ne)?所以,Docker Registry 服務對(duì)鏡像的(de)管理(lǐ)是非常嚴格的(de)。最常使用的(de) Registry 公開(kāi)服務,是官方的(de) Docker Hub,這(zhè)也是默認的(de) Registry,并擁有(yǒu)大量的(de)高(gāo)質量的(de)官方鏡像。


4、Docker如何使用

其實大多數人(rén)談論 Docker 時(shí)說(shuō)的(de)是 Docker Engine,這(zhè)隻是一個(gè)構建和(hé)運行的(de)容器(qì)。


在運行容器(qì)前需要編寫 Docker File,通(tōng)過 dockerFile 生(shēng)成鏡像,然後才能運行 Docker 容器(qì)。


Docker File 定義了運行鏡像(image)所需的(de)所有(yǒu)內(nèi)容,包括操作(zuò)系統和(hé)軟件(jiàn)安裝位置。一般情況下(xià)都(dōu)不需要從(cóng)頭開(kāi)始編寫 Docker File,在 Docker Hub 中有(yǒu)來(lái)自(zì)世界各地(dì)的(de)工(gōng)程師(shī)編寫好(hǎo)的(de)鏡像,你(nǐ)可以基于此修改。


📚此外(wài),Docker 容器(qì)提供了一種構建企業(yè)應用程序和(hé)業(yè)務流程應用程序的(de)方法,這(zhè)些應用程序比傳統應用程序更容易安裝、維護和(hé)移動。


⭐Docker 容器(qì)支持隔離:Docker 容器(qì)使應用程序不僅彼此隔離,而且與底層系統隔離。這(zhè)不僅使軟件(jiàn)棧更幹淨,而且更容易使容器(qì)化(huà)應用程序使用系統資源,例如 CPU、GPU、內(nèi)存、I/O、網絡等,它還(hái)可以确保數據和(hé)代碼保持獨立。


⭐Docker 容器(qì)支持可移植性:Docker 容器(qì)在支持容器(qì)運行環境的(de)任何機(jī)器(qì)上(shàng)運行。應用程序不必綁定到主機(jī)操作(zuò)系統,因此可以保持應用程序環境和(hé)底層操作(zuò)環境的(de)整潔和(hé)最小(xiǎo)化(huà)。

例如,采用容器(qì)的(de) MySQL 将在大多數支持容器(qì)的(de) Linux 系統上(shàng)運行,應用程序的(de)所有(yǒu)依賴項通(tōng)常都(dōu)在同一個(gè)容器(qì)中提供。基于容器(qì)的(de)應用程序可以輕易從(cóng) on-prem 系統遷移到雲環境中,或從(cóng)開(kāi)發人(rén)員(yuán)的(de)筆(bǐ)記本電(diàn)腦移到服務器(qì)上(shàng),隻要目标系統支持 Docker 以及可能與之一起使用的(de)任何第三方工(gōng)具,比如 Kubernetes。


⭐通(tōng)常,Docker 容器(qì)鏡像必須為(wèi)特定的(de)平台構建。例如 Windows 容器(qì)不能在 Linux 上(shàng)運行,反之亦然;以前,繞過此限制的(de)一種方法是啓動運行所需操作(zuò)系統實例的(de)虛拟機(jī),并在虛拟機(jī)中運行容器(qì)。

然而 Docker 團隊後來(lái)設計(jì)了一個(gè)更優雅的(de)解決方案,稱為(wèi) manifest,它允許多個(gè)操作(zuò)系統的(de)鏡像并行打包。盡管 manifest 還(hái)處于試驗階段,但(dàn)這(zhè)暗(àn)示了容器(qì)可能成為(wèi)跨平台應用程序解決方案和(hé)跨環境應用程序解決方案。


⭐Docker 容器(qì)支持可組合性:大多數業(yè)務應用程序由幾個(gè)獨立的(de)組件(jiàn)組成,web 服務器(qì)、數據庫和(hé) cache 緩存。Docker 容器(qì)可以将這(zhè)些部件(jiàn)組合成一個(gè)容易更換的(de)功能單元。每個(gè)部分由不同的(de)容器(qì)提供,可以獨立于其他(tā)容器(qì)進行維護、更新、交換和(hé)修改。


🔥 這(zhè)本質上(shàng)是應用程序設計(jì)的(de)微(wēi)服務模型。通(tōng)過将應用程序功能劃分為(wèi)獨立的(de)、自(zì)包含的(de)服務,微(wēi)服務模型為(wèi)過程緩慢(màn)的(de)傳統開(kāi)發和(hé)單一僵化(huà)的(de)應用程序提供了一種解決方案,輕量級和(hé)便攜式容器(qì)使構建和(hé)維護基于微(wēi)服務的(de)應用程序變得更加容易。


5、編排系統的(de)需求催生(shēng)了k8s

盡管 Docker 為(wèi)容器(qì)化(huà)的(de)應用程序提供了開(kāi)放(fàng)标準,但(dàn)随着容器(qì)越來(lái)越多出現(xiàn)了一系列新問(wèn)題:


如何協調、調度和(hé)管理(lǐ)這(zhè)些容器(qì)?

如何在升級應用程序時(shí)不中斷服務?

如何監視(shì)應用程序的(de)運行狀況?

如何批量重新啓動容器(qì)裏的(de)程序?

解決這(zhè)些問(wèn)題需要容器(qì)編排技(jì)術,可以将衆多機(jī)器(qì)抽象,對(duì)外(wài)呈現(xiàn)出一台超大機(jī)器(qì)。現(xiàn)在業(yè)界比較流行的(de)有(yǒu):k8s、Mesos、Docker Swarm。


在業(yè)務發展初期隻有(yǒu)幾個(gè)微(wēi)服務,這(zhè)時(shí)用 Docker 就足夠了,但(dàn)随着業(yè)務規模逐漸擴大,容器(qì)越來(lái)越多,運維人(rén)員(yuán)的(de)工(gōng)作(zuò)越來(lái)越複雜(zá),這(zhè)個(gè)時(shí)候就需要編排系統解救 opers。

b0cb7a6b4277a0f2a1ca8ad56f3ba33c_e7cb222dd43b4e41958041539d53743d

一個(gè)成熟的(de)容器(qì)編排系統需要具備以下(xià)能力:


處理(lǐ)大量的(de)容器(qì)和(hé)用戶

負載均衡

鑒權和(hé)安全性

管理(lǐ)服務通(tōng)信

多平台部署

其中,K8S,就是基于容器(qì)的(de)集群管理(lǐ)平台,它的(de)全稱,是 kubernetes。

4478a807bf4d2497de0b90a6d80b341a_ba11c850f827432fa25beb2b385365d9


和(hé) Docker 不同,K8S 的(de)創造者,是衆人(rén)皆知的(de)行業(yè)巨頭——Google。


然而,K8S 并不是一件(jiàn)全新的(de)發明(míng)。它的(de)前身(shēn),是 Google 自(zì)己搗鼓了十多年(nián)的(de) Borg 系統。K8S 是 Google 研發的(de)容器(qì)協調器(qì),已捐贈給 CNCF,現(xiàn)已開(kāi)源。


Google 利用在容器(qì)管理(lǐ)多年(nián)的(de)經驗和(hé)專業(yè)知識推出了 k8s,主要用于自(zì)動化(huà)部署應用程序容器(qì),可以支持衆多容器(qì)化(huà)工(gōng)具包括現(xiàn)在非常流行的(de) Docker。


目前 k8s 是容器(qì)編排市(shì)場(chǎng)的(de)領導者,開(kāi)源并公布了一系列标準化(huà)方法,主流的(de)公有(yǒu)雲平台都(dōu)宣布支持。


一流的(de)廠(chǎng)商都(dōu)在搶占标準的(de)制高(gāo)點,一堆小(xiǎo)廠(chǎng)商跟着一起玩(wán),這(zhè)就叫生(shēng)态了。


6、k8s架構和(hé)組件(jiàn)

k8s 由衆多組件(jiàn)組成,組件(jiàn)間(jiān)通(tōng)過 API 互相(xiàng)通(tōng)信,歸納起來(lái)主要分為(wèi)三個(gè)部分:


controller manager

nodes

pods

2cef8b797d073c9d24c9b2d0caf50d7c_8a2dd228e3654c1badd220c521f320a3


Controller Manager,即控制器(qì)管理(lǐ)器(qì),用于調度程序以及節點狀态檢測(是k8s的(de)大腦)。

Nodes,構成了 Kubernetes 集群的(de)集體(tǐ)計(jì)算(suàn)能力,實際部署容器(qì)運行的(de)地(dì)方。

Pods,Kubernetes 集群中資源的(de)最小(xiǎo)單位。

下(xià)圖是 Kubernetes 集成 Jenkins 實現(xiàn) CICD(一圖勝千言,需要對(duì)其有(yǒu)一個(gè)大緻的(de)認識):


fb4f15aa75beea958d8bbd5d8a0dd1fa_de6b6108450346f4b5fade1bf7dcf87e


而下(xià)圖則是 GitLab + Jenkins Pipeline + Doker + k8s + Helm 自(zì)動化(huà)部署:

47bb78ebb9b732ac15b4ef7a6f8fc893_4070e44af3c142c390d84f4d0d6b989e


7、k8s與Docker Swarm江湖(hú)恩怨

Docker Swarm 與 k8s 同為(wèi)容器(qì)編排技(jì)術。


b7994f48251f4d3bfb86fdde72198708_ce855c211bd44822aab9592521cd4aad


如果非要拿(ná)Docker和(hé)k8s進行比較,其實更應該拿(ná)Docker Swarm和(hé)k8s比較。


Docker Swarm是Docker自(zì)駕針對(duì)集群化(huà)部署管理(lǐ)的(de)解決方案。優點很(hěn)明(míng)顯,可以更緊密集成到Docker生(shēng)态系統中。雖說(shuō)Swarm和(hé)Docker血緣更近(jìn),但(dàn)是由于商業(yè)、生(shēng)态等原因依舊(jiù)沒有(yǒu)k8s流行。


8、Docker與k8s難舍難分

Docker和(hé)k8s在業(yè)界非常流行,已經是事(shì)實上(shàng)的(de)标準了。


Docker是用于構建、分發、運行()容器(qì)的(de)平台和(hé)工(gōng)具。


而k8s實際上(shàng)是一個(gè)使用Docker容器(qì)進行編排的(de)系統,主要圍繞pods進行工(gōng)作(zuò)。Pods是k8s生(shēng)态中最小(xiǎo)的(de)調度單位,可以包含一個(gè)或多個(gè)容器(qì)。


Docker和(hé)k8s分别做不通(tōng)的(de)事(shì)情,兩者是協同關系。


9、開(kāi)發實踐

(1)不用k8s可以使用docker嗎(ma)?


可以。對(duì)于一些小(xiǎo)型公司、業(yè)務不太複雜(zá)的(de)情況下(xià)都(dōu)是可以直接使用docker的(de)。盡管k8s有(yǒu)很(hěn)多好(hǎo)處,但(dàn)是衆所周知它非常複雜(zá),簡單業(yè)務完全可以放(fàng)棄使用k8s。但(dàn)是當業(yè)務達到一定規模後可能還(hái)是要借助k8s才行。


(2)沒有(yǒu)Docker可以使用k8s嗎(ma)?


k8s展示一個(gè)容器(qì)編排器(qì),沒有(yǒu)容器(qì)拿(ná)什麽編排??


k8s經常與Docker進行搭配使用,但(dàn)是也可以使用其他(tā)容器(qì),如RunC、Containerted等。


(3)Docker Swarm和(hé)k8s怎麽選?


選k8s。2019 年(nián)底 Docker Enterprise 已經出售給 Mirantis,Mirantis 聲明(míng)要逐步淘汰 Docker Swarm,後續會将 k8s 作(zuò)為(wèi)默認編排工(gōng)具。


10、k8s棄用docker?

k8s 1.20版本的(de)changelog原文(wén)如下(xià):


Docker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called "dockershim" which implements CRI support for Docker and it has seen maintenance issues in the Kubernetes community


原文(wén)說(shuō)的(de)是kubelet是通(tōng)過一個(gè)叫做dockershim的(de)模塊實現(xiàn)對(duì)docker的(de)支持,然後以後版本會移除這(zhè)個(gè)dockershim模塊。


典型的(de)k8s runtime架構(dockershim)


關于dockershim是什麽還(hái)要從(cóng)k8s發布之初和(hé)docker的(de)關系說(shuō)起。k8s在發布之初,docker在容器(qì)實現(xiàn)方面占據壟斷地(dì)位。為(wèi)了迎合主流,kubernetes官網也率先使用docker作(zuò)為(wèi)底層容器(qì)的(de)實現(xiàn)。


注: shim 顧名思義就是 “墊片”的(de)意思。


2016年(nián)12月(yuè)k8s發布CRI(Container Runtime Interface),很(hěn)重要的(de)一個(gè)考量就是為(wèi)了避免後續兼容其他(tā)運行時(shí)帶來(lái)的(de)維護工(gōng)作(zuò),所以發布了統一的(de)CRI接口。這(zhè)樣凡是支持CRI的(de)運行時(shí),皆可以直接作(zuò)為(wèi)k8s的(de)底層運行時(shí)。


所以之前的(de)架構是:

6c49a7afb476e22dc2d78e6a94a4574b_35abcd926faa40519fe935cc2efc23ea

Kubelet 通(tōng)過CRI接口調用dockershim請求創建容器(qì);


dockershim把創建容器(qì)的(de)請求轉換成docker daemon的(de)請求往docker創建一個(gè)容器(qì);


這(zhè)時(shí)候把容器(qì)創建請求請求到使用CRI實現(xiàn)的(de)containerd;


containerd通(tōng)過OCI調用containerd-shim然後進而使用操作(zuò)系統底層實現(xiàn)容器(qì)的(de)創建 ;


看(kàn)到這(zhè)兒(ér),相(xiàng)信大家(jiā)就知道(dào)官網為(wèi)什麽要移除dockershim了!!!


因為(wèi)這(zhè)個(gè)調用合着需要經過兩個(gè)劃水(shuǐ)的(de)dockershim和(hé)docker daemon。kubelet直接調用containerd就完事(shì)了。于是就有(yǒu)了如下(xià)新架構:

5ec148c1cae13b5ca74fbc82a59cbf57_d77e5aa01c4f408886ad472fd4142ffe


        總結來(lái)說(shuō),k8s啓用的(de)其實是dockershim,選擇直接對(duì)接CRI接口;并且默認支持的(de)是containerd(就是docker自(zì)帶的(de)組件(jiàn)),所以完全可以和(hé)docker本身(shēn)做到100%兼容。k8s去(qù)除dockershim是自(zì)身(shēn)發展考慮,為(wèi)的(de)是支持更通(tōng)用的(de)CRI标準,更高(gāo)抽象化(huà)意味着更好(hǎo)的(de)兼容性。


        順便說(shuō)下(xià),即便啓用docker也不代表docker就要涼了。docker帶給我們的(de)是更新的(de)工(gōng)作(zuò)流和(hé)開(kāi)發方式,一種容器(qì)化(huà)的(de)思維。在我們的(de)日(rì)常開(kāi)發中,docker在臨時(shí)搭建一些環境時(shí)還(hái)是可以發揮巨大作(zuò)用的(de)。



————————————————


                            版權聲明(míng):本文(wén)為(wèi)博主原創文(wén)章(zhāng),遵循 CC 4.0 BY-SA 版權協議(yì),轉載請附上(shàng)原文(wén)出處鏈接和(hé)本聲明(míng)。

                        

原文(wén)鏈接:https://blog.csdn.net/mijichui2153/article/details/136327686

快速鏈接

宜昌市宜網天下網絡科技有限公司

創傑專注

宜昌市宜網天下網絡科技有限公司是一家(jiā)技(jì)術服務型互聯網企業(yè),為(wèi)廣大企業(yè)用戶提供網站定制開(kāi)發、軟件(jiàn)定制及APP應用定制、微(wēi)信應用及小(xiǎo)程序開(kāi)發、電(diàn)商平台開(kāi)發、企業(yè)網絡推廣等服務。 創傑始終堅持以客戶為(wèi)中心、以技(jì)術為(wèi)基礎、以創新為(wèi)目标、以質量為(wèi)生(shēng)存、以誠信求發展,對(duì)待每一個(gè)産品都(dōu)要求盡善盡美(měi),不斷在技(jì)術和(hé)應用領域進行創新和(hé)突破,并以擁有(yǒu)自(zì)己的(de)核心技(jì)術和(hé)創新精神為(wèi)自(zì)己的(de)永遠(yuǎn)追求,揚帆起航,乘風(fēng)破浪,開(kāi)辟新征程。

Read More

聯系方式

湖(hú)北襄陽追日(rì)路(lù)2号襄陽軟件(jiàn)園A棟403号

客服電(diàn)話(huà):0710-3435750

QQ微(wēi)信:7377268

2024 © 宜昌市宜網天下網絡科技有限公司 版權所有(yǒu) 京ICP證000000号 網絡經濟主體(tǐ)信息

服務熱線

0710-3435750

功能和(hé)特性

價格和(hé)優惠

獲取內(nèi)部資料

創傑科(kē)技(jì)客服二維碼

在線客服

創傑科(kē)技(jì)客服二維碼

客服