在 openEuler 24.03 LTS-SP1 安装 KubeSphere + K8s 集群时 kubelet 默认连接 127.0.0.1 问题分析与解决

目录

在 openEuler 24.03 LTS-SP1 安装 KubeSphere + K8s 集群时 kubelet 默认连接 127.0.0.1 问题分析与解决

❗ 问题现象

问题根因分析

✅ 解决方案

方案一:修改每个节点的 kubelet 配置(推荐)

方案二:预防性修改安装模板(集群安装前)

总结


在 openEuler 24.03 LTS-SP1 安装 KubeSphere + K8s 集群时 kubelet 默认连接 127.0.0.1 问题分析与解决

在多控制节点部署 KubeSphere + Kubernetes 集群时,很多用户会遇到一个典型问题:非主控节点 kubelet 默认尝试连接本地 127.0.0.1:6443,导致节点 NotReady,API Server 无法通信。

❗ 问题现象

通过 journalctl -u kubelet -f 查看日志,worker 节点会不断报错:

E0710 17:26:45.613626 kubelet Unable to write event: dial tcp 127.0.0.1:6443: connect: connection refused
W0710 17:26:47.608335 reflector failed to list *v1.CSIDriver: Get "https://127.0.0.1:6443/…": connect: connection refused

另外:

ping lb.kubesphere.local
PING lb.kubesphere.local (127.0.0.1) ...

这说明 kubelet.confhosts 配置指向了错误的 API Server 地址 127.0.0.1,而非真正的集群 VIP 或负载均衡器。


问题根因分析

Kubelet 在启动时会读取 /etc/kubernetes/kubelet.conf 中的 server 字段,该字段默认为:

server: https://127.0.0.1:6443

这在 master 节点可能暂时可用,但在 worker 节点会导致 kubelet 无法连接 API Server。

同时,在安装配置中设置了:

controlPlaneEndpoint:
  domain: lb.kubesphere.local
  address: ""
  port: 6443

却没有为 lb.kubesphere.local 正确配置 DNS 或 /etc/hosts,因此解析失败,默认指向 127.0.0.1


✅ 解决方案

方案一:修改每个节点的 kubelet 配置(推荐)
  1. 手动修改 /etc/kubernetes/kubelet.conf 文件中 server 地址:

    server: https://lb.kubesphere.local:6443
    

    或使用真实 VIP,例如:

    server: https://10.130.135.145:6443
    
  2. 确保 lb.kubesphere.local 能被所有节点正确解析(添加 hosts):

    echo "10.130.135.145 lb.kubesphere.local" >> /etc/hosts
    
  3. 重启 kubelet 服务:

    systemctl restart kubelet
    
  4. 验证节点状态是否变为 Ready:

    kubectl get nodes
    

方案二:预防性修改安装模板(集群安装前)

如果你是通过 kk 工具安装的,可在安装前修改 config-sample.yaml 中:

controlPlaneEndpoint:
  domain: lb.kubesphere.local
  address: 10.130.135.145

确保安装时生成的 kubelet.conf 就是正确地址,避免事后再修补。


总结

在多控制节点架构中,确保 kubelet 连接的 API Server 地址是统一、可达、负载均衡的至关重要。默认 127.0.0.1 会导致所有非 master-0 节点 kubelet 无法注册到 API Server。

如果你也遇到了节点长时间 NotReady、API Server 拒绝连接等现象,请第一时间检查:

  • /etc/kubernetes/kubelet.confserver 字段

  • /etc/hosts 中 lb.kubesphere.local 的解析

  • kubelet 启动后的错误日志

你可能感兴趣的:(各种问题,kubernetes,kubelet,容器)