kubeadm init 报错 ”unknown service runtime.v1alpha2.RuntimeService”
在kubernetes master节点初始化的时候报错
[root@k8s-master opt]# kubeadm init --kubernetes-version=1.24.0 --apiserver-advertise-address=10.0.0.215 --image-repository 10.0.0.200:80/google_containers --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
[init] Using Kubernetes version: v1.24.0
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR CRI]: container runtime is not running: output: time="2022-05-18T11:36:02+08:00" level=fatal msg="getting status of runtime: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService"
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
原因: https://github.com/containerd/containerd/issues/4581#issuecomment-698741693
很可能是因为您的 contaienrd 默认配置文件有问题,通常会有一个 disabled_plugins 里面默认配置了 cri。配置文件在 /etc/containerd/config.toml。手动删掉cri;然后重启containerd 即可。
disabled_plugins = ["cri"]
解决方法
1. 删除默认配置文件
rm /etc/containerd/config.toml
systemctl restart containerd
2. 修改默认配置文件
vi /etc/containerd/config.toml
# 删除 disabled plugin 中的 cri 即可
# disabled_plugins = ["cri"]
# --> disabled_plugins = []
disabled_plugins = []
# 同时建议添加 防止 cgroup 问题
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
# 同时建议添加 pause 镜像配置,国内访问不到 默认的地址
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "k8s.m.daocloud.io/pause:3.7"
systemctl daemon-reload
systemctl restart containerd
这个文章说的也对,但不是全对,没说明原因:https://blog.csdn.net/weixin_40668374/article/details/124849090 (前面完全一样的报错,没有重新写,参考了该文章,如果需要去看下原文)
建议尽量参考官方文档 Container Runtimes | Kubernetes