kube-proxy 在 node 上创建了一张 dummy 网卡(kube-ipvs0),使所有访问 ClusterIP 数据包能够在 INPUT Chain 上被 DNAT,上述场景中 2、3 正式这种情况。 场景1 中数据包从本机 OUTPUT 发出并没有经过 INPUT 发生 DNAT,但实际情况是在 k8s node 主机上直接通过 ClusterIP/ 本机 IP:NodePort,依然是可以正常...
inet172.18.13.222/32brd172.18.13.222scopeglobalkube-ipvs0 valid_lft forever preferred_lft forever 2、router 查看router时候,会发现多了一下一些route信息。这些route信息是和上面的网卡信息对应的。 [root@master140~]# ip routeshowtablelocallocal172.18.13.1dev kube-ipvs0 proto kernelscopehost src172.18.13.1...
而 IPVS 模式的 Service,就是解决这个问题的一个行之有效的方法。 二、Service找到Pod(IPVS) 2.1 IPVS模式原理 IPVS 模式的工作原理,其实跟 iptables 模式类似。当我们创建了前面的 Service 之后,kube-proxy 首先会在宿主机上创建一个虚拟网卡(叫作:kube-ipvs0),并为它分配 Service VIP 作为 IP 地址,如下所示...
ipvs模式下,kube-proxy会先创建虚拟网卡,kube-ipvs0下面的每个ip都对应着svc的一个clusterIP: # ip addr ... 5: kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default link/ether de:29:17:2a:8d:79 brd ff:ff:ff:ff:ff:ff ...
kube-proxy ipvs 是基于 NAT 实现的,通过ipvs的NAT模式,对访问k8s service的请求进行虚IP到POD IP的转发。当创建一个 service 后,kubernetes 会在每个节点上创建一个网卡(类似下图这样),网卡名字是kube-ipvs0,同时帮你将所有的 Service IP(VIP) 绑定上,此时相当于每个 Node 都是一个ds(director server,负载...
--proxy-mode=ipvs (如果要使用其他负载均衡算法,可以指定--ipvs-scheduler=参数,默认为 rr) 当创建 ClusterIP type 的 service 时,IPVS proxier 会执行以下三个操作: 确保本机已创建 dummy 网卡,默认为 kube-ipvs0。为什么要创建 dummy 网卡?因为 ipvs netfilter 的 DNAT 钩子挂载在 INPUT 链上,当访问 Cluste...
三ipvs在kube-proxy中的使用 开启ipvs后,本机里面的一些信息会改变。 1、网卡 明显的变化是,多了一个绑定很多cluster service ip的kube-ipvs0网卡 [root@master140 ~]# ip addr 5: kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default ...
Kubernetes的ClusterIP和NodePort都是通过ipvs service实现的,Pod当作ipvs service的server,通过NAT MQSQ实现转发。 简单来说kube-proxy主要在所有的Node节点做如下三件事: 如果没有dummy类型虚拟网卡,则创建一个,默认名称为kube-ipvs0; 把Kubernetes ClusterIP地址添加到kube-ipvs0,同时添加到ipset中。
当我们创建了前面的 Service 之后,kube-proxy 首先会在宿主机上创建一个虚拟网卡(叫作:kube-ipvs0),并为它分配 Service VIP 作为 IP 地址。接下来,kube-proxy 就会通过 Linux 的 IPVS 模块,为这个 IP 地址设置三个 IPVS 虚拟主机,并设置这三个虚拟主机之间使用轮询模式 (rr) 来作为负载均衡策略。拓扑图如下...