网络组件

(一)Kube-proxy介绍

kube-proxy是一个简单的网络代理和负载均衡器,他的主要作用是负责service的实现,具体来说,就是实现了从内部从pod到server和外部的从nodeport向server的访问(nodeport和pod之间的代理)

实现方式:

(1)userspace是在用户空间,通过Kube-proxy实现LB的代理服务,这个是kube-proxy的最初版本,较为稳定,但是效率也自然不太高。

(2)iptables是采用netfilter来实现LBLB是负载均衡,netfilter主要是用来实现流量过滤与转发的,是目前kube-proxy默认的方式。

(1)在这种模式下,Kube-proxy监控k8s主服务器添加和删除服务和端点对象。对于每个服务,它安装iptables规则,捕捉到服务的clusterip(虚拟)和端口的流量,并将流量重定向到服务的后端集合之一。对于每个endpoints对象,它安装选择后端pod的iptables规则。

(2)默认情况下,后端的选择是随机的。可以通过将service.spece.sessionAffinit设置为"ClientIP"(默认为“无”)来选择基于客户端IP的会话关联。

(3)与用户空间代理一样,最终结果是绑定到服务的IP: 端口的任何流量被代理到适当的后端,而客户端不知道关于k8s或服务或pod的任何信息。这应该比用户空间代理更快,更可靠。然而,与用户空间代理不同,如果最初选择的Pod不响应,则iptables代理不能自动重试另一个pod,因此它取决于具有工作准备就绪探测。

)kube-dns介绍

kube-dns用来为k8s service分配子域名,在集群中可以通过名称访问service;通常kube-dns会为service赋予一个名为“service名称.namespace.svc.cluster.local”的A记录,用来解析service的clusterip。

kube-dns组件:

在k8s v1.4版本之前由“kube2sky、etc、skydns、exechealthz”四个组件组成。

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐