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

Kubectl get nodes间歇性失效,6443端口连接被拒求助

Kubernetes集群间歇性连接失败及组件故障排查方案

环境信息

  • 集群架构:1台control-plane(IP:192.169.0.10)+2台worker节点
  • 已完成操作:kubeadm init初始化控制平面、kubeadm join添加节点、kubeconfig配置(执行以下命令)
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 故障现象:
    • 初期kubectl get nodes正常,后续间歇性提示192.169.0.10:6443连接被拒
    • kube-proxy处于CrashLoopBackOff状态
    • Calico网络插件存在x509证书验证错误
  • 已排除项:swap已关闭、所有机器及路由器防火墙已禁用

一、排查Calico x509证书验证错误

  • 对比Calico Pod与集群CA证书一致性:
    执行命令查看Calico Pod内挂载的CA证书,再与control-plane节点的集群CA对比:

    # 查看Calico Pod内的CA证书
    kubectl exec -n kube-system <calico-pod-name> -- cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | openssl x509 -text -noout
    # 查看control-plane节点的集群CA证书
    cat /etc/kubernetes/pki/ca.crt | openssl x509 -text -noout
    

    若不一致,删除Calico Pod触发重新挂载,或检查serviceaccount挂载机制是否异常。

  • 检查Calico配置的kubeconfig正确性:
    查看Calico的ConfigMap配置,确认kubeconfig中的server地址和CA证书内容:

    kubectl get configmap calico-config -n kube-system -o yaml
    

    确保kubeconfig字段内的server为https://192.169.0.10:6443,且CA证书内容与/etc/kubernetes/pki/ca.crt完全匹配。

  • 验证Calico ServiceAccount权限:
    确认calico-node ServiceAccount已绑定正确的ClusterRole:

    kubectl get clusterrolebinding calico-node -o yaml
    

    若权限缺失,重新创建ClusterRoleBinding:

    kubectl create clusterrolebinding calico-node --clusterrole=calico-node --serviceaccount=kube-system:calico-node
    

二、排查kube-proxy CrashLoopBackOff问题

  • 获取kube-proxy崩溃日志:
    查看崩溃前的日志定位具体原因:

    kubectl logs -n kube-system <kube-proxy-pod-name> --previous
    
  • 检查kube-proxy配置文件:
    验证ConfigMap中的集群CIDR、API Server地址等参数是否正确:

    kubectl get configmap kube-proxy -n kube-system -o yaml
    

    确保clusterCIDR与kubeadm init时指定的网段一致,server指向https://192.169.0.10:6443。

  • 清理异常iptables规则:
    若kube-proxy生成的iptables规则冲突,删除Pod让其重新生成:

    kubectl delete pod -n kube-system -l k8s-app=kube-proxy
    

    同时检查节点内核参数是否满足要求:

    sysctl net.ipv4.ip_forward net.bridge.bridge-nf-call-iptables
    

    若参数值为0,临时开启并写入/etc/sysctl.conf永久生效:

    sysctl -w net.ipv4.ip_forward=1
    sysctl -w net.bridge.bridge-nf-call-iptables=1
    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
    

三、排查6443端口间歇性连接拒绝问题

  • 监控kube-apiserver状态:
    查看kube-apiserver日志是否存在重启或异常报错:

    kubectl logs -n kube-system <kube-apiserver-pod-name>
    

    同时检查6443端口是否持续监听:

    ss -tulpn | grep 6443
    

    若apiserver频繁重启,检查其配置文件(/etc/kubernetes/manifests/kube-apiserver.yaml)中的参数是否正确,尤其是证书挂载路径。

  • 验证集群DNS解析:
    在worker节点测试集群服务域名解析:

    nslookup kubernetes.default.svc.cluster.local
    

    若解析失败,检查CoreDNS Pod状态,修复DNS服务故障。

  • 测试节点间网络稳定性:
    在worker节点持续测试6443端口连通性,定位是否存在网络波动:

    while true; do nc -zv 192.169.0.10 6443; sleep 5; done
    

    若出现间歇性不通,排查节点网卡、交换机硬件状态,或检查是否存在网络拥塞。

  • 检查kube-apiserver证书有效性:
    验证apiserver证书的有效期和SAN字段:

    # 查看证书有效期
    openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep Not
    # 查看证书SAN字段
    openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep -E "DNS|IP Address"
    

    确保证书未过期,且SAN字段包含control-plane的IP(192.169.0.10)、主机名等必要信息。


内容的提问来源于stack exchange,提问作者Lamini-Eng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:44:52