首页/云/Kubernetes 速查/kubectl 连不上集群先查什么
集群运维与排障54 条

kubectl 连不上集群先查什么

报 connection refused、i/o timeout 或证书错误时,先区分是本地 kubeconfig/证书问题还是控制面不可用,两者的检查点不同。

Kubernetes 速查云更新于 2026-10-13

连不上先分类

kubectl 连不上集群的报错分三类,指向完全不同的方向:connection refused 与 i/o timeout 属于网络与控制面可达性问题;x509 与 certificate 类错误属于客户端证书过期或 CA 变更;Unauthorized 与 Forbidden 属于认证与授权层,请求其实已经到达服务端。分类之后再排查,比一上来就删除重建 kubeconfig 有效得多,也避免丢掉现场。

报错分类对照

报错特征指向的层下一步
connection refusedapiserver 未监听或端口被拦确认控制面组件状态与到 6443 的连通性
i/o timeout网络路径或负载均衡问题检查路由、安全组与入口地址是否正确
x509: certificate has expired客户端证书过期或 CA 变更重新签发客户端凭证,先备份原文件
Unauthorized (401)认证凭证无效确认 context 使用的身份与证书、令牌有效性
Forbidden (403)认证通过但无权限这是授权问题,用权限自检命令核对 RBAC
no such host配置文件里的服务地址写错核对 context 中的 server 字段与 DNS 解析

典型使用场景

  • 换机器办公:本地 kubeconfig 未同步或路径变更导致找不到集群
  • 证书到期:客户端证书有有效期,过期后所有命令同时失败
  • 控制面维护:升级或重启期间连接被拒,需区分短暂抖动与真实故障
  • 多集群切换:context 指到错误集群,表现为「资源都不见了」
  • VPN 或跳板变化:网络路径改变后连接超时,需要先确认网络层

按顺序分辨

按顺序分辨
kubectl config current-context            # 先确认在操作哪个集群与身份
kubectl config view --minify              # 看 server 地址、证书路径与用户
kubectl cluster-info                      # 需要能连上控制面才有输出
curl -k https://10.0.0.10:6443/healthz    # 仅排查用途,-k 跳过证书校验,验证可达性
openssl x509 -in ~/.kube/client.crt -noout -dates   # 查看客户端证书有效期
kubectl get nodes -v=8 2>&1 | grep -i -E 'status|error'   # 看请求层细节

健康端点读法

端点含义异常含义
/healthz控制面整体健康非 ok 说明组件异常
/livez进程存活失败通常意味着组件需要重启
/readyz可以接受请求失败说明请求会被拒绝或排队
/readyz?verbose逐项列出检查结果直接给出哪一个组件不健康
报错是 401 还是 403 决定方向:401 表示身份没被识别,问题在证书或令牌;403 表示身份已被识别但没有权限,问题在 RBAC。把两者混在一起排查会浪费大量时间。
系统时间偏差过大会造成 TLS 校验与证书有效期判断异常,报错却指向证书本身。在虚拟化与容器环境里,时间同步是需要先排除的基础项。

易错点

  • 直接删除重建 ~/.kube/config:原文件里包含集群地址与客户端凭证,删掉可能失去恢复线索,先备份再动手
  • 把 401 与 403 当成同一类问题:一个指向凭证,一个指向权限,排查路径完全不同
  • 不核对 current-context:多集群环境下操作了错误的集群,看起来像资源全部消失
  • 忽略系统时间:时钟偏差导致证书校验失败,反复重签证书也解决不了

数据来源与参考

  • Kubernetes 官方文档 · 访问集群与 healthz 端点
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌