Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

33.5. 安全でない sysctl の有効化

クラスター管理者は、高パフォーマンスまたはリアルタイムのアプリケーション調整などの非常に特殊な状況で特定の安全でない sysctl を許可することができます。

安全でない sysctl を使用する必要がある場合、クラスター管理者はそれらをノードで個別に有効にする必要があります。それらは namespace を使用した sysctl のみを有効にできます。

SCC (Security Context Constraints) の forbiddenSysctls および allowedUnsafeSysctls フィールドに sysctl または sysctl パターンの一覧を指定して、Pod に設定できる sysctl をさらに制御できます。

  • forbiddenSysctls オプションは、特定の sysctl を除外します。
  • allowedUnsafeSysctls オプションは、高パフォーマンスやリアルタイムのアプリケーションチューニングなどの特定ニーズを管理します。
警告

安全でないという性質上、安全でない sysctl は各自の責任で使用されます。場合によっては、コンテナーの正しくない動作やリソース不足、またはノードの完全な破損などの深刻な問題が生じる可能性があります。

  1. ノードリソースの設定 で説明されているように、安全でない sysctl を適切な ノード設定マップ ファイルの kubeletArguments パラメーターに追加します。

    以下に例を示します。

    $ 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 の内容を使用し、安全でない sysctl を追加する新規 SCC を作成します。

    ...
    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
    CR の名前を指定します。
  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