在CentOS上對Kubernetes進行故障排查可以通過以下幾個步驟進行:
檢查DNS服務狀態:
kubectl get pods -n kube-system -l k8s-app=kube-dns
查看DNS Pod狀態。kubectl logs -f <kube-dns-pod-name> -n kube-system -c kubedns
查看DNS日志。kubectl get svc kube-dns -n kube-system
確認ClusterIP是否正常,以及 kubectl get endpoints kube-dns -n kube-system
檢查Endpoint是否包含Pod IP。檢查網絡插件(CNI)狀態:
kubectl get pod -A -o wide | grep -E 'calico|flannel|weave'
檢查CNI Pod狀態。netstat -tulnp | grep 8472
(以Flannel為例)檢查CNI端口占用情況。nc -u -l 8472
在目標節點進行監聽,并使用 echo "test" | nc -u <目標節點IP> 8472 -w 2
進行跨節點UDP連通性測試。檢查本地防火墻規則:
iptables -L -n | grep 8472
查看iptables規則。firewall-cmd --list-ports
查看firewalld規則(CentOS/RHEL)。公有云安全組檢查:確保安全組放行CNI所需端口(如Flannel UDP 8472)。
查看Event:使用 kubectl describe pod <pod-name> -n <namespace>
查看Pod相關的Event事件,這些事件記錄了相關主題、發生時間、最近發生時間、發生次數及事件原因等。
查看日志:
kubectl logs <pod-name> -c <container-name>
查看容器日志。journalctl -u <service-name>
查看服務日志。通過這些步驟和工具,可以有效地排查和解決CentOS上Kubernetes集群的故障。