1. 程式人生 > >Kubernetes1.7新特性:支援繞過Docker,直接通過Containerd管理容器_Kubernetes中文社群

Kubernetes1.7新特性:支援繞過Docker,直接通過Containerd管理容器_Kubernetes中文社群

背景情況

從Docker1.11版本開始,Docker依賴於containerd和runC來管理容器,containerd是控制runC的後臺程式,runC是docker公司按照OCI標準規範編寫的一個操作容器的命令列工具,containerd這個後臺程式還可以操作滿足OCI標準規範的其他容器工具,也就意味著以後只要是按照OCI標準規範開發的容器工具,都可以被containerd使用起來。使用containerd好處是,當docker daemon或者containerd兩個程序crash後,應用容器不會“死掉”,未來要是實現的功能是,當containerd daemon重新啟動後可以同應用容器重新建立連線。

從Docker1.11版本開始,daemon模組呼叫關係圖如下:

美國時間12月14日,Docker公司宣佈將containerd從Docker Engine中分離,並捐贈到一個新的開源社群獨立發展和運營,阿里雲,AWS, Google,IBM和Microsoft作為初始成員,會為專案提供貢獻和維護人員。

Kubernetes 1.7新特性-支援繞過Docker,直接通過Containerd管理容器

Kubernetes1.7中,增加了直接通過呼叫containerd來管理容器的α新特性。

從上圖中可以明顯的看出來繞過Docker,直接通過containerd管理容器,可以節省一個操作步驟,那麼這樣會帶來很多好處:

1、  由於減少了一個操作步驟,提高了系統效率,並且系統更易於維護。

2、  由於kubelet並沒有變化,那麼不影響以前使用者使用。

3、  取消了DockerDaemon,整個系統佔用的資源更少了,可以給業務使用的資源變多了。

4、  不依賴DockerDaemon,整個系統更加開放。

要讓kubernetes直接通過containerd管理容器,需要下面幾個步驟:

1、  安裝:containerd:v0.2.3-1098-g8ed1e24

2、  安裝runc:v1.0.0-rc3

3、  安裝cni: v0.4.0

4、  按照kubernetes:v1.7.0以及以上版本

5、  在kubernetes叢集中配置CONTAINER_RUNTIME=remoteCONTAINER_RUNTIME_ENDPOINT=’/var/run/cri-containerd.sock’./hack/local-up-cluster.sh,其中“CONTAINER_RUNTIME=remote”就表示使用containerd直接管理容器。

目前支援如下基本功能:

1、  Sandbox網路管理

2、  POD級別Sandbox和Container生命週期管理

3、  映象管理

4、  在容器中執行命令

5、  容器日誌管理