Kubernetes 故障排查通常涉及多个组件,包括 kubeadm、kubelet、kubectl、API Server 等。以下是一些建议,帮助你对 kubeadm 引导的 Kubernetes 集群进行故障排查:

1. 查看集群状态

使用以下命令检查集群的整体状态:
kubectl get nodes
kubectl get pods --all-namespaces
kubectl get events --sort-by=.metadata.creationTimestamp

这些命令将提供有关节点、Pods 和事件的关键信息,以便快速了解集群的整体健康状况。

2. 查看 kubeadm 初始化输出

在初始化 Master 节点时,kubeadm 输出包含了加入节点的命令。如果初始化时出现问题,查看输出中的错误信息。如果没有保存输出,可以使用以下命令再次获取:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

3. 检查节点状态

使用以下命令检查节点的健康状态:
kubectl describe node <node-name>
kubectl get componentstatuses

这些命令将显示节点的详细信息以及各个组件的状态。

4. 检查 kubelet 日志

查看 kubelet 的日志以获取关于节点健康状况的更多信息:
journalctl -u kubelet

5. 查看 Docker 日志

如果使用 Docker 作为容器运行时,查看 Docker 的日志以获取有关容器运行时问题的信息:
journalctl -u docker

6. 检查网络插件

如果集群中使用了网络插件(如 Flannel、Calico 等),确保插件正常运行。查看插件的 Pod 状态和日志:
kubectl get pods -n kube-system
kubectl logs <pod-name> -n kube-system

7. 检查 Master 节点端口监听

确保 Master 节点上的关键端口正在监听。以下是一些关键端口:

  •  6443: Kubernetes API Server

  •  10250: Kubelet API

  •  10251: Kube-scheduler

  •  10252: Kube-controller-manager


使用以下命令检查端口状态:
sudo netstat -tulpn | grep LISTEN

8. 查看节点加入问题

如果节点加入集群时遇到问题,确保 kubeadm join 命令中的参数正确,尤其是 --discovery-token-ca-cert-hash 的值。

9. 查看 kubeconfig 文件

确保在所有节点上的 kubeconfig 文件正确配置。主要关注 $HOME/.kube/config 文件,确保它包含正确的集群、用户和上下文信息。

10. 查看 CNI 插件

如果使用了网络插件,确保 CNI 插件正常工作。查看 CNI 插件的日志以获取更多信息:
sudo journalctl -u cni

11. 查看 Pod 日志

如果特定 Pod 遇到问题,使用以下命令查看 Pod 的详细日志:
kubectl logs <pod-name> -n <namespace>
kubectl describe pod <pod-name> -n <namespace>

以上只是故障排查的一些建议,具体的步骤可能取决于具体的问题。在进行故障排查时,可以逐步排除可能性,根据错误信息和日志进一步深入调查。查阅 Kubernetes 和相关组件的文档也是非常有帮助的。


转载请注明出处:http://www.pingtaimeng.com/article/detail/9665/Kubernetes