??The Begin??點點關注,收藏不迷路??
|
1、背景
從Kuberetes 1.20
版本開始,Kuberetes官方已經將默認的容器運行時從Docker改為Containerd。
因此,從Kubernetes 1.20
開始,Kuberetes官方將支持使用Docker和Containerd
作為容器運時,也意味著Kubemetes從Docker的依賴中解耦了出來。
在Kubernetes1.24
及之后的版本中作為容器運行時已經被官方棄用,Containerd
成為唯一推薦的容器運行時。
2、容器運行時從 Docker 改為 Containerd
裝 Kubernetes 集群 時,默認容器運行時從 Docker 改為 Containerd 的流程如下:
2.1、安裝 Containerd:
yum install -y containerd
2.2、生成 Containerd 的配置文件
1、創(chuàng)建一個目錄用于存放 Containerd 的配置文件。
sudo mkdir -p /etc/containerd
2、將 Containerd 的默認配置寫入到一個名為 config.toml 的文件中。你可以根據(jù)需要編輯這個文件,然后將其用作自定義的 Containerd 配置文件。
containerd config default > /etc/containerd/config.toml
3、修改 /etc/containerd/config.toml 文件
需要將 SystemdCgroup=false 修改為 SystemdCgroup=true,以表示 Containerd 驅動程序將使用 Systemd 進行 Cgroup 管理。
在 Kubernetes 中,容器運行時需要與宿主機的 Cgroup 和 Namespace 進行交互,以管理容器的資源。對于 Cgroup 的驅動程序,Docker 和 Containerd 默認使用的都是 Cgroupfs,而 systemd-cgroup 則是 Systemd 對 Cgroup 的一個實現(xiàn)。
相比于 Cgroupfs,systemd-cgroup 在資源隔離方面提供了更好的性能和更多的特性。例如,systemd-cgroup 可以使用更多的內存壓縮算法,以便更有效地使用內存。
此外,systemd-cgroup 還提供了更好的 Cgroup 監(jiān)控和控制機制,可以更精確地調整容器的資源使用量。使用 systemd-cgroup 作為容器運行時的 Cgroup 驅動程序可以提高 Kubernetes 集群中容器的資源管理效率,從而提升整個集群的性能。
vi /etc/containerd/config.toml
將 SystemdCgroup=false 修改為 SystemdCgroup=true
另外,將 sandbox_image 設置為阿里云鏡像倉庫中的 pause:3.7,是因為國內的網絡可以訪問阿里云鏡像倉庫。
在 Kubernetes 中,每個 Pod 中都有一個 pause 容器,這個容器不會運行任何應用,只是簡單地休眠。它的作用是保證 Pod 中所有的容器共享同一個網絡命名空間和 IPC 命名空間。
pause 容器會在 Pod 的初始化過程中首先啟動,然后為 Pod 中的其他容器創(chuàng)建對應的網絡和 IPC 命名空間,并且在其他容器啟動之前保持運行狀態(tài),以保證其他容器可以加入共享的命名空間中。
簡單來說,pause 容器就是一個占位符,它為 Pod 中的其他容器提供了一個共享的環(huán)境,使它們可以共享同一個網絡和 IPC 命名空間。這也是 Kubernetes 實現(xiàn)容器間通信和網絡隔離的重要機制之一。
vi /etc/containerd/config.toml
將 sandbox_image="k8s.gcr.io/pause:3.6" 修改為 sandbox_image="registry.aliyuncs.com/google_containers/pause:3.7"。
2.3 、創(chuàng)建 /etc/crictl.yaml 文件
cat >/etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
EOF
/etc/crictl.yaml
文件是 crictl 工具的配置文件,用于指定與 Containerd 交互的相關設置。通過指定 runtime-endpoint 和 image-endpoint,可以告訴 crictl 使用 UNIX 域套接字的方式來連接 Containerd 的 API。
Containerd 提供了一個 Socket 文件 /run/containerd/containerd.sock,
crictl 可以通過連接這個 Socket 文件與 Containerd 進行通信,從而實現(xiàn)對容器和鏡像等操作的管理。
通過這種方式,crictl 可以方便地與 Containerd 進行交互,并執(zhí)行各種容器操作,如創(chuàng)建、刪除、查詢容器等。文章來源:http://www.zghlxwxcb.cn/news/detail-851052.html
2.4 、配置 Containerd 服務開機自啟
1、檢查 Containerd 服務是否已啟用自啟動。
systemctl is-enabled containerd
2、啟用 Containerd 服務的自啟動
systemctl enable containerd
3、手動啟動 Containerd 服務
systemctl start containerd
4、查看 Containerd 服務的當前狀態(tài)
systemctl status containerd
文章來源地址http://www.zghlxwxcb.cn/news/detail-851052.html
??The End??點點關注,收藏不迷路??
|
到了這里,關于安裝 k8s集群的問題:默認容器運行時從 Docker 改為 Containerd的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!