原文

在部署k8s时,默认不是开启的ipvs模式,在已经部署完成后,如果想更改为ipvs,操作如下:

在所有节点安装ipvs软件(Master跟所有的Node节点)

yum -y install ipvsadm ipset

一般安装完成后,会自动加载所需的内核模块

查看内核模块是否加载

lsmod | grep ip_vs

img

如果没有加载,在Master跟所有的Node节点执行如下操作进行加载

cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
 
chmod 755 /etc/sysconfig/modules/ipvs.modules
source /etc/sysconfig/modules/ipvs.modules

加载完成后,修改configmap并删除kube-proxy即可完成,在Master节点修改

\1. 修改configmap

kubectl edit -n kube-system cm kube-proxy

将mode: " "修改为mode: “ipvs”,:wq保存退出

img

\2. 查看kube-system命名空间下的kube-proxy并删除,删除后,k8s会自动再次生成,新生成的kube-proxy会采用刚刚配置的ipvs模式

kubectl get pod -n kube-system

img

执行如下指令进行删除

kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'

查看日志,确认使用的是ipvs,下面的命令,将proxy的名字换成自己查询出来的名字即可

如果有 Using ipvs Proxier. 说明kube-proxy的ipvs 开启成功!

kubectl get pod -n kube-system | grep kube-proxy
kubectl logs -n kube-system kube-proxy-4c5xj

img

另外可以通过ipvsadm命令查看是否正常,判断ipvs开启了

ipvsadm -Ln

img

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐