您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kubernetes怎么從Docker遷移到Containerd”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kubernetes怎么從Docker遷移到Containerd”吧!
Kubernetes在1.20版本之后不再將Docker作為容器運行時使用。不要驚慌????Docker容器仍然支持,但是dockershim/Docker Kubernetes和containerd之間的層已經棄用,將從1.22+版本中移除。因此,如果你正在運行docker,你需要更改為支持的容器運行時接口(CRI)。containerd是一個很好的選擇,如果您正在運行Docker,它已經在Kubernetes節點上運行了。
一個明顯的優勢是開銷更少,沒有Docker-shim和Docker翻譯層,如圖所示。
首先,我們檢查當前運行的容器是什么。我們使用kubectl get node -o
來實現這一點。正如我們所看到的,我們將Docker作為運行時運行。
現在,我們檢查containerd cli /usr/bin/ctr是否存在,名稱空間moby是否存在,命令:/usr/bin/ctr namespace list
moby是docker的命名空間。我們可以在這個命名空間中列出正在運行的容器
如果一切正常,我們可以更改cri,每次更改一個節點,首先是工作節點,然后是控制節點。如果只有一個控制節點,您將失去對集群的訪問權,這將是暫時的,它應該自己恢復。
我們需要封鎖并釋放節點,以便重新調度工作負載。
我們刪除了Docker,這是不必要的,但會讓事情更清楚,以后更不容易出錯,我們會節省一些磁盤空間…
禁用/etc/containerd/config中的disabled_plugins行。這樣cri接口就加載了
如果containerd沒有配置文件,您可以生成一個新的默認文件。
systemctl restart containerd
編輯/var/lib/kubelet/kubeadm-flags.env文件;并將containerd運行時添加到標記。--container-runtime=remote
和 --container-runtimeendpoint=unix:///run/containerd/containerd.sock
所以kubeadm-flags文件看起來應該是這樣的。
在更改運行時之后,我們可以啟動kubelet服務
systemctl start kubelet
現在,當我們運行kubectl時,kubectl get nodes -o wide
,我們看到containerd是我們剛剛更改的節點的運行時containerd。
我們剛改變的節點仍然被封鎖。所以我們現在可以解除封鎖了。
如果現在檢查節點上的名稱空間,會看到一個新的名稱空間k8s.io。moby名稱空間現在是空的,在這個名稱空間中沒有運行容器,所有容器現在都在運行k8.io命名空間。
我們已經成功地更改了cri,現在我們可以移動到下一個節點并重復所有操作。
感謝各位的閱讀,以上就是“Kubernetes怎么從Docker遷移到Containerd”的內容了,經過本文的學習后,相信大家對Kubernetes怎么從Docker遷移到Containerd這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。