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


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

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

Security Context Constraints の allowedUnsafeSysctls フィールドに sysctl または sysctl パターンのリストを指定することで、どの sysctl を Pod に設定するかをさらに制御できます。

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

警告

これらの sysctl は安全でないとみなされているため、安全でない sysctl の使用は自己責任となり、コンテナーの不適切な動作、リソース不足、ノードの破損などの深刻な問題を引き起こす可能性があります。

手順

  1. 以下のコマンドを実行して、OpenShift Container Platform クラスターの既存の MachineConfig オブジェクトをリスト表示し、マシン設定にラベルを付ける方法を決定します。

    $ oc get machineconfigpool

    出力例

    NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master   rendered-master-bfb92f0cd1684e54d8e234ab7423cc96   True      False      False      3              3                   3                     0                      42m
    worker   rendered-worker-21b6cb9a0f8919c88caf39db80ac1fce   True      False      False      3              3                   3                     0                      42m

  2. 安全でない sysctl を含むコンテナーを実行するマシン設定プールにラベルを追加するには、次のコマンドを実行します。

    $ oc label machineconfigpool worker custom-kubelet=sysctl
  3. KubeletConfig カスタムリソース (CR) を定義する YAML ファイルを作成します。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: custom-kubelet
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: sysctl
      kubeletConfig:
        allowedUnsafeSysctls:
          - "kernel.msg*"
          - "net.core.somaxconn"

    各項目の説明:

    spec.machineConfigPoolSelector.matchLabels
    マシン設定プールからラベルを指定します。
    spec.kubeletConfig.allowedUnsafeSysctls
    許可する安全でない sysctl のリストを指定します。
  4. 以下のコマンドを実行してオブジェクトを作成します。

    $ oc apply -f set-sysctl-worker.yaml
  5. 以下のコマンドを実行して、Machine Config Operator が新規のレンダリングされた設定を生成し、これをマシンに適用します。

    $ oc get machineconfigpool worker -w

    数分後、UPDATING のステータスが True から False に変化します。

    NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    worker   rendered-worker-f1704a00fc6f30d3a7de9a15fd68a800   False     True       False      3              2                   2                     0                      71m
    worker   rendered-worker-f1704a00fc6f30d3a7de9a15fd68a800   False     True       False      3              2                   3                     0                      72m
    worker   rendered-worker-0188658afe1f3a183ec8c4f14186f4d5   True      False      False      3              3                   3                     0                      72m
  6. 次の例に示すように、Pod を定義する YAML ファイルを作成し、securityContext 仕様を追加します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: sysctl-example-safe-unsafe
    spec:
      containers:
      - name: podexample
        image: centos
        command: ["bin/bash", "-c", "sleep INF"]
        securityContext:
          runAsUser: 2000
          runAsGroup: 3000
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
        sysctls:
        - name: kernel.shm_rmid_forced
          value: "0"
        - name: net.core.somaxconn
          value: "1024"
        - name: kernel.msgmax
          value: "65536"
  7. 以下のコマンドを実行して Pod を作成します。

    $ oc apply -f sysctl-example-safe-unsafe.yaml

    予想される出力

    Warning: would violate PodSecurity "restricted:latest": forbidden sysctls (net.core.somaxconn, kernel.msgmax)
    pod/sysctl-example-safe-unsafe created

  8. 次のコマンドを実行して、Pod が作成されていることを確認します。

    $ oc get pod

    出力例

    NAME                         READY   STATUS    RESTARTS   AGE
    sysctl-example-safe-unsafe   1/1     Running   0          19s

  9. 次のコマンドを実行して、Pod にログインします。

    $ oc rsh sysctl-example-safe-unsafe
  10. 設定された sysctl フラグの値を確認します。たとえば、以下のコマンドを実行して、net.core.somaxconn パラメーターの値を調べます。

    sh-4.4# sysctl net.core.somaxconn

    予想される出力

    net.core.somaxconn = 1024

    安全でない sysctl が許可され、値は更新された Pod 仕様の securityContext 仕様で定義されているように設定されるようになりました。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る