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

如何重新生成Kubernetes集群kubeconfig及排查连接拒绝故障

问题排查与解决:Kubectl连接API Server失败(Connection Refused)

一、区分API Server故障与kubeconfig问题

1. 检查API Server运行状态(控制节点操作)

  • 查看kube-apiserver容器/服务状态:
    # 用容器 runtime 检查
    sudo crictl ps | grep kube-apiserver
    # 用systemd检查(kubeadm部署场景)
    sudo systemctl status kube-apiserver
    
    若状态非running,查看日志定位崩溃原因:
    sudo journalctl -u kube-apiserver -f
    
  • 验证6443端口监听情况:
    sudo ss -tulpn | grep :6443
    
    无输出则说明API Server未启动或端口未开放。
  • 本地测试API Server连通性:
    curl -k https://localhost:6443/api
    
    返回JSON格式API信息则本地服务正常,问题出在网络或kubeconfig;仍返回connection refused则确定为API Server故障。

2. 检查kubeconfig有效性(任意节点操作)

  • 查看当前kubeconfig配置:
    kubectl config view
    
    重点核对clusters中的服务器地址是否正确,users中的证书/令牌是否有效。
  • 检查客户端证书有效期:
    # 从kubeconfig提取证书到临时文件
    grep client-certificate-data ~/.kube/config | awk '{print $2}' | base64 -d > client.crt
    # 查看证书有效期
    openssl x509 -in client.crt -text -noout | grep -A2 Validity
    
  • 验证令牌有效性(控制节点操作):
    # 列出所有secret
    kubectl get secrets
    # 查看目标令牌内容
    kubectl describe secret default-token-xxxx | grep token:
    # 用令牌测试连接
    curl -k https://foo.bar.com:6443/api --header "Authorization: Bearer 替换为你的令牌内容"
    
    返回API信息则令牌有效,问题大概率在网络或kubeconfig地址配置。

二、重新生成kubeconfig(控制节点操作)

1. kubeadm部署场景快速生成

# 重新生成admin.conf
sudo kubeadm init phase kubeconfig admin --kubeconfig-dir /etc/kubernetes
# 复制到用户目录并设置权限
mkdir -p ~/.kube
sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config

2. 手动生成自定义kubeconfig

  • 配置集群信息:
    kubectl config set-cluster kubernetes \
      --server=https://foo.bar.com:6443 \
      --certificate-authority=/etc/kubernetes/pki/ca.crt \
      --embed-certs=true
    
  • 配置用户认证(证书方式):
    kubectl config set-credentials admin \
      --client-certificate=/etc/kubernetes/pki/admin.crt \
      --client-key=/etc/kubernetes/pki/admin.key \
      --embed-certs=true
    
  • 配置上下文并切换:
    kubectl config set-context kubernetes \
      --cluster=kubernetes \
      --user=admin
    kubectl config use-context kubernetes
    

三、额外排查点

  • 网络连通性:用telnet foo.bar.com 6443或nc -zv foo.bar.com 6443测试客户端到控制节点6443端口的连通性。
  • 防火墙/安全组:确认控制节点防火墙允许6443端口入站流量,客户端防火墙允许出站流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:25:12