圖片來源: 

Kubernetes

在2016年,Docker公司為容器技術標準化做出的重要貢獻,就是將Docker引擎中的Runtime元件containerd開源釋出,而雲端服務四大龍頭AWS、微軟、Google及IBM,都承諾要投入該專案。事隔一年,Kubernetes開始支援Containerd,還推出了容器Runtime介面(Container Runtime Interface,CRI),讓Kubernetes可以相容不同的容器Runtime,而在近日Kubernetes宣布,該調度工具要正式支援containerd,現在正式環境中的Kubernetes叢集,也要可以執行containerd 1.1版了。只要是版本序號在1.1版後的Kubernetes,都能相容containerd。

原先支援containerd 1.0版時,Kubernetes的設計架構,Kubelet與containerd間,夾著cri-containerd,而該Daemon程式,會負責Kubelet傳來的需求,並使用containerd,管理容器及容器映像檔。雖然該機制比Docker設計的更為精簡,不過Kubernetes認為,這樣設計仍不利於開發者進行部署工作,也會帶來不必要的訊息傳輸成本。

而現在支援containerd 1.1後,cri-containerd被重新設計結構,變成containerd CRI套件,不僅內建在containerd中,也預設啟用。如此一來,Kubelet就能直接與containerd溝通,「讓整合變得更穩定、有效率。」Kubernetes表示。

而這個翻新的架構,也改善了Kubernetes的效能,「包含Pod啟動效能,以及Daemon程式資源使用效率。」Kubernetes也比較了使用Docker 18.03 CE版,和containerd 1.1版的效能。相比使用Docker,使用containerd,能改善Pod的啟動延遲性(Startup Latency)。如果在單一叢集內,開啟105個Pod(目前單一叢集可容納的最大數量),「無論是CPU、記憶體的使用,containerd 1.1版都比Docker 18.03 CE版更好。」Kubernetes舉例,像是runtime CPU使用量,containerd比Docker少了68.13%。

不過也有不少開發者好奇,這樣是否代表,未來就不能在Kubernetes環境,使用Docker引擎。而Kubernetes表示,由於Docker引擎是建置在containerd之上,而下一個社群版Docker,也會整合containerd 1.1版。由於Kubelet、Docker引擎都會使用containerd這個元件,Kubernetes表示,使用者除了能受益於Kubernetes的功能、效能改進外,也能保留既有使用Docker引擎的應用。

而現在支援containerd 1.1後,cri-containerd被重新設計結構,變成containerd CRI套件,不僅內建在containerd中,也預設啟用。如此一來,Kubelet就能直接與containerd溝通,讓整合工作變得更穩定、有效率。圖片來源:Kubernetes

Kubernetes表示,由於Docker引擎是建置在containerd之上,而下一個社群版Docker,也會整合containerd 1.1版。由於Kubelet、Docker引擎都會使用containerd這個元件,Kubernetes表示,使用者除了能受益於Kubernetes的功能、效能改進外,也能保留既有使用Docker引擎的應用。圖片來源:Kubernetes

 

 


Advertisement

更多 iThome相關內容