尝试加入Kubernetes集群遇未授权,重置节点后kubelet启动失败
解决kubeadm reset后kubelet启动失败的问题
我来一步步帮你排查并解决这个问题,你遇到的几个报错都是kubelet启动时的常见卡点,咱们逐个击破:
1. 修复CNI网络配置缺失问题
报错cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d说明节点上没有有效的CNI网络配置文件,这是kubelet正常启动的必要条件:
- 如果你用的是flannel这类常用CNI插件,先登录master节点确认
/etc/cni/net.d/下的配置文件(比如10-flannel.conflist)是否存在,然后把这个文件复制到slave节点的同目录下 - 如果没有现成的配置文件,重新安装CNI插件(注意要选和K8s v1.10.2兼容的版本,这里用v0.7.5):
# 下载CNI插件包 wget https://github.com/containernetworking/plugins/releases/download/v0.7.5/cni-plugins-amd64-v0.7.5.tgz # 创建插件目录并解压 mkdir -p /opt/cni/bin tar -zxvf cni-plugins-amd64-v0.7.5.tgz -C /opt/cni/bin/ # 若使用flannel,确保集群中已部署对应的DaemonSet,你可以参考集群初始化时指定的pod-network-cidr手动创建适配的yaml文件部署
2. 安装缺失的conntrack二进制文件
报错提示“未安装conntrack二进制文件,这可能导致网络连接清理失败”,这是K8s网络组件依赖的核心工具,直接安装即可:
- 如果你用的是Debian/Ubuntu系统:
apt-get update && apt-get install -y conntrack - 如果你用的是CentOS/RHEL系统:
yum install -y conntrack-tools
3. 处理“无云提供商spec”的警告
这个plugins.go:89] No cloud provider spec的警告一般不会导致kubelet启动失败,只是提示你没有配置云平台提供商(比如AWS、GCP等)。如果你的集群是在物理机或虚拟机上运行,完全不需要额外处理;如果后续需要对接云平台,再修改/var/lib/kubelet/config.yaml添加对应配置即可,比如:
cloudProvider: "none" # 或者填写你的云厂商标识,比如"aws"
最后验证操作
完成以上步骤后,重启kubelet服务并检查状态:
systemctl restart kubelet systemctl status kubelet
如果还有异常,可以查看kubelet的实时日志进一步排查:
journalctl -u kubelet -f
内容的提问来源于stack exchange,提问作者The_Lost_Avatar
相关产品推荐
相关产品推荐

