Kubernetes(7) Service advanced

从上一章节我们做了一个Service提供服务给单节点Redis数据库的实验。在这一章我们要深入Service中去,来弄清Service的工作原理。

1 Kubernetes 如何向客户端提供网络功能

Kubernetes中有三种网络类型:Node Network,Pod Network 和 Cluster Network(virutal IP)。其中Node 和 Pod Network 都是实实在在的网络设备上的IP,Cluster Network (Service Network) 则是虚拟的地址,这些IP 没有出现在网络设备的接口上,它们仅存在于Service和路由规则之中。

kubec-proxy始终(通过watch)监视着master节点上的apiserver的变动信息。一旦apiserver状态发生变化,kube-proxy会立刻生成能调动Pod行为的规则。这些规则取决于Proxy-mode实现的的方式。Proxy-mode有三种实现模型:

1.1 userspace

用户的请求首先到达对应节点得内核的iptables规则即Service规则(请求也可以是从Cluster外部发来的图中是从内部Client发出的请求)。该iptables规则的工作方式为:iptables转发给监听连接的local port 或称kube-proxy,经过kube-porxy转发请求给 Pod backend,且将Response转发给客户端。该方法会造成较大的开销,如右下图:Client Pod 首先会被转发至iptables,之后会从内核空间的iptables多次转发给各节点的 kube-proxy,尽管该Client Pod 与其中某个kube-proxy 在同一节点上。

       

1.2 iptables

客户端 Pod 请求 Service IP(iptables),由内核空间 iptables规则直接决定调用相关 Server Pod。这种做法避免了多次 kube-proxy 转发,从而提升了效率。

        

1.3 ipvs 

Client 请求直接由 ipvs 规则调动给相关 Pod 资源。

猜你喜欢

转载自www.cnblogs.com/crazy-chinese/p/10328278.html