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

K8s Master节点初始化失败求助:连接拒绝与Kubelet异常

解决Kubeadm初始化Master节点时kubelet启动失败及apiserver连接拒绝问题

问题根源分析

从日志可见两个核心问题:

  1. kubelet启动失败,报错unable to load bootstrap kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory——该文件由kubeadm init生成,但kubelet提前启动时无法找到它,同时你的10-kubeadm.conf存在配置语法错误和重复参数问题。
  2. apiserver 6443端口连接拒绝——依赖kubelet的核心组件(如apiserver、etcd)未正常启动,根源是kubelet异常。

解决步骤

1. 清理初始化残留

彻底清理未完成的初始化环境,避免残留文件干扰:

kubeadm reset -f
rm -rf /etc/kubernetes/
rm -rf /var/lib/kubelet/
systemctl stop kubelet containerd

2. 修正kubelet配置文件

编辑/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,修正以下问题:

  • 取消注释KUBELET_CONFIG_ARGS行,移除重复的容器运行时参数(避免和KUBELET_CGROUP_ARGS冲突)
  • 修复KUBELET_KUBECONFIG_ARGS行的语法错误(原行末尾直接拼接注释,导致环境变量解析失败)

修正后的完整配置:

# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

3. 重启相关服务并重载配置

systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd
systemctl enable kubelet --now

4. 重新执行kubeadm初始化

kubeadm init --apiserver-advertise-address 172.21.103.8 --pod-network-cidr 10.244.0.0/16 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --v=9

5. 配置kubectl客户端

初始化成功后,执行以下命令配置本地kubectl:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

验证检查

  • 确认containerd的cgroup驱动设置:
    containerd config dump | grep SystemdCgroup
    
    输出应为SystemdCgroup = true
  • 检查kubelet状态:
    systemctl status kubelet
    
    确保服务处于active(running)状态
  • 检查核心组件容器运行状态:
    crictl ps
    
    确认kube-apiserver、kube-controller-manager、kube-scheduler、etcd容器正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:01:16