如何让kube-proxy工作在ipvs模式?

如何让kube-proxy工作在ipvs模式?使用kubeadm默认安装的kubernetes集群,每个节点会以pod方式运行kube-proxy组件,其主要作用是引导访问Service的流量到对应Pod上,如下图,service的工作原理kube-proxy工作在网络层,有三种工作模

大家好,欢迎来到IT知识分享网。

使用kubeadm默认安装的kubernetes集群,每个节点会以pod方式运行kube-proxy组件,其主要作用是引导访问Service的流量到对应Pod上,如下图,

如何让kube-proxy工作在ipvs模式?

service的工作原理

kube-proxy工作在网络层,有三种工作模式:

  • 用户空间模式(因为性能很弱,已淘汰,本文不涉及)
  • iptables(kubeadm安装集群时默认使用的模式)
  • ipvs

如果你手头没有供测试的kubernetes集群,可参考这篇文章部署一个,8G内存的笔记本就可以。

为什么要改变?

kube-proxy组件默认工作在iptables模式,因为整个处理流程发生在内核层,处理速度并不弱。但当集群规模很大时,Service对象的数量超过了1000,这时性能减弱就比较明显。主要是因为iptable规则是顺序查找,时间复杂度可认为是O(n),而ipvs模式依靠ipset,底层实现使用hash存储规则,时间复杂度是O(1)。这样的话,规则的查找速度就和集群中Service的数量多少没有关系。ipvs模式还有一个明显的优势:支持丰富的负载均衡策略,如轮循、最少连接、最短延时等。iptables和ipvs模式对CPU、内存资源的使用也有不同,具体可上网查询。

修改iptables为ipvs

1,安装所需包

笔者使用的主机操作系统是CentOS 7,读者根据实际情况选择安装方法,

安装ipset和ipvsadm,

yum install ipset ipvsadm -y

配置系统启动自动加载ipvs模块,

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 && \ bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

2,配置kube-proxy

  • 全新安装集群

生成“kubeadm init”命令使用的配置文件,

kubeadm config print init-defaults > kubeadm.yaml

文件末尾加入下面的内容,

--- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs
  • 修改已部署的集群

更新kube-proxy配置,将其工作模式修改为“ipvs”,

kubectl edit configmap kube-proxy -n kube-system ... mode: ipvs

删除集群中正在运行的kube-proxy Pod,

kubectl get po -n kube-system kubectl delete po -n kube-system <pod-name>

查看Pod输出的日志,确定是否修改成功

kubectl logs [kube-proxy pod] | grep "Using ipvs Proxier"

下面输出,表明配置成功!

[root@master ~]# kubectl logs kube-proxy-ks42r -n kube-system | grep "Using ipvs Proxier" I0227 05:56:29. 1 server_others.go:269] "Using ipvs Proxier"

可以创建一个测试服务,使用命令“ipvsadm -Ln”查看结果。

总结

文章介绍了将kube-proxy修改为ipvs工作模式的方法,如果你使用公有云平台,如阿里的容器服务-ACK,可以通过点选实现,操作就更简单。不管怎样,熟悉工作原理最重要。希望这篇文章能帮到正在努力的你,欢迎点赞、评论!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/86965.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信