跳转至

两种代理模式

官方文档地址:

Iptables 模式

img

IPVS 模式

img

开启 kube-proxy 的 ipvs 前置条件

从 kubernetes 的 1.8 版本开始,kube-proxy 引入了 ipvs 模式,ipvs 模式与 iptables 同样基于 Netfilter,但是 ipvs 模式采用的是 hash 表,因此当 service 数量达到一定规模时,hash 查表的速度优势就会显现出来,从而提高 service 的服务性能

# 1、安装ipvsadm 和 ipset
dnf -y install ipvsadm ipset

# 2、编辑 ipvs.modules 配置文件,使其永久生效

mkdir -p /etc/sysconfig/modules
vim /etc/sysconfig/modules/ipvs.modules

# 3、填写如下内容
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- br_netfilter
modprobe -- nf_conntrack

# 4、设置文件权限
chmod 755 /etc/sysconfig/modules/ipvs.modules

# 5、查看是否已经正确加载所需的内核模块
bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

vim /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
br_netfilter
nf_conntrack

配置 kube-proxy 开启 ipvs

# 1、编辑kube-proxy
kubectl edit cm kube-proxy -n kube-system

# 2、修改mode
mode: ""
# 修改为  mode: "ipvs"

# 3、删除之前运行的资源类型为 pod 的 kube-proxy
kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'

# 4、查看 kube-proxy 是否开启 ipvs
ipvsadm -Ln