kube-proxy开启ipvs代替iptables

从kubernetes1.8版本开始,新增了kube-proxy对ipvs的支持,并且在新版的kubernetes1.11版本中被纳入了GA。

iptables模式问题不好定位,规则多了性能会显著下降,甚至会出现规则丢失的情况;相比而言,ipvs就稳定的多。

这里使用的kubernetes版本为1.10.3,可以参考https://blog.csdn.net/shihao99/article/details/82384798进行部署。

1、加载内核模快

查看内核模块是否加载

lsmod|grep ip_vs

如果没有加载,使用如下命令加载ipvs相关模块

modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4

2、更改kube-proxy配置

kubectl edit configmap kube-proxy -n kube-system

找到如下部分的内容

   minSyncPeriod: 0s
      scheduler: ""
      syncPeriod: 30s
    kind: KubeProxyConfiguration
    metricsBindAddress: 127.0.0.1:10249
    mode: "ipvs"                          # 加上这个
    nodePortAddresses: null

其中mode原来是空,默认为iptables模式,改为ipvs

scheduler默认是空,默认负载均衡算法为轮训

 编辑完,保存退出

3、删除所有kube-proxy的pod

kubectl delete pod xxx -n kube-system

4、查看kube-proxy的pod日志

kubectl logs kube-proxy-xxx   -n kube-system

.有.....Using ipvs Proxier......即可.

5、安装ipvsadm

使用ipvsadm查看ipvs相关规则,如果没有这个命令可以直接yum安装

yum install -y ipvsadm

 

你可能感兴趣的:(docker,centos,linux,kubernetes)