第16章 ワークロードの分割
ワークロードパーティショニングは、コンピュートノード CPU リソースを個別の CPU セットに分割します。主な目的は、指定されたコア上にプラットフォーム Pod を維持し、顧客のワークロードが実行されている CPU が中断されないようにすることです。
ワークロードパーティショニングを使用して、OpenShift Container Platform サービス、クラスター管理ワークロード、およびインフラストラクチャー Pod が分離され、予約された CPU セットで実行されます。これにより、クラスターデプロイメント内の残りの CPU はそのまま残り、非プラットフォームワークロード専用に使用できるようになります。クラスター管理に必要な予約済み CPU の最小数は、4 つの CPU ハイパースレッド (HT) です。
ワークロードのパーティショニングを有効にし、CPU リソースを効果的に管理するという観点から、正しく設定されていないノードは、ノードアドミッション Webhook を介してクラスターに参加することはできません。ワークロードパーティショニング機能を有効にすると、コントロールプレーンとワーカーのマシン設定プールに、ノードが使用する設定が提供されます。これらのプールに新しいノードを追加すると、クラスターに参加する前にノードが正しく設定されていることが確認されます。
現在、プール内のすべてのノードにわたって正しい CPU アフィニティーが設定されるようにするには、ノードはマシン設定プールごとに均一な設定を持つ必要があります。承認後、クラスター内のノードは、management.workload.openshift.io/cores
と呼ばれる新しいリソースタイプをサポートしていると認識し、CPU 容量を正確に報告します。ワークロードパーティショニングは、クラスターのインストール中に install-config.yaml
ファイルに cpuPartitioningMode
フィールドを追加することによってのみ有効にできます。
ワークロードの分割が有効になっている場合、スケジューラーは management.workload.openshift.io/cores
リソースにより、デフォルトの cpuset
だけでなく、ホストの cpushares
容量に基づいて Pod を適切に割り当てることができます。これにより、ワークロードパーティショニングシナリオでのリソースの割り当てがより正確になります。
ワークロードのパーティショニングにより、Pod の設定で指定された CPU 要求と制限が尊重されるようになります。OpenShift Container Platform 4.16 以降では、CPU パーティショニングを通じてプラットフォーム Pod に正確な CPU 使用率制限が設定されます。ワークロードパーティショニングでは、management.workload.openshift.io/cores
のカスタムリソースタイプが使用されるため、Kubernetes による拡張リソースの要件により、リクエストと制限の値は同じになります。ただし、ワークロードパーティショニングによって変更されたアノテーションは、必要な制限を正しく反映します。
拡張リソースはオーバーコミットできないため、コンテナー仕様にリクエストと制限の両方が存在する場合は、リクエストと制限が等しくなければなりません。
16.1. ワークロードパーティショニングの有効化
ワークロードパーティショニングでは、クラスター管理 Pod にアノテーションが付けられ、指定された CPU アフィニティーに正しくパーティション分割されます。これらの Pod は、Performance Profile の予約値によって指定された最小サイズの CPU 設定内で正常に動作します。プラットフォーム用に確保する CPU コアの数を計算する際には、ワークロードパーティショニングを利用する追加の Day 2 Operator を考慮する必要があります。
ワークロード分割は、標準の Kubernetes スケジューリング機能を使用して、ユーザーワークロードをプラットフォームワークロードから分離します。
ワークロードパーティショニングを有効にできるのは、クラスターのインストール時のみです。インストール後にワークロードパーティショニングを無効にすることはできません。ただし、reserved
CPU と isolated
CPU の CPU 設定はインストール後に変更できます。
クラスター全体でワークロードパーティショニングを有効にするには、次の手順を使用します。
手順
install-config.yaml
ファイルに、追加フィールドcpuPartitioningMode
を追加し、それをAllNodes
に設定します。apiVersion: v1 baseDomain: devcluster.openshift.com cpuPartitioningMode: AllNodes 1 compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: {} replicas: 3 controlPlane: architecture: amd64 hyperthreading: Enabled name: master platform: {} replicas: 3
- 1
- インストール時に CPU のパーティショニング用クラスターをセットアップします。デフォルト値は
None
です。