You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubeadm init失败:kubelet-config.yaml文件缺失故障求助

解决CentOS 8下kubeadm init失败(kubelet-config.yaml缺失)问题

核心问题定位

kubelet启动失败是因为/var/lib/kubelet/kubelet-config.yaml文件缺失,导致kubeadm初始化时无法连接kubelet的10248健康检查端口。

具体解决步骤

1. 彻底清理Kubernetes残留文件

停止kubelet服务并清理相关目录、网络规则:

systemctl stop kubelet
rm -rf /var/lib/kubelet/ /etc/kubernetes/ /var/lib/etcd/
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
ipvsadm -C  # 如果使用了ipvs作为kube-proxy模式,执行此命令

2. 确保容器运行时与kubelet的cgroup驱动一致

以Docker为例,修改配置使其使用systemd驱动:
创建或编辑/etc/docker/daemon.json:

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重启Docker并设置开机自启:

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

3. 生成kubelet配置文件并启动kubelet

先生成kubeadm初始化配置模板:

kubeadm config print init-defaults > kubeadm-config.yaml

按需修改kubeadm-config.yaml(比如添加podSubnet字段指定子网,例如podSubnet: 192.168.0.0/16),然后执行以下命令生成kubelet-config.yaml并启动kubelet:

kubeadm config images pull --config kubeadm-config.yaml
kubeadm init phase kubelet-start --config kubeadm-config.yaml

验证kubelet状态:

systemctl status kubelet

确保kubelet处于active (running)状态。

4. 重新执行kubeadm初始化

使用自定义配置文件执行初始化:

kubeadm init --config kubeadm-config.yaml

如果需要忽略swap(CentOS 8默认开启swap,kubelet要求关闭),可以添加--ignore-preflight-errors=Swap参数。

额外注意事项

  • 关闭SELINUX:
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  • 关闭firewalld(测试环境可临时关闭,生产环境建议开放必要端口):
systemctl stop firewalld
systemctl disable firewalld

内容的提问来源于stack exchange,提问作者noob_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:42:48