Kubernetes1.7新特性:支援繞過Docker,直接通過Containerd管理容器
背景情況
從Docker1.11版本開始, ofollow,noindex">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、 在容器中執行命令