早在 2020 年 12 月,Kubernetes 就宣布將要棄用 Dockershim(https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/)。在 Kubernetes 中,Dockershim 是一個適配器組件,Dockershim 適配器允許 Kubelet 與 Docker 交互,就好像 Docker 是一個與 CRI 兼容的運行時一樣。
 
Kubernetes 即將發布的 v1.24 版本最主要的變化就是刪除了 Dockershim(https://github.com/kubernetes/enhancements/issues/2221)。也就是說,Kubernetes v1.24 無法再通過 in-tree 的形式來支持 Docker 作為它的 CRI 運行時。
 
隨著 Kubernetes 的發展, 雖然 Docker 日漸式微,但還是有大量用戶群體離不開 Docker,或者說暫時無法切換到 containerd 或 CRI-O 作為它的 CRI 運行時。 Rancher 為了滿足繼續使用 Docker 作為 CRI 運行時的需求,通過 RKE 集群支持外部 Dockershim 繼續使用 Docker 作為 CRI 運行時。
 
雖然 Rancher 最新的 v2.6.4 目前還不支持 Kubernetes v1.24,但早在 Kubernetes v1.21 中就採用了 Mirantis 和 Docker 宣布的上游開源社區外部 Dockershim (該項目稱為 cri-dockerd:https://github.com/kubernetes/enhancements/issues/2221)來確保 RKE 集群可以繼續使用 Docker。換句話說,你可以像之前一樣繼續基於 Docker Engine 構建 Kubernetes,唯一的區別就是 Dockershim 由內置方案變成了外部方案。
 
要啟用外部 Dockershim,只需要在 RKE 配置中設置以下選項:
 
修改rke設定檔 cluster.yml文件
 
cluster.yml
 
nodes:
- address: 192.168.0.7
user: ubuntu
role:
- controlplane
- etcd
- worker
enable_cri_dockerd: true
 
使用rke建立kubernetes集群
rke up
 
INFO[0000] Running RKE version: v1.3.9
INFO[0000] Initiating Kubernetes cluster
INFO[0000] cri-dockerd is enabled for cluster version [v1.22.7-rancher1-2]
INFO[0000] [certificates] GenerateServingCertificate is disabled, checking if there are unused Kubelet certificates
INFO[0000] [certificates] Generating admin certificates and kubeconfig
...
...
...
INFO[1130] [ingress] ingress controller nginx deployed successfully
INFO[1130] [addons] Setting up user addons
INFO[1130] [addons] no user addons defined
INFO[1130] Finished building Kubernetes cluster successfully
 
確認有啟用cri-dockerd
 
通過rancher建立rke集群 (kubernetes1.21以上才支援外部Dockershin)
 
 
啟用cri-dockerd 需改成enable_cri_dockerd: true
 
 
 
 
 
 

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料