K8S初始化主节点报错 Status from runtime service failed

[root@master ~]# kubeadm init \
>   --apiserver-advertise-address=192.168.231.130 \
>   --image-repository registry.aliyuncs.com/google_containers \
>   --kubernetes-version v1.25.4 \
>   --service-cidr=10.96.0.0/12 \
>   --pod-network-cidr=10.244.0.0/16
[init] Using Kubernetes version: v1.25.4
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR CRI]: container runtime is not running: output: E1120 13:46:00.846921    8699 remote_runtime.go:948] "Status from runtime service failed" err="rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService"
time="2022-11-20T13:46:00+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
 

[root@master ~]# kubeadm init \
>   --apiserver-advertise-address=192.168.231.130 \
>   --image-repository registry.aliyuncs.com/google_containers \
>   --kubernetes-version v1.25.4 \
>   --service-cidr=10.96.0.0/12 \
>   --pod-network-cidr=10.244.0.0/16
[init] Using Kubernetes version: v1.25.4
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR CRI]: container runtime is not running: output: E1120 13:46:00.846921    8699 remote_runtime.go:948] "Status from runtime service failed" err="rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService"
time="2022-11-20T13:46:00+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

解决办法

[root@master ~]# mv /etc/containerd/config.toml /tmp/
[root@master ~]# systemctl restart containerd

<think>嗯,用户遇到了在Ubuntu上用kubeadm初始化Kubernetes集群时,因为重复初始化导致的报错问题。首先,我需要确认kubeadm init的流程以及重复初始化为什么会引发错误。用户可能之前已经运行过kubeadm init,但没有正确清理,导致新的初始化失败。 接下来,我应该回忆kubeadm init的工作原理。执行这个命令时,kubeadm会生成证书、etcd配置、kubeconfig文件等。如果之前的数据残留,新初始化会检测到现有配置从而报错。用户需要彻底清理旧数据,包括删除配置文件、证书、etcd数据等。 然后,考虑用户可能采取的解决步骤。首先,应该建议用户执行kubeadm reset命令,这会清理大部分节点上的数据。但可能还不够彻底,需要手动删除相关目录,比如/etc/kubernetes/和~/.kube/,以及检查是否有残留的etcd数据或CNI配置。 另外,用户可能没有意识到每次初始化会生成新的证书和令牌,所以需要确保所有旧的配置都被移除。如果用户之前初始化失败但未清理,再次尝试就会遇到问题。此外,如果用户是在同一个节点上重新安装,可能还需要检查Docker或容器运行时是否有残留的容器,这些也可能导致冲突。 还有可能涉及到的网络插件问题,比如之前安装的CNI插件没有正确卸载,导致新的初始化出现问题。需要建议用户检查CNI配置,并清理相关文件。 另外,用户可能对kubeadm的工作流程不太熟悉,可能需要指导他们如何正确执行每个步骤,包括初始化前的准备工作,如关闭swap、检查网络配置、确保各组件版本兼容等。这些因素也可能间接导致初始化失败,但根据日志提示,当前问题主要是重复初始化,所以应优先解决残留文件的问题。 最后,需要提醒用户在初始化成功后保存join命令,并指导如何重新获取,因为kubeadm reset会清除之前的join信息。同时,建议用户备份重要配置文件,避免数据丢失。</think>在Ubuntu上使用`kubeadm init`初始化Kubernetes集群时遇到重复初始化报错,通常是由于未彻底清理前次配置导致的。以下是系统化的解决步骤: --- ### **1. 错误原因分析** - **核心问题**:`kubeadm`检测到系统中残留的旧配置文件(如证书、etcd数据、kubeconfig等)。 - **典型报错**: ```bash [ERROR Port-10250]: Port 10250 is in use [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists ``` --- ### **2. 彻底清理残留配置** #### **步骤 1:重置kubeadm环境** ```bash sudo kubeadm reset --force ``` - 此命令会删除: - `/etc/kubernetes/` 目录下的配置文件 - 已创建的Pod和网络配置 #### **步骤 2:手动清理残留文件** ```bash sudo rm -rf /etc/cni/net.d/* # 清理CNI网络配置 sudo rm -rf $HOME/.kube/config # 删除用户kubeconfig sudo rm -rf /var/lib/etcd/* # 清理etcd数据(关键!) sudo iptables -F && sudo iptables -t nat -F # 重置iptables规则 ``` #### **步骤 3:重启容器运行时** ```bash sudo systemctl restart containerd # 如果使用containerd # 或 sudo systemctl restart docker # 如果使用Docker ``` --- ### **3. 重新初始化集群** ```bash sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ # Flannel网络插件所需参数 --apiserver-advertise-address=<YOUR_IP> # 替换为实际IP ``` --- ### **4. 初始化后操作** - **保存join命令**: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` - **安装网络插件(如Flannel)**: ```bash kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml ``` --- ### **5. 常见问题补充** - **证书过期问题**:若因证书过期导致失败,使用 `kubeadm certs renew all` 更新证书。 - **端口占用检查**: ```bash sudo lsof -i:6443 # 检查API Server端口 sudo lsof -i:10250 # 检查kubelet端口 ``` - **日志排查**: ```bash journalctl -xeu kubelet # 查看kubelet日志 ``` --- ### **6. 预防措施** 1. 每次初始化前**必须执行`kubeadm reset`**。 2. 使用脚本自动化清理: ```bash #!/bin/bash kubeadm reset --force rm -rf /etc/kubernetes/ $HOME/.kube/ systemctl restart containerd ``` 通过以上步骤可解决99%的重复初始化问题。如仍报错,需结合具体日志分析网络或存储配置冲突。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值