在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集群的故障。