此开源图书由ithaiq原创,创作不易转载请注明出处
调用流量转发路径:访问svc→ dns解析→ iptables DNAT转发
这类 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 svc 不会分配 clusterIP,而是返回对应 DNS 的 A 记录,如果 svc 后端有3个 pod 则返回 3 个 pod IP。访问 svc 时会随机选择一个 IP,所以 headless svc 是可以 ping 通的。
Loadbalancer 类型 svc 也要看云厂商的具体实现。
普通模式:基于 NodePort,LB -> node:nodePort -> pod。ping 的结果跟 NodePort 一致。
直连模式:LB 和 pod 处于同一个 VPC 子网,LB -> pod。ping 的结果跟 Headless 一致。
ExternalName 对应 DNS 的 CNAME,如果配置的域名可以 ping 通则 svc 可以 ping 通。
最后更新于1年前
这有帮助吗?