1. Pod里能ping通service IP吗

此开源图书由ithaiq原创,创作不易转载请注明出处

  • 调用流量转发路径:访问svc→ dns解析→ iptables DNAT转发

  • ClusterIP/NodePort

    这类 svc 都会分配 ClusterIP,这个 IP 地址是 VIP(虚拟 IP),是在所有 node 上添加一些 netfilter 规则,主要有 iptables 和 ipvs 两种方案,能不能 ping 通要看具体实现。

    • iptables:clusterIP 只是 iptables 中的规则,只会处理 ip:port 四层数据包,reject 了 icmp。不能 ping 通。

    • IPVS:clusterIP 会绑定到虚拟网卡 kube-ipvs0,配置了 route 路由到回环网卡,icmp 包是 lo 网卡回复的。可以 ping 通。

  • Headless: ClusterIP=None

    Headless svc 不会分配 clusterIP,而是返回对应 DNS 的 A 记录,如果 svc 后端有3个 pod 则返回 3 个 pod IP。访问 svc 时会随机选择一个 IP,所以 headless svc 是可以 ping 通的。

  • Loadbalancer

    Loadbalancer 类型 svc 也要看云厂商的具体实现。

    • 普通模式:基于 NodePort,LB -> node:nodePort -> pod。ping 的结果跟 NodePort 一致。

    • 直连模式:LB 和 pod 处于同一个 VPC 子网,LB -> pod。ping 的结果跟 Headless 一致。

  • ExternalName

    ExternalName 对应 DNS 的 CNAME,如果配置的域名可以 ping 通则 svc 可以 ping 通。

最后更新于

这有帮助吗?