温馨提示×

CentOS上Kubernetes故障排查技巧

小樊
80
2025-03-11 20:42:35
栏目: 智能运维

在CentOS上对Kubernetes进行故障排查可以通过以下几个步骤进行:

1. 检查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连通性测试。

2. 检查系统防火墙与路由

  • 检查本地防火墙规则

    • 使用 iptables -L -n | grep 8472查看iptables规则。
    • 使用 firewall-cmd --list-ports查看firewalld规则(CentOS/RHEL)。
  • 公有云安全组检查:确保安全组放行CNI所需端口(如Flannel UDP 8472)。

3. 使用诊断工具

  • kubectl-debug
    • 通过启动一个排错工具容器,并将其加入到目标业务容器的pid、network、user以及ipc namespace中,使用netstat、tcpdump等工具进行问题排查。

4. 查看Kubernetes事件和日志

  • 查看Event:使用 kubectl describe pod <pod-name> -n <namespace>查看Pod相关的Event事件,这些事件记录了相关主题、发生时间、最近发生时间、发生次数及事件原因等。

  • 查看日志

    • 使用 kubectl logs <pod-name> -c <container-name>查看容器日志。
    • 对于使用systemd管理的Kubernetes服务,使用 journalctl -u <service-name>查看服务日志。

5. 具体故障场景排查

  • Pod无法解析集群服务:检查CoreDNS/kube-dns Pod状态和日志,确认Service和Endpoint配置正确。
  • 跨节点Pod无法通信:检查CNI插件状态和网络策略。
  • Pod启动失败:查看Pod的日志确定详细失败原因。

通过这些步骤和工具,可以有效地排查和解决CentOS上Kubernetes集群的故障。

0