Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第44章 機能ゲートの使用による各種機能の無効化

管理者として、機能ゲート を使用して特定のノードまたはプラットフォーム全体に対して特定の機能をオフにすることができます。

たとえば、新規の機能を完全にテストできるテストクラスターで有効にした状態で、これらの機能を実稼働クラスターでオフにすることができます。

Web コンソールに表示される機能を無効にすると、その機能が表示される場合がありますが、オブジェクトは一覧表示されません。無効にされた機能に関連付けられたコマンドを使用しようとすると、OpenShift Container Platform はエラーを表示します。

注記

クラスター内のアプリケーションが依存する機能を無効にする場合、アプリケーションは無効にされた機能およびアプリケーションがその機能を使用する方法によっては適切に機能しなくなる場合があります。

機能ゲートは、ブロックする必要のある機能を記述したマスター設定ファイル (/etc/origin/master/master-config.yaml) およびノード設定ファイルで key=value のペアを使用します。

ノード設定ファイルを変更するには、ノード設定マップを必要に応じて更新します。node-config.yaml ファイルは手動で変更しないようにしてください。

たとえば、以下のコードは Huge Page 機能をオフにします。

kubernetesMasterConfig:
  apiServerArguments:
    feature-gates:
    - HugePages=false 1
  ...
  controllerArguments:
    feature-gates:
    - HugePages=false 2
1 2
機能をオフにするキー/値のペア:
  • true: 指定された機能を有効にします。
  • false: 指定された機能を無効にします。

複数の機能ゲートを 1 つのコンマ区切りの行で指定します。

kubeletArguments:
  feature-gates:
  - RotateKubeletClientCertificate=true,RotateKubeletServerCertificate=true,ExpandPersistentVolumes=true,HugePages=false

44.1. クラスターの各種機能の無効化

クラスター全体の機能をオフにするには、マスター設定ファイル (デフォルトは /etc/origin/master/master-config.yaml) を編集します。

  1. オフにする必要のある機能については、<feature_name>=falseapiServerArguments および controllerArguments の下に入力します。

    例:

    kubernetesMasterConfig:
      apiServerArguments:
        feature-gates:
        - HugePages=false
      controllerArguments:
        feature-gates:
        - HugePages=false

    複数の機能ゲートを 1 つのコンマ区切りの行で指定します。

    kubernetesMasterConfig:
      apiServerArguments:
        feature-gates:
        - RotateKubeletClientCertificate=false,RotateKubeletServerCertificate=false,ExpandPersistentVolumes=true,HugePages=false
      controllerArguments:
        feature-gates:
        - RotateKubeletClientCertificate=false,RotateKubeletServerCertificate=false,ExpandPersistentVolumes=true,HugePages=false
  2. 変更を有効にするために OpenShift Container Platform マスターサービスを再起動します。

    # master-restart api
    # master-restart controllers

無効にされた機能を再度有効にするには、マスター設定ファイルを編集して <feature_name>=false を削除し、マスターサービスを再起動します。

44.2. ノードの各種機能の無効化

ノードホストの機能をオフにするには、適切なノード設定マップを編集します。

ノード設定ファイルを変更するには、ノード設定マップを必要に応じて更新します。node-config.yaml ファイルは手動で変更しないようにしてください。

  1. オフにする必要のある機能については、<feature_name>=falsekubeletArguments の下に入力します。

    例:

    kubeletArguments:
      feature-gates:
      - HugePages=false

    複数の機能ゲートを 1 つのコンマ区切りの行で指定します。

    kubeletArguments:
      feature-gates:
      - RotateKubeletClientCertificate=false,RotateKubeletServerCertificate=false,ExpandPersistentVolumes=true,HugePages=false
  2. 変更を有効するために OpenShift Container Platform サービスを再起動します。

    # systemctl restart atomic-openshift-node.service

無効にされた機能を再度有効にするには、ノード設定ファイルを編集して <feature_name>=false を削除し、ノードサービスを再起動します。

ノード設定ファイルを変更するには、ノード設定マップを必要に応じて更新します。node-config.yaml ファイルは手動で変更しないようにしてください。

44.2.1. 機能ゲートの一覧

以下の一覧を使用し、無効にする必要のある機能の名前を判別します。

機能ゲート説明

Accelerator

Docker の使用時に Nvidia GPU サポートを有効にします。

AdvancedAuditing

高度な監査を有効にします。

APIListChunking

API クライアントが LIST または GET リソースを API サーバーからチャンクで取得できるようにします。

APIResponseCompression

LIST または GET 要求の応答の圧縮を有効にします。

AppArmor

Docker を使用する際に Linux ノードで AppArmor ベースの必須noアクセス制御を有効にします。詳細は、Kubernetes AppArmor ドキュメントを参照してください。

BlockVolume

Pod で raw ブロックデバイスの定義および消費を可能にします。詳細は、「Kubernetes Raw Block Volume Support」を参照してください。

CPUManager

コンテナーレベルの CPU アフィニティーサポートを有効にします。詳細は、「Using CPU Manager」を参照してください。

CRIContainerLogRotation

CRI コンテナーランタイムのコンテナーログのローテーションを有効にします。

CSIPersistentVolume

CSI (Container Storage Interface) と互換性のあるボリュームプラグインでプロビジョニングされるボリュームの検出およびモニターを有効にします。詳細は、「CSI Volume Plugins」(Kubernetes Design ドキュメント) を参照してください。

CustomPodDNS

dnsConfig プロパティーを使用した Pod の DNS 設定のカスタマイズを有効にします。

CustomResourceSubresources

CustomResourceDefinition で作成されたリソースで /status および /scale サブリソースを有効にします。「カスタムリソースによる Kubernetes API の拡張」を参照してください。

CustomResourceValidation

カスタムリソース定義で作成されたリソースでスキーマベースの検証を有効にします。詳細は、「カスタムリソースによる Kubernetes API の拡張」を参照してください。

DebugContainers

実行中の Pod のトラブルシューティングのために Pod の namespace でのデバッグコンテナーの実行を有効にします。

DevicePlugins

ノード上でデバイスプラグインベースのリソースのプロビジョニングを有効にします。

DynamicKubeletConfig

クラスター内で動的な設定を有効にします。

DynamicVolumeProvisioning(deprecated)

永続ボリュームの Pod への動的プロビジョニングを有効にします。

EnableEquivalenceClassCache

Pod のスケジュール時のスケジューラーによるノードの同等内容のキャッシュを有効にします。

ExperimentalCriticalPodAnnotation

特定の Pod に「Critical」のアノテーションを付け、それらのスケジューリングが保証されるようにします。

ExperimentalHostUserNamespaceDefaultingGate

ユーザー namespace の無効化を可能にします。これは、権限の付けられた他のホストプロジェクト、ホストマウント、またはコンテナーを使用するか、または MKNODE、SYS_MODULE などの特定のプロジェクト以外の機能を使用するコンテナー用です。これは、ユーザープロジェクトの再マップが Docker デーモンで有効にされる場合にのみ有効にされる必要があります。

GCERegionalPersistentDisk

GCE 永続ディスク機能を有効にします。

HugePages

事前に割り当てられた Huge Page の割り当ておよび消費を有効にします。

HyperVContainer

Windows コンテナーの Hyper-V の分離を有効にします。

Intializers

ビルトインの受付コントローラーの拡張として動的な受付制御を有効にします。

LocalStorageCapacityIsolation

ローカルの一時ストレージの消費、および emptyDir ボリュームの sizeLimit プロパティーを有効にします。

MountContainers

ホストでのユーティリティーコンテナーのボリュームマウントとしての使用を有効にします。

MountPropagation

1 つのコンテナーでマウントされたボリュームの他のコンテナーまたは Pod との共有を有効にします。

PersistentLocalVolumes

ローカルボリューム Pod の使用を有効にします。Pod のアフィニティーは、ローカルボリュームを要求する場合に指定される必要があります。

PodPriority

優先順位に基づく Pod の再スケジュール (Descheduling) およびプリエンプションを有効にします。

ReadOnlyAPIDataVolumes

シークレットConfigMap、DownwardAPI、および Projected ボリュームが読み取り専用モードでマウントされるように設定します。

ResourceLimitsPriorityFunction

最も低いスコアの 1 を、1 つ以上の入力 Pod CPU およびメモリー制限を満たすノードに割り当てるschedulerの優先度関数を有効にします。これは、同じスコアを持つノード間の関連性を切り離すことを目的としています。

RotateKubeletClientCertificate

クラスター上でのクラスター TLS 証明書のローテーションを有効にします。

RotateKubeletServerCertificate

クラスター上でのサーバー TLS 証明書のローテーションを有効にします。

RunAsGroup

コンテナーの init プロセスのプライマリーグループ ID セットに対する制御を有効にします。

ScheduleDaemonSetPods

DaemonSet Pod を DaemonSet コントローラーではなくデフォルトスケジューラーでスケジュールされることを可能にします。

ServiceNodeExclusion

クラウドプロバイダーで作成されたロードバランサーからのノードの除外を有効にします。

StorageObjectInUseProtection

永続ボリュームまたはPersistent Volume Claim (永続ボリューム要求、PVC) オブジェクトが依然として使用されている場合、これらの削除の延期を有効にします。

StreamingProxyRedirects

API サーバーに対し、ストリーミング要求についてインターセプトおよびバックエンド kubelet からのリダイレクトをフォローするように指示します。

SupportIPVSProxyMode

IP 仮想サーバーを使用したクラスター内のサービスの負荷分散を有効にします。

SupportPodPidsLimit

Pod で実行されるプロセス数 (PID) を制限するサポートを有効にします。

TaintBasedEvictions

ノードのテイントおよび Pod の容認に基づく Pod のノードからのエビクトを有効にします。

TaintNodesByCondition

ノードの状態に基づく自動的なノードのテイントを有効にします。

TokenRequest

サービスアカウントリソースで TokenRequest エンドポイントを有効にします。

VolumeScheduling

ボリュームトポロジー対応のスケジューリングを有効にし、Persistent Volume Claim (永続ボリューム要求、PVC)のバインディングにスケジューリングの意思決定を認識させます。また、PersistentLocalVolumes 機能ゲートと使用される場合のローカルボリュームタイプの使用も有効にします。