vim /etc/kubernetes/proxy

###

# kubernetes proxy config

# default config should be adequate

mode=ipvs

# Add your own!

KUBE_PROXY_ARGS="--bind-address=0.0.0.0 --hostname-override=192.168.76.10 --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig --cluster-cidr=10.254.0.0/16 --masquerade-all --feature-gates=SupportIPVSProxyMode=true --proxy-mode=ipvs --ipvs-min-sync-period=5s --ipvs-sync-period=5s --ipvs-scheduler=rr"

重点说一下--masquerade-all

选项: kube-proxy ipvs 是基于 NAT 实现的,当创建一个 service 后,kubernetes 会在每个节点上创建一个网卡,同时帮你将 Service IP(VIP) 绑定上,此时相当于每个 Node 都是一个 ds,而其他任何 Node 上的 Pod,甚至是宿主机服务(比如 kube-apiserver 的 6443)都可能成为 rs;按照正常的 lvs nat 模型,所有 rs 应该将 ds 设置成为默认网关,以便数据包在返回时能被 ds 正确修改;在 kubernetes 将 vip 设置到每个 Node 后,默认路由显然不可行,所以要设置--masquerade-all选项,以便反向数据包能通过

查看内核模块是否加载ipvs模块

lsmod | grep ip_vs

内核加载ipvs模块

modprobe ip_vs

安装ipvsadmin软件

yum install ipvsadm -y

查看service的ipvs规则

ipvsadm -Ln

https://www.yangcs.net/posts/kube-router/

results matching ""

    No results matching ""