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

yum -y install ipvsadm ipset

 2.检测是否加载

[root@master manifests]# lsmod | grep ip_vs
ip_vs_sh               12688  0
ip_vs_wrr              12697  0
ip_vs_rr               12600  54
ip_vs                 145458  60 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  7 ip_vs,nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4
libcrc32c              12644  4 xfs,ip_vs,nf_nat,nf_conntrack

3.没有加载成功则手动执行

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

4.加载完成后,修改configmap并删除kube-proxy即可完成,在master上

- 修改configmap ,mode: "ipvs"

kubectl edit -n kube-system cm kube-proxy
ipvs:
      excludeCIDRs: null
      minSyncPeriod: 0s
      scheduler: ""
      strictARP: false
      syncPeriod: 0s
      tcpFinTimeout: 0s
      tcpTimeout: 0s
      udpTimeout: 0s
    kind: KubeProxyConfiguration
    metricsBindAddress: ""
    mode: "ipvs"

5.查看并删除 kube-proxy

kubectl get pod -n kube-system
kubectl delete pod kube-proxy -n kube-system

# 或者可以装杯的命令
kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'

6.接着查看日志,有打印 Using ipvs Proxier 表示使用成功

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

7.可以看到转发规则了

[root@master manifests]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐