一、安装 containerd
kubernetes 1.24 版之后,就正式移除 dockershim 了,因此,这里第一步就是安装另一个容器运行时:containerd
,可以参考前一篇文章487.【kubernetes】二进制方式安装 containerd。
二、基于过往教程调整
去年我写过一个系列的二进制文件方式安装 kubernetes 集群的文章,可以参考以往的文章,链接见文章末。
这次只说调整的地方:
- 原先安装的 docker 改成现在的 containerd.
- 原先安装 kubelet 时写的配置文件中,去除
--network-plugin
参数,加上--container-runtime
和--container-runtime-endpoint
参数,详细操作接着往下看。 - 原先添加cni 插件时拉取镜像和给镜像打标签的两条命令改一下:改成:
nerdctl -n k8s.io pull registry.aliyuncs.com/google_containers/pause:3.6
和nerdctl -n k8s.io tag registry.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6
-
[2022-11-25更新] 原先配置 kubelet 的systemd 服务时用的
/usr/lib/systemd/system/kubelet.service
里的After=docker.service
改成containerd.service
三、验证
![](https://img.haomeiwen.com/i26608654/217996c566f420aa.png)
可以看到,安装的 kubernetes版本是 v1.25.4
,节点数是 3
,还成功运行了一个 mysql pod。
附加1: 原先教程的 kubelet 报错
报错信息:
Nov 19 08:35:12 k8s_master kubelet[3041]: E1118 16:35:12.786441 3041 run.go:74] "command failed" err="failed to parse kubelet flag: unknown flag: --network-plugin"
Nov 19 08:35:12 k8s_master systemd[1]: kubelet.service: main process exited, code=exited, status=1/FAILURE
Nov 19 08:35:12 k8s_master systemd[1]: Unit kubelet.service entered failed state.
Nov 19 08:35:12 k8s_master systemd[1]: kubelet.service failed.
![](https://img.haomeiwen.com/i26608654/f4b48d287d5e687b.png)
解决步骤
修改 /etc/kubernetes/kubelet
配置文件,将里面的 --network-plugin=cni \
一行删掉,增加两行 --container-runtime=remote \
和 --container-runtime-endpoint=unix:///run/containerd/containerd.sock \
下面是我用的最新的配置文件:
KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig \
--config=/etc/kubernetes/kubelet.config \
--hostname-override=192.168.0.200 \
--container-runtime=remote \
--container-runtime-endpoint=unix:///run/containerd/containerd.sock \
--v=0"
相关阅读(旧版,k8s version: 1.23.1):
184. 【kubernetes】二进制文件方式安装 Kubernetes 集群(一)
185. 【docker】二进制方式安装 Docker
186. 【kubernetes】二进制文件方式安装 Kubernetes 集群(二)
187. 【kubernetes】二进制文件方式安装 Kubernetes 集群(三)
220. 【kubernetes】二进制文件方式安装 Kubernetes 集群(四)
网友评论