为 AKS 群集中的特定 pod 设置 sysctl 参数 "net.ipv4.tcp_retries2" 时出错

Error setting sysctl parameters "net.ipv4.tcp_retries2" for a specific pod in the AKS cluster

我正在处理一项要求,其中我们希望将 Kubernetes POD 中的特定内核参数“net.ipv4.tcp_retries2”更新为“5”。

我们使用的是 AKS 集群 v1.21.7

我尝试使用 securityContext 设置上面的 sysctl 参数但是失败了

  template:
    metadata:
      labels:
        app.kubernetes.io/name: weather-forecast-api
        app.kubernetes.io/instance: RELEASE-NAME
    spec:
      serviceAccountName: RELEASE-NAME-weather-forecast-api
      securityContext:
        sysctls:
        - name: net.ipv4.tcp_retries2
          value: "5"

当我在 AKS 中应用上述更改时,pod 无法 运行 并给出错误

forbidden sysctl: "net.ipv4.tcp_retries2" not whitelisted

我知道我们可以在基本的 Kubernetes 集群上修改 Kubelet 级别的内核级设置,但在我的例子中,它是来自 Azure 的托管集群。

使用初始化容器设置:

...
template:
  metadata:
    labels:
      app.kubernetes.io/name: weather-forecast-api
      app.kubernetes.io/instance: RELEASE-NAME
  spec:
    serviceAccountName: RELEASE-NAME-weather-forecast-api
    initContainers:
    - name: sysctl
      image: busybox
      securityContext:
        privileged: true
      command: ["sh", "-c", "sysctl -w net.ipv4.tcp_retries2=3"]
    ...