在部署k8s时,默认不是开启的ipvs模式,在已经部署完成后,如果想更改为ipvs,操作如下:
在所有节点安装ipvs软件(Master跟所有的Node节点)
yum -y install ipvsadm ipset
一般安装完成后,会自动加载所需的内核模块
查看内核模块是否加载
lsmod | grep ip_vs
如果没有加载,在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保存退出
\2. 查看kube-system命名空间下的kube-proxy并删除,删除后,k8s会自动再次生成,新生成的kube-proxy会采用刚刚配置的ipvs模式
kubectl get pod -n kube-system
执行如下指令进行删除
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
另外可以通过ipvsadm命令查看是否正常,判断ipvs开启了
ipvsadm -Ln