首页 > 解决方案 > 当使用 k8s 设置 ipvs 模式时,“无法设置 sysctl net/ipv4/vs/conn_reuse_mode”是什么意思?

问题描述

当我将 kube-proxy 模式从 iptales 修改为 ipvs 时,重新启动 kube-proxy 后,“kubectl logs kube-proxy”返回以下错误:

server.go:485] 无法创建代理:无法设置 sysctl net/ipv4/vs/conn_reuse_mode:打开 /proc/sys/net/ipv4/vs/conn_reuse_mode:没有这样的文件或目录

我确认我已经通过以下 cmd 安装了依赖的内核模块:

lsmod | grep ip_vs lsmod | grep 连接跟踪

一切正常,那么我应该如何处理上述错误?

标签: kuberneteskube-proxyipvs

解决方案


您究竟对您的产品进行了哪些修改kube-proxy以及如何进行修改?如果您只是设置 ipvs 模式,您可以按照此处描述的方式进行设置,应该不会有任何问题。

如果您还在 的 中配置了一些附加功能,sysctls则可能需要考虑以下事项。securityContextkube-proxy Pods

请记住,有所谓的安全和不安全 sysctl。你可以在这里阅读:

默认情况下启用所有 安全sysctl。

默认情况下禁用所有 不安全 的 sysctl,并且必须由集群管理员在每个节点的基础上手动允许。将安排禁用不安全 sysctl 的 Pod,但将无法启动。

考虑到上述警告,集群管理员可以允许某些 不安全 的 sysctl 用于非常特殊的情况,例如高性能或实时应用程序调整。 使用 kubelet 标志逐个节点启用不安全的 sysctl;例如:

kubelet --allowed-unsafe-sysctls \   'kernel.msg*,net.core.somaxconn' ...

推荐阅读