Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

33.5. 启用不安全 sysctl

集群管理员可在非常特殊的情况下(如高性能或实时应用程序调整)允许某些不安全 sysctl。

如果要使用不安全 sysctl,集群管理员必须在节点上单独启用它们。它们只能启用具有命名空间的 sysctl。

您可以通过在 forbiddenSysctlsallowedUnsafeSysctls 字段中指定 Security Context Constraints 字段中的 sysctl 模式列表来控制 pod 中可以设置哪些 sysctl。

  • forbiddenSysctls 选项用来排除特定 sysctls。
  • allowedUnsafeSysctls 选项用来控制特定的需求,如高性能或实时应用程序调整。
警告

由于其不安全的性质,使用不安全 sysctl 具有风险,并可能导致容器行为不当、资源不足或节点完全中断等严重问题。

  1. 在相应 节点配置映射 文件的 kubeletArguments 参数中添加不安全 sysctl,如 配置 Node Resources 所述:

    例如:

    $ oc edit cm node-config-compute -n openshift-node
    
    ...
        kubeletArguments:
          allowed-unsafe-sysctls: 1
          - "net.ipv4.tcp_keepalive_time"
          - "net.ipv4.tcp_keepalive_intvl"
          - "net.ipv4.tcp_keepalive_probes"
    1
    添加您要使用的不安全 sysctl。
  2. 创建使用 受限 SCC 内容的新 SCC 并添加不安全 sysctl:

    ...
    allowHostDirVolumePlugin: false
    allowHostIPC: false
    allowHostNetwork: false
    allowHostPID: false
    allowHostPorts: false
    allowPrivilegeEscalation: true
    allowPrivilegedContainer: false
    allowedCapabilities: null
    allowedUnsafeSysctls: 1
    - net.ipv4.tcp_keepalive_time
    - net.ipv4.tcp_keepalive_intvl
    - net.ipv4.tcp_keepalive_probes
    ...
    metadata:
      name: restricted-sysctls 2
    ...
    1
    添加您要使用的不安全 sysctl。
    2
    为 SCC 指定新名称。
  3. 授予新 SCC 对 Pod ServiceAccount 的访问权限:

    $ oc adm policy add-scc-to-user restricted-sysctls -z default -n your_project_name
  4. 将不安全 sysctl 添加到 pod 的 DeploymentConfig 中。

    kind: DeploymentConfig
    
    ...
      template:
        ...
        spec:
          containers:
          ...
          securityContext:
            sysctls:
            - name: net.ipv4.tcp_keepalive_time
              value: "300"
            - name: net.ipv4.tcp_keepalive_intvl
              value: "20"
            - name: net.ipv4.tcp_keepalive_probes
              value: "3"
  5. 重启节点服务以应用更改:

    # systemctl restart atomic-openshift-node