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.zyzy.cn/article/detail/9665/Kubernetes