概述
本文主要介绍关于如何排查ACK集群出现的问题。
详细信息
检查集群节点
- 首先要做的是查看集群中的节点状态,确认所有的Node节点都存在并且状态是Ready,命令如下。
kubectl get nodes
系统显示类似如下。 - 对于异常的节点,执行以下命令,查看节点上的详细信息,以及节点上的事件。
kubectl describe node [$NODE_NAME]
说明:
- [$NODE_NAME]为您的节点名称。
- kubectl输出的信息解析,请参见K8s官方文档。
检查集群组件
此时,如果还不能确定问题在哪,则需要您进一步到Master节点上查询集群组件的日志:
- 执行以下命令,查看kube-system命名空间下所有的组件。
kubectl get pods -n kube-system
输出结果如下所示,其中,以kube-开头的Pod都是Kubernetes集群的系统级组件,coredns-开头的是DNS插件。 - 若组件状态异常,执行以下命令,查看其日志信息,定位并解决问题。
kubectl logs -f [$Component_Name] -n kube-system
说明:[$Component_Name]为异常组件名称。
检查kubelet组件
- 执行以下命令,查看kubelet的运行状态。
systemctl status kubelet
- 如果您的kubelet运行状态不是active (running),那么您需要执行以下命令,进一步查看kubelet的日志,定位并解决问题。
journalctl -u kubelet
集群常见问题
下表罗列了一部分ACK集群常见的故障原因以及处理方法:
故障场景 | 处理方法 |
---|---|
API Server组件停止或Master组件停止:
|
ACK组件本身有一定高可用的功能,建议您查看组件本身是否有异常。例如,ACK使用的API Server组件是SLB,您可以排查您SLB停止的原因。 |
API Server后端数据丢失:
|
若您创建了快照,在出现问题时,可以通过快照恢复正常的数据。若没有创建快照,建议问题解决后参见以下方法预防该问题: |
个别节点关机: 该节点上的所有Pod不再运行。 |
尝试使用Deployment、StatefulSet、DaemonSet等控制器创建Pod,而不是直接创建Pod,避免Pod不能调度到其他正常节点。 |
kubelet组件故障:
|
您可以参考检查kubelet组件步骤定位解决问题:
|
人为配置或其他问题。 |
若您创建了快照,在出现问题时,可以通过快照恢复正常的数据。若没有创建快照,建议问题解决后,周期性的为kubelet软件所使用的数据卷创建快照,详情请参见使用云盘存储快照。 |
若问题还是没有解决,请参见如何收集Kubernetes集群的诊断信息,尝试通过诊断信息定位解决问题,或者提交工单,将诊断信息提交给阿里云技术支持处理。
相关文档
本文的排查方案参考了以下文档:
适用于
- 容器服务Kubernetes版