You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes中为Pod配置sysctl内核参数出现SysctlForbidden错误求助

问题根因
  • 配置文件存在语法错误:spec.securityContext下重复定义了两次sysctls字段,会导致配置解析异常。
  • net.ipv4.tcp_tw_reuse属于Kubernetes定义的非安全sysctl参数,默认情况下kubelet会禁止此类参数在Pod中直接配置,因此触发SysctlForbidden状态。
修复步骤

1. 修正Pod Manifest语法错误

删除重复的sysctls:行,修正后的配置如下:

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: ppp-mon
  name: ppp-mon
spec:
  securityContext:
    sysctls:
    - name: kernel.shm_rmid_forced
      value: "0"
    - name: net.core.somaxconn
      value: "1024"
    - name: kernel.msgmax
      value: "65536"
    - name: net.ipv4.tcp_tw_reuse
      value: "1"
  containers:
  - image:  ppp-mon
    name: ppp-mon

2. 放行非安全sysctl参数

需要调整集群所有节点的kubelet配置,将net.ipv4.tcp_tw_reuse加入允许的非安全sysctl列表:

  • 打开kubelet配置文件,常见路径为/var/lib/kubelet/config.yaml,添加如下配置:
allowedUnsafeSysctls:
  - "net.ipv4.tcp_tw_reuse"

如果kubelet是通过启动参数传参,在启动命令中添加--allowed-unsafe-sysctls=net.ipv4.tcp_tw_reuse即可。

  • 重启kubelet服务生效:
systemctl restart kubelet

备注:如果使用云厂商托管Kubernetes集群,需要在集群的节点池配置中调整kubelet允许的非安全sysctl参数,无需手动登录节点修改。

3. 重新部署Pod

执行部署命令即可:

kubectl apply -n ppp -f test_sysctl4.yml
生效验证

Pod正常运行后,执行如下命令验证参数是否配置成功:

kubectl exec -n ppp ppp-mon -- sysctl net.ipv4.tcp_tw_reuse

返回结果为net.ipv4.tcp_tw_reuse = 1即为配置生效。

内容的提问来源于stack exchange,提问作者Attapol Roungsook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:15:02