2

当我设置为 priviliged: false 时,我试图从 init 容器中删除特权模式。我正在克服错误。我在 pod securityContext 级别设置了 readOnlyRootFilesystem: false 和下面的行

  securityContext:
    sysctls:
    - name: net.ipv4.ip_local_port_range
      value: 0 65535
4

1 回答 1

1

sysctl问题是由于安全原因,您无法在没有特权模式的情况下运行。这是意料之中的,因为 docker 限制了对/proc和的访问/sys

为了使其工作,您需要对 init 容器使用特权模式,而不是:


  securityContext:
    sysctls:
    - name: kernel.shm_rmid_forced
      value: "0"
    - name: net.core.somaxconn
      value: "1024"
    - name: kernel.msgmax
      value: "65536"
  • 使用PodSecurityPolicy通过在. sysctls_ sysctls_ _ _ 例如:sysctlforbiddenSysctlsallowedUnsafeSysctlsPodSecurityPolicy

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: sysctl-psp
spec:
  allowedUnsafeSysctls:
  - kernel.msg*
  forbiddenSysctls:
  - kernel.shm_rmid_forced

请注意:

如果您sysctls通过 a 中的allowedUnsafeSysctls字段 允许 unsafe ,则如果该节点上的 kubelet 标志也不允许PodSecurityPolicy使用这种 a ,则任何使用此类 a 的 podsysctl都将无法启动。sysctl--allowed-unsafe-sysctls

我还建议仔细阅读整个链接文档,因为建议谨慎使用 unsafesysctls风险自负,并可能导致严重问题,例如容器行为错误、资源短缺或节点完全损坏。

于 2020-10-15T09:43:53.787 回答