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