配置 kube-proxy 基于 ipvs 模式工作

引言
kube-proxy 目前(v1.17)支持多种工作模式,如:userspace、iptables、ipvs,以及仅在 windows 环境可选的 kernelspace 等。在 linux 环境,未配置 kube-proxy 工作模式的情况下,将优先使用 iptables 模式运行,在不满足 iptables 模式工作条件时,自动回退到 userspace 模式。在 windows 环境,如未配置工作模式,将使用 userspace 模式运行。

ipvs 相比 iptables 提供了更优的性能,那么如何在 linux 环境启用 ipvs 模式呢?

其实很简单,只需要修改 kube-proxy 的启动配置(kube-system/kube-proxy ConfigMap),将 mode 修改为 ipvs 即可:

# kubectl edit cm kube-proxy -n kube-system
    mode: "ipvs"
    nodePortAddresses: null
    oomScoreAdj: null
    portRange: ""
-- INSERT --

保存配置后,为了保证生效,重启 kube-proxy 服务(其实 kube-proxy 是支持自动重启的,奈何博主实验时并未正常重启,这是一个已知的 bug…)

# kubectl delete pod -l k8s-app=kube-proxy -n kube-system
pod "kube-proxy-j8586" deleted
pod "kube-proxy-pd4pz" deleted
pod "kube-proxy-ttrv8" deleted

查看 kube-proxy 启动日志,发现已经启用 ipvs:

在这里插入图片描述
如果您在设置后,发现并未成功启用 ipvs,可能是操作系统未达要求的原因,需要在安装缺失的内核模块后重试。笔者实验的操作系统为 CentOS Linux release 7.6.1810 (Core),直接启用 ipvs 即可成功。

发布了272 篇原创文章 · 获赞 93 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/shida_csdn/article/details/104059222