微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初始化容器“ sysctl:错误设置键“ net.ipv4.ip_local_port_range”:只读文件系统”

如何解决初始化容器“ sysctl:错误设置键“ net.ipv4.ip_local_port_range”:只读文件系统”

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

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

解决方法

问题是由于安全原因,如果没有特权模式,您将无法运行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和/或{{中指定sysctlssysctl模式列表来控制可以在pod中设置哪个forbiddenSysctls allowedUnsafeSysctls的1}}字段。例如:

PodSecurityPolicy

注意:

如果您通过“ apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: sysctl-psp spec: allowedUnsafeSysctls: - kernel.msg* forbiddenSysctls: - kernel.shm_rmid_forced ”字段中的不安全sysctls allowedUnsafeSysctls,如果出现以下情况,则使用此类PodSecurityPolicy的任何广告连播都将无法启动 sysctl不允许通过sysctl kubelet 在该节点上也进行标记。

  • 您还可以使用docker run --sysctl在容器本地设置有限数量的--allowed-unsafe-sysctls

我还建议您仔细阅读整个链接文档,因为使用不安全的sysctls风险由您自己承担,并且可能导致严重问题,例如容器行为错误,资源短缺或完全损坏节点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。