centos7下kubernetes(13。kubernetes-探讨service IP)

时间:2022-08-11 00:22:28

service cluster IP是一个虚拟IP,是由kubernetes节点上的iptables规则管理的

通过iptables-save | grep 10.105.215.156看到与cluster IP 10.105.215.156相关的的信息:

centos7下kubernetes(13。kubernetes-探讨service IP)

这两条规则的含义是:

1.如果 Cluster 内的 Pod(源地址来自 10.244.0.0/16)要访问 httpd-svc,则允许

2.其他源地址访问 httpd-svc,跳转到规则 KUBE-SVC-RL3JAE4GN7VOGDGP

我们查看一下KUBE-SVC-RL3JAE4GN7VOGDGP的规则

centos7下kubernetes(13。kubernetes-探讨service IP)

1.1/3的概率跳转到规则KUBE-SEP-743ZVF7RHRJGVII6

2.1/3的概率跳转到规则 KUBE-SEP-GXPZJNJOCY6I42DY

3.1/3的概率跳转到规则KUBE-SEP-ZRTKM6VWDCK7UAPS

上面三个的跳转规则如下:

centos7下kubernetes(13。kubernetes-探讨service IP)

centos7下kubernetes(13。kubernetes-探讨service IP)

centos7下kubernetes(13。kubernetes-探讨service IP)

将请求分别转发到后端三个pod

结论:

iptables将访问service的流量转发到后端pod,使用的是类似轮询的负载均衡策略。Cluster 的每一个节点都配置了相同的 iptables 规则,这样就确保了整个 Cluster 都能够通过 Service 的 Cluster IP 访问 Service。

Service 默认轮询,也可以使用 spec.sessionAffinity: ClientIP 保持回话