Service更改工作模式为ipvs
转载至:https://www.jianshu.com/p/d1ba8b910085
当我的集群搭建完成之后,service使用的默认工作模式为iptables,当我查看的时候,IPtables又不太方便查看,排版、内容看起来都比较复杂,所以我尝试使用ipvs,更改Service现在工作模式
而且IPvS有以下好处:
- IPVS为大型集群提供了更好的可扩展性和性能。
- IPVS支持比iptables更复杂的负载平衡算法(最小负载,最少连接,位置,加权等)。
- IPVS支持服务器健康检查和连接重试等。
kube-proxy开启ipvs的前置条件
1. 安装IPvS
# yum -y install ipvsadm ipvsset
ipvs需要加载一些内核模块
- ip_vs
- ip_vs_rr
- ip_vs_wrr
- ip_vs_sh
- nf_conntrack_ipv4
2. 在各个节点执行以下脚本:
# cat > /etc/sysconfig/modules/ipvs.modules <<EOF 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 && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
3. kube-proxy开启ipvs并重启kube-proxy
$ kubectl edit configmap -n kube-system
....
mode: "ipvs"
....
$ kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
4. 此时再像往常一样创建Deployment、Pod、Service之后查看就有ipvs规则了。
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF