Rancher集群namespace检查时无法与API server通信如何排查
Cluster health check failed: Failed to communicate with API server during namespace check: Get "https://10.100.0.1:443/api/v1/namespaces/kube-system?timeout=45s": context deadline exceeded

排查步骤
网络层排查
- 在Rancher管理节点执行
curl -w "%{http_code}\n" "https://10.100.0.1:443/api/v1/namespaces/kube-system" --connect-timeout 10反复测试连通性,确认是否存在偶发丢包、延迟过高的情况 - 检查Rancher节点与K8s控制节点之间的防火墙、安全组规则,是否存在基于流量阈值的临时拦截策略,同时排查链路中是否存在负载均衡会话过期、健康检查异常的问题
- 查看集群网络插件Pod状态,执行
kubectl get pods -n kube-system | grep -E 'calico|flannel|cni',确认是否存在偶发重启、异常退出的记录,网络插件不稳定是偶发连通性问题的常见原因
API Server侧排查
- 查看kube-apiserver的资源占用情况,执行
kubectl top pods -n kube-system | grep kube-apiserver,确认是否存在CPU、内存突增导致请求堆积的情况 - 拉取apiserver对应时段的日志,执行
kubectl logs -n kube-system <kube-apiserver实例名> --since=24h | grep -E 'timeout|error|EOF',排查是否有请求限流、服务内部错误的记录 - 确认apiserver副本数是否符合集群规模要求,单副本apiserver在峰值请求时极易出现响应超时的问题
Rancher侧排查
- 检查Rancher服务的运行状态,Docker部署的Rancher执行
docker logs -f rancher --since=24h | grep error,K8s部署的Rancher执行kubectl logs -n cattle-system -l app=rancher --since=24h | grep error,确认是否有服务异常、资源不足的记录 - 可适当调高Rancher集群健康检查的超时阈值,当前配置为45s,若集群跨可用区部署、本身网络延迟较高,可调整为60s以上降低误判概率
基础资源排查
- 检查K8s控制节点的系统资源监控,确认对应时间点是否存在CPU、内存、磁盘IO使用率突增的情况,资源抢占会导致apiserver无法及时响应请求
- 执行
dmesg -T查看控制节点内核日志,确认是否存在OOM杀进程、网络栈报错、硬件故障相关的异常记录
内容的提问来源于stack exchange,提问作者freshman
相关产品推荐
相关产品推荐

