Kubernetes 网络排查方法

导读:本篇文章讲解 Kubernetes 网络排查方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1 pod 常见网络异常分类

1.1 网络不可达

主要现象为 ping 不通,其可能原因为:

  • 源端和目的端防火墙(iptables, selinux)限制
  • 网络路由配置不正确
  • 源端和目的端的系统负载过高,网络连接数满,网卡队列满
  • 网络链路故障

1.2 端口不可达

主要现象为可以 ping 通,但 telnet 端口不通,其可能原因为:

  • 源端和目的端防火墙限制
  • 源端和目的端的系统负载过高,网络连接数满,网卡队列满,端口耗尽
  • 目的端应用未正常监听导致(应用未启动,或监听为 127.0.0.1 等)

1.3 DNS 解析异常

主要现象为基础网络可以连通,访问域名报错无法解析,访问 IP 可以正常连通。其可能原因为

  • Pod 的 DNS 配置不正确
  • DNS 服务异常
  • pod 与 DNS 服务通讯异常

1.4 大数据包丢包

主要现象为基础网络和端口均可以连通,小数据包收发无异常,大数据包丢包。可能原因为:

  • 可使用 ping -s 指定数据包大小进行测试
  • 数据包的大小超过了 docker、CNI 插件、或者宿主机网卡的 MTU 值。

1.5 CNI 异常

主要现象为 Node 可以通,但 Pod 无法访问集群地址,可能原因有:

  • kube-proxy 服务异常,没有生成 iptables 策略或者 ipvs 规则导致无法访问
  • CIDR 耗尽,无法为 Node 注入 PodCIDR 导致 CNI 插件异常
  • 其他 CNI 插件问题

2 网络排查工具

2.1 tcpdump

2.2 wireshark 追踪流

2.3 nsenter

2.4 paping

2.5 mtr

3 Pod 网络异常排查思路及流程模型

4 CNI 网络异常排查步骤

5 实践

5.1 现象

  • 所有节点之间的 pod 通信正常
  • 任意节点和 Pod curl registry 的 Pod 的 IP:5000 均可以连通
  • 新扩容节点 10.153.204.15 curl registry 服务的 Cluster lP 10.233.0.100:5000
    不通,其他节点 curl 均可以连通

5.2 分析思路

  • 根据现象 1 可以初步判断 CNI 插件无异常
  • 根据现象 2 可以判断 registry 的 Pod 无异常
  • 根据现象 3 可以判断 registry 的 service 异常的可能性不大,可能是新扩容节点访问 registry 的 service存在异常

5.3 怀疑方向

  • 问题节点的 kube-proxy 存在异常
  • 问题节点的 iptables 规则存在异常
  • 问题节点到 service 的网络层面存在异常

5.4 排查过程

  • 排查问题节点的 kube-proxy
  • 执行 kubectl get pod -owide -nkube-system l grep kube-proxy 查看
    kube-proxy Pod 的状态,问题节点上的 kube-proxy Pod 为 running 状态
  • 执行 kubecti logs -nkube-system 查看问题节点
    kube-proxy 的 Pod 日志,没有异常报错
  • 在问题节点操作系统上执行 iptables -S -t nat 查看 iptables 规则

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79919.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!