本地虚拟机安装Kubernetes执行kubeadm init时遇CRI错误
Kubernetes kubeadm init 报错:CRI v1 runtime API 未实现
问题
执行kubeadm初始化主节点命令时触发预检查失败:
sudo kubeadm init --apiserver-advertise-address 192.xxx.xxx.11 --control-plane-endpoint 192.xxx.xxx.11 --v=5
核心错误:
[ERROR CRI]: container runtime is not running: output: time="2023-08-17T15:09:08Z" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
环境信息
- Docker版本:
Docker version 24.0.5, build ced0996 - kubeadm版本:
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.4", GitCommit:"fa3d7990104d7c1f16943a67f11b154b71f6a132", GitTreeState:"clean", BuildDate:"2023-07-19T12:19:40Z", GoVersion:"go1.20.6", Compiler:"gc", Platform:"linux/amd64"}
解决方案
该错误是因为Docker内置的containerd未启用CRI v1 API,或kubelet与containerd配置不匹配,按以下步骤修复:
配置containerd的CRI支持
生成默认配置文件:containerd config default > /etc/containerd/config.toml编辑
/etc/containerd/config.toml文件,完成以下配置:- 找到
[plugins."io.containerd.grpc.v1.cri"]段,确保启用CRI相关配置 - 在
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下添加:SystemdCgroup = true - 确认
sandbox_image设置为对应K8s版本的pause镜像,K8s 1.27版本对应:sandbox_image = "registry.k8s.io/pause:3.9"
- 找到
重启相关服务
systemctl restart containerd systemctl restart kubelet验证CRI连接状态
执行命令确认CRI服务正常:crictl info返回正常JSON信息则说明配置生效。
重新执行初始化命令
再次运行kubeadm init命令即可:sudo kubeadm init --apiserver-advertise-address 192.xxx.xxx.11 --control-plane-endpoint 192.xxx.xxx.11 --v=5
内容的提问来源于stack exchange,提问作者user63898
相关产品推荐
相关产品推荐

