【云原生】k8s集群切换代理ipvs

service代理默认使用iptables规则通过内核模块netfilter实现流量转发,内核转发效率高,但是iptables不具备更为灵活的负载均衡策略,只是将流量随意的转发至后端Pod,当Pod不可用时也无法进行健康检查;就以下是将默认流量转发修改为ipvs。

启动ipvs模块

首先,您需要创建一个配置文件 /etc/sysconfig/modules/ipvs.modules,并将以下内容写入其中:

#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack

然后,将配置文件设置为可执行,并运行它,以加载所需的内核模块:

# chmod 755 /etc/sysconfig/modules/ipvs.modules
# bash /etc/sysconfig/modules/ipvs.modules

最后,您可以使用以下命令检查加载的内核模块:

lsmod | grep -e ip_vs -e nf_conntrack

[root@master modules]# lsmod | grep -e ip_vs -e nf_conntrack
nf_conntrack_ipv6      18935  7 
nf_defrag_ipv6         35104  1 nf_conntrack_ipv6
nf_conntrack_netlink    36396  0 
nfnetlink              14519  4 nf_tables,ip_set,nf_conntrack_netlink
nf_conntrack_ipv4      15053  10 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  10 ip_vs,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_nat_masquerade_ipv6,nf_conntrack_netlink,nf_conntrack_ipv4,nf_conntrack_ipv6
libcrc32c              12644  4 xfs,ip_vs,nf_nat,nf_conntrack

修改代理模式为ipvs

修改kube-proxy的comfigmaps文件

# kubectl get configmaps -n kube-system kube-proxy
NAME         DATA   AGE
kube-proxy   2      127d

# kubectl edit cm -n kube-system kube-proxy
 44     mode: "ipvs"  #默认mode: ""为空,使用iptables
 
# kubectl edit cm -n kube-system kube-proxy 
configmap/kube-proxy edited

因为kube-prooxy是用daemonsets控制器创建的,直接删除kube-proxy的Pod,让他重建就可以了

# kubectl get pod --show-labels -n kube-system | grep kube-proxy  #删除之前的pod名称

# kubectl delete pod  -l  k8s-app=kube-proxy -n kube-system 

# kubectl get pod --show-labels -n kube-system | grep kube-proxy  #删除后发现已经重建完成并运行

完成配置验证IPVS功能

查看日志"Using ipvs Proxier","Creating dualStackProxier for ipvs"已经使用并创建了ipvs。

[root@master modules]# kubectl logs  kube-proxy-4jhpz -n kube-system | grep ipvs
I0406 02:33:33.709297       1 server_others.go:269] "Using ipvs Proxier"
I0406 02:33:33.709345       1 server_others.go:271] "Creating dualStackProxier for ipvs"

配置已经生效并且 kube-proxy 在 ipvs 模式下运行,可以验证 IPVS 功能是否正常。在一个运行着服务的 Node 上运行ipvsadm -Ln | grep <service-ip>命令,将替换<service-ip>为您实际的服务 IP 地址:

[root@master modules]# ipvsadm -Ln | grep 10.244.0.0
TCP  10.244.0.0:30002 rr
TCP  10.244.0.0:30179 rr
TCP  10.244.0.0:30186 rr
TCP  10.244.0.0:31000 rr
TCP  10.244.0.0:31270 rr
TCP  10.244.0.0:31847 rr
TCP  10.244.0.0:31935 rr
TCP  10.244.0.0:32080 rr
TCP  10.244.0.0:32222 rr
TCP  10.244.0.0:32443 rr
TCP  10.244.0.0:32469 rr

如果不能使用ipvsadm命令需要下载ipvsadm模块

yum install ipvsadm

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值