故障现象

[root@jenkins k8s_yaml]# kubectl get pods -n aqsc
Error from server: etcdserver: request timed out
  • 1.
  • 2.

Kubernetes 集群执行 kubectl get pods 时返回 etcdserver: request timed out 错误,表明 APIServer 无法与 etcd 集群正常通信。此问题通常由 etcd 集群故障、网络问题或资源瓶颈引发。以下是系统化的排查与解决方案:

一、排查

1.首先开始检查etcd集群是否异常
[root@jenkins k8s_yaml]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
scheduler            Healthy   ok        
controller-manager   Healthy   ok        
etcd-0               Healthy   ok
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
2.切换etcd服务器
# 以表格形式安全地查询指定 etcd 集群的成员信息

ETCDCTL_API=3 etcdctl   --endpoints=https://xx.xx.xx.xx:2379,https://xx.xx.xx.xx:2379,https://xx.xx.xx.xx:2379   --cacert=/etc/kubernetes/ssl/ca.pem   --cert=/etc/kubernetes/ssl/etcd.pem   --key=/etc/kubernetes/ssl/etcd-key.pem   member list --write-out=table

ETCDCTL_API=3
# 指定 API 版本
--endpoints
# 集群访问地址 指定三个 etcd 节点的客户端通信地址(端口 2379),支持高可用连接
--cacert
# TLS 根证书
--cert--key
# 客户端证书与私钥
member list
#查询 etcd 集群的成员列表,包括每个成员的 ID、状态、名称、网络地址等关键信息
--write-out=table
#指定输出格式为表格
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.