3.8. 通信事業者コア RDS のコンポーネント
以下のセクションでは、通信事業者コアワークロードを実行するためにクラスターを設定およびデプロイするために使用するさまざまな OpenShift Container Platform コンポーネントと設定を説明します。
3.8.1. CPU パーティショニングとパフォーマンスチューニング リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
- CPU パーティショニングは、機密性の高いワークロードを、汎用タスク、割り込み、およびドライバー作業キューから分離することで、パフォーマンスを向上させ、レイテンシーを削減します。このような補助的なプロセスに割り当てられた CPU のことを、次のセクションでは 予約済み CPU と呼びます。ハイパースレッディングが有効なシステムでは、CPU は 1 つのハイパースレッドになります。
- 制限と要件
オペレーティングシステムでは、カーネルネットワークを含むすべてのサポートタスクを実行するために、一定量の CPU が必要です。
- ユーザープレーンネットワークアプリケーション (DPDK) のみを備えたシステムでは、オペレーティングシステムとインフラストラクチャーコンポーネント用に、少なくとも 1 つのコア (ハイパースレッディングが有効な場合は 2 つのハイパースレッド) が予約されている必要があります。
- ハイパースレッディングが有効なシステムでは、コアシブリングスレッドが常に同じ CPU プール内にある必要があります。
- 予約済みコアと分離されたコアのセットには、すべての CPU コアが含まれている必要があります。
- 各 NUMA ノードのコア 0 は、予約済み CPU セットに含める必要があります。
- 低レイテンシーのワークロードでは、割り込み、カーネルスケジューラー、またはプラットフォームの他の部分による影響を受けないように特別な設定が必要です。詳細は、「パフォーマンスプロファイルの作成」を参照してください。
- エンジニアリングに関する考慮事項
-
OpenShift Container Platform 4.19 以降、
cgroup v1
がサポートされなくなり、削除されました。すべてのワークロードにcgroup v2
との互換性がある必要があります。詳細は、Red Hat Enterprise Linux 9 changes in the context of Red Hat OpenShift workloads (Red Hat ナレッジベース) を参照してください。 -
必要な最小予約容量 (
systemReserved
) は、Red Hat ナレッジベースソリューション Which amount of CPU and memory are recommended to reserve for the system in OCP 4 nodes? のガイダンスに従って確認できます。 - 実際に必要な予約済み CPU 容量は、クラスターの設定とワークロードの属性によって異なります。
- 予約済み CPU の値は、フルコア (2 ハイパースレッド) に合わせて切り上げる必要があります。
- CPU パーティショニングを変更すると、関連するマシン設定プールに含まれるノードがドレインされ、再起動されます。
- 予約済み CPU は Pod 密度を低下させます。予約済み CPU は、OpenShift Container Platform ノードの割り当て可能な容量から削除されるためです。
ワークロードがリアルタイム対応である場合は、リアルタイムワークロードヒントを有効にする必要があります。
-
リアルタイム
workloadHint
設定を適用すると、nohz_full
カーネルコマンドラインパラメーターが適用され、高パフォーマンスアプリケーションのパフォーマンスが向上します。workloadHint
設定を適用すると、cpu-quota.crio.io: "disable"
アノテーションと適切なruntimeClassName
値を持たない分離された Pod または Burstable Pod が、CRI-O のレート制限の対象となります。workloadHint
パラメーターを設定するときは、パフォーマンスの向上と CRI-O のレート制限による潜在的な影響との間のトレードオフに注意してください。必要な Pod にアノテーションが正しく付けられていることを確認してください。
-
リアルタイム
- IRQ アフィニティーをサポートしていないハードウェアは、分離された CPU に影響します。Guaranteed CPU QoS を持つ Pod が割り当てられた CPU を完全に使用できるように、すべてのサーバーハードウェアが IRQ アフィニティーをサポートしている必要があります。
-
OVS が、ネットワークトラフィックのニーズに合わせて、OVS の
cpuset
エントリーを動的に管理します。プライマリー CNI で高いネットワークスループットを処理するために、追加の CPU を予約する必要はありません。 - クラスター上で実行されているワークロードがカーネルレベルのネットワークを使用する場合、参加している NIC の RX/TX キュー数を 16 または 32 キューに設定する必要があります (ハードウェアが許す場合)。デフォルトのキュー数に注意してください。設定がない場合、デフォルトのキュー数は、オンラインの CPU ごとに 1 つの RX/TX キューです。この場合、割り当てられる割り込みが多すぎる可能性があります。
コア数の多いシステムでは、irdma カーネルモジュールが原因で、割り込みベクトルの割り当てが多くなりすぎる可能性があります。この状態を防ぐために、リファレンス設定では、
PerformanceProfile
のカーネルコマンドライン引数によるこのカーネルモジュールの読み込みを除外します。通常、コアワークロードではこのカーネルモジュールは必要ありません。注記ドライバーによっては、キューの数を減らした後でも、割り込みの割り当てが解除されません。
-
OpenShift Container Platform 4.19 以降、
3.8.2. サービスメッシュ リンクのコピーリンクがクリップボードにコピーされました!
- 説明
- 通信事業者コアのクラウドネイティブ機能 (CNF) には通常、サービスメッシュの実装が必要です。特定のサービスメッシュ機能とパフォーマンス要件は、アプリケーションによって異なります。Service Mesh の実装と設定の選択は、このドキュメントの範囲外です。実装では、Pod ネットワーキングで導入される追加のレイテンシーなど、サービスメッシュがクラスターリソースの使用状況とパフォーマンスに与える影響を考慮する必要があります。
3.8.3. ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
次の図は、通信事業者コアリファレンス設計のネットワーク設定を示しています。
図3.2 通信事業者コアリファレンス設計のネットワーク設定
- このリリースの変更点
- Pod レベルのボンディングを含むように、通信事業者コアの検証が拡張されました。
- SR-IOV Operator において、リソースインジェクターで適用に失敗したポリシーを失敗状態に移行させる機能がサポートされました。
metallb-system
namespace にカスタムの FRRConfiguration
CR がある場合は、それを openshift-network-operator
namespace に移動する必要があります。
- 説明
- クラスターをデュアルスタック IP (IPv4 と IPv6) 用に設定します。
- 検証済みの物理ネットワーク設定は、2 つのデュアルポート NIC で構成されています。1 つの NIC は、プライマリー CNI (OVN-Kubernetes) と IPVLAN および MACVLAN トラフィック間で共有されます。もう 1 つの NIC は、SR-IOV VF ベースの Pod トラフィック専用です。
-
2 つの NIC ポートがアタッチされたアクティブ/アクティブ IEEE 802.3ad LACP モードで、Linux ボンディングインターフェイス (
bond0
) を作成します。トップオブラックネットワーク機器は、マルチシャーシリンクアグリゲーション (mLAG) テクノロジーをサポートし、そのように設定されている必要があります。 -
VLAN インターフェイスは、プライマリー CNI を含め、
bond0
の上に作成されます。 -
ボンディングおよび VLAN インターフェイスは、クラスターのインストール時に、インストールのネットワーク設定段階で作成されます。プライマリー CNI によって使用される VLAN (
vlan0
) を除き、他のすべての VLAN は、Kubernetes NMstate Operator を使用して Day 2 アクティビティー中に作成できます。 - MACVLAN および IPVLAN インターフェイスは、対応する CNI を使用して作成されます。同じ基本インターフェイスを共有することはありません。詳細は、「Cluster Network Operator」を参照してください。
- SR-IOV VF は SR-IOV Network Operator によって管理されます。
-
LoadBalancer サービスの背後にある Pod のソース IP アドレスの一貫性を確保するために、
EgressIP
CR を設定し、podSelector
パラメーターを指定します。 次の手順を実行することで、サービストラフィックの分離を実装できます。
-
NodeNetworkConfigurationPolicy
CR を使用して、ノード上の VLAN インターフェイスと特定のカーネル IP ルートを設定します。 -
VLAN ごとに MetalLB
BGPPeer
CR を作成して、リモート BGP ルーターとのピアリングを確立します。 -
MetalLB
BGPAdvertisement
CR を定義して、選択したBGPPeer
リソースのリストにアドバタイズする IP アドレスプールを指定します。次の図は、特定のサービス IP アドレスを、特定の VLAN インターフェイスを介して外部にアドバタイズする方法を示しています。サービスルートは、BGPAdvertisement
CR で定義され、IPAddressPool1
およびBGPPeer1
フィールドの値を使用して設定されます。
-
図3.3 通信事業者コアリファレンス設計の MetalLB サービス分離
3.8.3.1. Cluster Network Operator リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
Cluster Network Operator (CNO) は、クラスターのインストール中に、デフォルトの OVN-Kubernetes ネットワークプラグインを含むクラスターネットワークコンポーネントをデプロイおよび管理します。CNO を使用すると、プライマリーインターフェイスの MTU 設定、Pod の Egress にノードルーティングテーブルを使用するための OVN ゲートウェイ設定、および MACVLAN などの追加のセカンダリーネットワークを設定できます。
ネットワークトラフィックの分離をサポートするために、CNO を通じて複数のネットワークインターフェイスが設定されます。これらのインターフェイスへのトラフィックステアリングは、NMState Operator を使用して適用される静的ルートを通じて設定されます。Pod トラフィックが適切にルーティングされるように、OVN-K は
routingViaHost
オプションを有効にして設定されます。この設定では、Pod の Egress トラフィックに OVN ではなくカーネルルーティングテーブルと適用された静的ルートを使用します。Whereabouts CNI プラグインは、DHCP サーバーを使用せずに、追加の Pod ネットワークインターフェイスに動的な IPv4 および IPv6 アドレス指定を提供するために使用されます。
- 制限と要件
- IPv6 サポートには OVN-Kubernetes が必要です。
- 大規模 MTU クラスターをサポートするには、接続されたネットワーク機器を同じ値またはそれ以上の値に設定する必要があります。最大 8900 の MTU サイズがサポートされます。
MACVLAN と IPVLAN は、同じ基礎カーネルメカニズム、具体的には
rx_handler
に依存しているため、同じメインインターフェイス上に配置できません。このハンドラーを使用すると、ホストが受信パケットを処理する前にサードパーティーモジュールが受信パケットを処理できるようになります。このようなハンドラーは、ネットワークインターフェイスごとに 1 つだけ登録できます。MACVLAN と IPVLAN は両方とも、機能するために独自のrx_handler
を登録する必要があるため、競合が発生し、同じインターフェイス上で共存することはできません。詳細はソースコードを確認してください。- 代替の NIC 設定としては、共有 NIC を複数の NIC に分割したり、単一のデュアルポート NIC を使用したりすることが考えられます。ただし、これらはテストおよび検証されていません。
- シングルスタック IP 設定のクラスターは検証されていません。
-
Network
CR のreachabilityTotalTimeoutSeconds
パラメーターで、EgressIP
ノードの到達可能性チェックの合計タイムアウトを秒単位で設定します。推奨値は1
秒です。 -
Pod レベルの SR-IOV ボンディングモードを
active-backup
に設定し、miimon
の値を設定する必要があります (100
を推奨)。
- エンジニアリングに関する考慮事項
-
Pod の Egress トラフィックは、
routingViaHost
オプションを使用してカーネルルーティングテーブルによって処理されます。ホストに適切な静的ルートを設定する必要があります。
-
Pod の Egress トラフィックは、
3.8.3.2. ロードバランサー リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
metallb-system
namespace にカスタムの FRRConfiguration
CR がある場合は、それを openshift-network-operator
namespace に移動する必要があります。
- 説明
- MetalLB は、標準ルーティングプロトコルを使用するベアメタル Kubernetes クラスターのロードバランサー実装です。これを使用すると、Kubernetes サービスが外部 IP アドレスを取得できます。この IP アドレスは、クラスターのホストネットワークにも追加されます。MetalLB Operator により、クラスターに MetalLB のインスタンスがデプロイされ、そのライフサイクルが管理されます。ユースケースによっては、ステートフルロードバランシングなど、MetalLB では利用できない機能が必要になる場合があります。必要に応じて、外部のサードパーティーロードバランサーを使用できます。外部ロードバランサーの選択と設定は、この仕様の範囲外です。外部のサードパーティーロードバランサーを使用する場合、統合作業の一環として十分な分析を実行し、パフォーマンスとリソース使用率の要件がすべて満たされていることを確認する必要があります。
- 制限と要件
- ステートフルロードバランシングは MetalLB ではサポートされていません。これがワークロード CNF の要件である場合は、代替ロードバランサー実装を使用する必要があります。
- 外部 IP アドレスがクライアントからクラスターのホストネットワークにルーティング可能であることを確認する必要があります。
- エンジニアリングに関する考慮事項
- MetalLB は、通信事業者コア使用モデルでは、BGP モードでのみ使用されます。
-
通信コア使用モデルの場合、MetalLB は、OVN-Kubernetes ネットワークプラグインの
ovnKubernetesConfig.gatewayConfig
仕様でroutingViaHost=true
を設定した場合にのみサポートされます。「Cluster Network Operator」のroutingViaHost
を参照してください。 MetalLB の BGP 設定は、ネットワークとピアの要件に応じて変化することが予想されます。
- アドレス、アグリゲーション長、自動割り当てなどのバリエーションを使用してアドレスプールを設定できます。
-
MetalLB はルートのアナウンスにのみ BGP を使用します。このモードでは、
transmitInterval
およびminimumTtl
パラメーターのみが関連します。BFD プロファイル内の他のパラメーターは、デフォルトに近い値にしておく必要があります。値を短くすると、検出漏れが発生し、パフォーマンスに影響する可能性があるためです。
3.8.3.3. SR-IOV リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- SR-IOV Operator において、リソースインジェクターで適用に失敗したポリシーを失敗状態に移行させる機能がサポートされました。
- 説明
- SR-IOV を使用すると、Physical Function (PF) を複数の Virtual Function (VF) に分割できます。その後、VF を複数の Pod に割り当てることで、Pod を分離したまま、より高いスループットパフォーマンスを実現できます。SR-IOV Network Operator は、SR-IOV CNI、ネットワークデバイスプラグイン、および SR-IOV スタックのその他のコンポーネントをプロビジョニングおよび管理します。
- 制限と要件
- 特定のネットワークインターフェイスだけがサポートされています。詳細は、「サポートされるデバイス」を参照してください。
- SR-IOV と IOMMU の有効化: SR-IOV Network Operator により、カーネルコマンドラインで IOMMU が自動的に有効化されます。
- SR-IOV VF は PF からリンク状態の更新を受信しません。リンクダウンの検出が必要な場合は、プロトコルレベルで実行する必要があります。
-
MultiNetworkPolicy
CR は、netdevice
ネットワークにのみ適用できます。これは、vfio インターフェイスを管理できない iptables が実装で使用されるためです。
- エンジニアリングに関する考慮事項
-
vfio
モードの SR-IOV インターフェイスは通常、高スループットまたは低レイテンシーを必要とするアプリケーション用に追加のセカンダリーネットワークを有効にするために使用されます。 -
SriovOperatorConfig
CR を明示的に作成する必要があります。この CR はリファレンス設定ポリシーに含まれているため、初期デプロイ時に作成されます。 - UEFI セキュアブートまたはカーネルロックダウンを使用したファームウェア更新をサポートしていない NIC は、アプリケーションワークロードに必要な数の Virtual Function (VF) をサポートするために、十分な数の VF を有効にして事前設定する必要があります。Mellanox NIC の場合、SR-IOV Network Operator で Mellanox ベンダープラグインを無効にする必要があります。詳細は、「SR-IOV ネットワークデバイスの設定」を参照してください。
-
Pod の起動後に VF の MTU 値を変更する場合、
SriovNetworkNodePolicy
の MTU フィールドを設定しないでください。代わりに、Kubernetes NMState Operator を使用して、関連する PF の MTU を設定してください。
-
3.8.3.4. NMState Operator リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
- Kubernetes NMState Operator は、クラスターノード全体でステートドリブンのネットワーク設定を実行するための Kubernetes API を提供します。これにより、ネットワークインターフェイス設定、静的 IP と DNS、VLAN、トランク、ボンディング、静的ルート、MTU、およびセカンダリーインターフェイスでの無差別モードの有効化が可能になります。クラスターノードは、各ノードのネットワークインターフェイスの状態を API サーバーに定期的に報告します。
- 制限と要件
- 該当なし
- エンジニアリングに関する考慮事項
-
初期ネットワーク設定は、インストール CR の
NMStateConfig
コンテンツを使用して適用されます。NMState Operator は、ネットワーク更新に必要な場合にのみ使用されます。 -
SR-IOV の Virtual Function がホストネットワークに使用される場合、NMState Operator (
nodeNetworkConfigurationPolicy
CR) を使用して、VLAN や MTU などの VF インターフェイスが設定されます。
-
初期ネットワーク設定は、インストール CR の
3.8.4. ロギング リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
- Cluster Logging Operator を使用すると、リモートアーカイブと分析のために、ノードからログを収集して送信できます。リファレンス設定では、Kafka を使用して監査ログとインフラストラクチャーログをリモートアーカイブに送信します。
- 制限と要件
- 該当なし
- エンジニアリングに関する考慮事項
- クラスターの CPU 使用率の影響は、生成されるログの数またはサイズと、設定されたログフィルタリングの量によって決まります。
- リファレンス設定には、アプリケーションログの送信は含まれていません。設定にアプリケーションログを含めるには、アプリケーションのロギングレートを評価し、予約セットに十分な追加の CPU リソースを割り当てる必要があります。
3.8.5. 電源管理 リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
- パフォーマンスプロファイルを使用して、高電力モード、低電力モード、または混合モードでクラスターを設定します。電源モードの選択は、クラスター上で実行しているワークロードの特性、特にレイテンシーに対する敏感さによって異なります。Pod ごとの電源管理 C ステート機能を使用して、低レイテンシー Pod の最大遅延を設定します。
- 制限と要件
- 電源設定は、C ステートや P ステートの有効化など、適切な BIOS 設定に依存します。設定はハードウェアベンダーによって異なります。
- エンジニアリングに関する考慮事項
- レイテンシー: レイテンシーの影響を受けやすいワークロードが要件を満たせるように、高電力設定または Pod ごとの電源管理設定が必要です。Pod ごとの電源管理は、専用のピニングされた CPU を持つ Guaranteed QoS Pod でのみ使用できます。
3.8.6. ストレージ リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
クラウドネイティブのストレージサービスを、OpenShift Data Foundation またはその他のサードパーティーソリューションによって提供できます。
OpenShift Data Foundation は、コンテナー向けの Red Hat Ceph Storage ベースのソフトウェア定義ストレージソリューションです。ブロックストレージ、ファイルシステムストレージ、オンプレミスオブジェクトストレージを提供し、永続的および非永続的なデータ要件の両方に合わせて動的にプロビジョニングできます。通信事業者コアアプリケーションには永続的なストレージが必要です。
注記すべてのストレージデータが転送中に暗号化されるとは限りません。リスクを軽減するには、ストレージネットワークを他のクラスターネットワークから分離します。ストレージネットワークは、他のクラスターネットワークからアクセス可能またはルーティング可能であってはなりません。ストレージネットワークに直接接続されているノードのみがストレージネットワークにアクセスできるようにする必要があります。
3.8.6.1. OpenShift Data Foundation リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- 内部モードと外部モードの比較および RDS の推奨事項の説明。
- 説明
OpenShift Data Foundation は、コンテナー向けのソフトウェア定義ストレージサービスです。OpenShift Data Foundation は、次のどちらかのモードでデプロイできます。* 内部モード: OpenShift Data Foundation のソフトウェアコンポーネントが、他のコンテナー化されたアプリケーションとともに、OpenShift Container Platform クラスターノード上にソフトウェアコンテナーとして直接デプロイされます。* 外部モード: OpenShift Data Foundation は専用のストレージクラスター (通常は Red Hat Enterprise Linux (RHEL) 上で実行される別の Red Hat Ceph Storage クラスター) にデプロイされます。これらのストレージサービスは、アプリケーションワークロードクラスターの外部で実行されます。
通信事業者コアクラスターの場合、ストレージのサポートは、次の理由により、外部モードで実行される OpenShift Data Foundation ストレージサービスによって提供されます。
- OpenShift Container Platform の操作と Ceph の操作間の依存関係を分離することで、OpenShift Container Platform と OpenShift Data Foundation を独立して更新できます。
- 通信事業者コアのユースケースでは、ストレージと OpenShift Container Platform インフラストラクチャー層の操作機能を分離することが、お客様の要件として一般的に求められています。
- 外部の Red Hat Ceph Storage クラスターは、同じリージョンにデプロイされた複数の OpenShift Container Platform クラスターで再利用できます。
OpenShift Data Foundation は、セカンダリー CNI ネットワークを使用したストレージトラフィックの分離をサポートします。
- 制限と要件
- IPv4/IPv6 デュアルスタックネットワーク環境では、OpenShift Data Foundation は IPv4 アドレスを使用します。詳細は、IPv6 サポート を参照してください。
- エンジニアリングに関する考慮事項
- OpenShift Data Foundation ネットワークトラフィックは、VLAN 分離などを使用して、専用ネットワーク上の他のトラフィックから分離する必要があります。
- 十分なスループット、帯域幅、およびパフォーマンス KPI を確保するために、複数の OpenShift Container Platform クラスターを外部の OpenShift Data Foundation クラスターに接続する前に、ワークロード要件のスコープを設定する必要があります。
3.8.6.2. 追加のストレージソリューション リンクのコピーリンクがクリップボードにコピーされました!
他のストレージソリューションを使用して、通信事業者コアクラスターに永続的なストレージを提供することもできます。このソリューションの設定と統合は、リファレンス設計仕様 (RDS) の範囲外です。
ストレージソリューションを通信事業者コアクラスターに統合する場合は、適切なサイズ設定とパフォーマンス分析を行い、ストレージが全体的なパフォーマンスとリソース使用率の要件を満たしていることを確認する必要があります。
3.8.7. 通信事業者コアデプロイメントのコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、Red Hat Advanced Cluster Management (RHACM) を使用してハブクラスターを設定するために使用するさまざまな OpenShift Container Platform コンポーネントと設定を説明します。
3.8.7.1. Red Hat Advanced Cluster Management リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- ポリシーを管理し、マネージドクラスターにデプロイするには、RHACM と PolicyGenerator CR を使用する方法が推奨されます。これは、この目的のために PolicyGenTemplate CR を使用することに代わる方法です。
- 説明
RHACM は、デプロイされたクラスターに対して、Multi Cluster Engine (MCE) のインストールと継続的な GitOps ZTP ライフサイクル管理を提供します。管理者は、メンテナンス期間中に
Policy
カスタムリソース (CR) をクラスターに適用することで、クラスターの設定とアップグレードを宣言的に管理します。管理者は、TALM によって管理される RHACM ポリシーコントローラーを使用してポリシーを適用します。設定、アップグレード、およびクラスターのステータスは、ポリシーコントローラーを通じて管理されます。
マネージドクラスターをインストールすると、RHACM は、カスタムディスクパーティション分割、ロールの割り当て、マシン設定プールへの割り当てをサポートするために、個々のノードにラベルと初期イグニッション設定を適用します。これらの設定は、
SiteConfig
またはClusterInstance
CR を使用して定義します。- 制限と要件
- ハブクラスターのサイズ設定は、クラスターのサイジング で説明されています。
- RHACM のスケーリング制限は、パフォーマンスおよびスケーラビリティー で説明されています。
- エンジニアリングに関する考慮事項
- インストール、サイト、またはデプロイメントごとに固有のコンテンツを持つ複数のクラスターを管理する場合は、RHACM ハブテンプレートを使用することを強く推奨します。RHACM ハブテンプレートを使用すると、インストールごとに固有の値を指定しながら、一貫したポリシーセットをクラスターに適用できます。
3.8.7.2. Topology Aware Lifecycle Manager リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
TALM は、ハブクラスター上でのみ実行される Operator です。TALM は、クラスターや Operator のアップグレード、設定などの変更をネットワーク内のマネージドクラスターにどのようにデプロイするかを管理します。TALM には次のコア機能があります。
- クラスターポリシーの定義に従って、クラスター設定とアップグレード (OpenShift Container Platform および Operator) を順次更新します。
- クラスター更新の遅延適用を提供します。
- ユーザーが設定可能なバッチで、クラスターのセットにポリシー更新を段階的にロールアウトできます。
-
ztp-done
または同様のユーザー定義ラベルをクラスターに追加することで、クラスターごとのアクションを実行できます。
- 制限と要件
- 400 個のバッチでクラスターを同時にデプロイできます。
- エンジニアリングに関する考慮事項
-
クラスターの初期インストール中に、TALM によって
ran.openshift.io/ztp-deploy-wave
アノテーションが付いたポリシーのみが適用されます。 -
ユーザーが作成した
ClusterGroupUpgrade
CR の制御下で、TALM によって任意のポリシーを修正できます。
-
クラスターの初期インストール中に、TALM によって
3.8.7.3. GitOps Operator および ZTP プラグイン リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
GitOps Operator は、クラスターのデプロイメントと設定を管理するための GitOps 駆動型インフラストラクチャーを提供します。クラスターの定義と設定は Git リポジトリーで管理されます。
ZTP プラグインは、
SiteConfig
CR からInstallation
CR を生成し、RHACM のPolicyGenerator
CR に基づいてポリシーに設定 CR を自動的にラップすることをサポートします。SiteConfig Operator は、
ClusterInstance
CR からのInstallation
CR の生成に対するサポートを強化します。重要クラスターのインストールには、ZTP プラグイン方式を使用した
SiteConfig
カスタムリソースよりもClusterInstance
CR を使用する方が推奨されます。必要なすべてのアーティファクト (
SiteConfig
、ClusterInstance
、PolicyGenerator
、PolicyGenTemplate
、および補助的なリファレンス CR) を含めて、リリースバージョンに応じて Git リポジトリーを設定する必要があります。これにより、複数のバージョンの OpenShift Container Platform と設定バージョンを、同時に、またアップグレードを通じてクラスターにデプロイして管理できるようになります。Git の構造に関しては、お客様またはパートナーが提供するコンテンツとは別のディレクトリーにリファレンス CR を保管することが推奨されます。これにより、既存のコンテンツを上書きするだけで参照の更新をインポートできます。お客様またはパートナーが提供する CR は、生成された設定ポリシーに簡単に組み込めるように、リファレンス CR と同じ階層のディレクトリーで提供できます。
- 制限と要件
- 各 ArgoCD アプリケーションは最大 1000 個のノードをサポートします。複数の ArgoCD アプリケーションを使用すると、1 つのハブクラスターでサポートされるクラスターの最大数を実現できます。
SiteConfig
CR は、参照マニフェストを参照するためにextraManifests.searchPaths
フィールドを使用する必要があります。注記OpenShift Container Platform 4.15 以降、
spec.extraManifestPath
フィールドは非推奨になりました。
- エンジニアリングに関する考慮事項
クラスターアップグレードのメンテナンス期間中に
MachineConfigPool
(MCP
) CR のpaused
フィールドを true に設定し、maxUnavailable
フィールドを最大許容値に設定します。これにより、アップグレード中に複数のクラスターノードが再起動されることがなくなり、全体的なアップグレード時間が短縮されます。mcp
CR の一時停止を解除すると、すべての設定変更が 1 回の再起動で適用されます。注記インストール中にカスタムの
MCP
CR を一時停止し、maxUnavailable
を 100% に設定すると、インストール時間を短縮できます。-
コンテンツを更新するときに混乱や意図しない上書きを避けるために、core-overlay 配下の
reference-crs/
ディレクトリー内のカスタム CR と git 内の追加マニフェストには、一意で区別できる名前を使用する必要があります。 -
SiteConfig
CR では、複数の追加マニフェストパスが許可されます。複数のディレクトリーパスでファイル名が重複している場合は、ディレクトリー順序リストで最後に見つかったファイルが優先されます。
3.8.7.4. モニタリング リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
OpenShift Container Platform には Cluster Monitoring Operator (CMO) がデフォルトで含まれています。CMO は、プラットフォームコンポーネントと、必要に応じてユーザープロジェクトのモニタリング (メトリクス、ダッシュボード、アラート) を提供します。
管理者は、デフォルトのログ保持期間、カスタムアラートルールなどをカスタマイズできます。
アップストリームの Kubernetes と cAdvisor に基づく、Pod の CPU およびメモリーメトリクスのデフォルト処理では、メトリクスの精度よりも古いデータを優先するというトレードオフが行われます。これによりレポートが急増し、ユーザーが指定したしきい値によっては、誤ったアラートが作成される可能性があります。
OpenShift Container Platform は、オプトイン方式の Dedicated Service Monitor 機能をサポートしています。この機能は、上記のような動作の影響を受けない、Pod の CPU およびメモリーメトリクスの追加セットを作成するものです。詳細は、Red Hat ナレッジベースソリューション Dedicated Service Monitors - Questions and Answers を参照してください。
デフォルト設定に加えて、通信事業者コアクラスターには次のメトリクスが設定されることが予想されます。
- ユーザーワークロードの Pod CPU とメモリーのメトリクスとアラート
- 制限と要件
- Pod メトリクスを正確に表現するには、Dedicated Service Monitor 機能を有効にする必要があります。
- エンジニアリングに関する考慮事項
- Prometheus の保持期間はユーザーによって指定されます。使用される値は、クラスター上の履歴データを維持するための運用要件と、CPU およびストレージリソースとの間のトレードオフです。保持期間が長くなると、ストレージの必要性が高まり、データのインデックス管理に追加の CPU が必要になります。
3.8.8. スケジューリング リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
スケジューラーは、特定のワークロードに対して適切なノードを選択するロールを担う、クラスター全体のコンポーネントです。これはプラットフォームの中核部分であり、一般的なデプロイメントシナリオでは特別な設定は必要ありません。ただし、次のセクションで説明する具体的な使用例はほとんどありません。
NUMA 対応スケジューリングは、NUMA リソース Operator を通じて有効にできます。詳細は、「NUMA 対応ワークロードのスケジューリング」を参照してください。
- 制限と要件
デフォルトのスケジューラーはワークロードの NUMA 局所性を理解しません。ワーカーノード上のすべての空きリソースの合計のみを認識します。これにより、Topology Manager ポリシーが single-numa-node または restricted に設定されているノードにスケジュールされた場合に、ワークロードが拒否される可能性があります。詳細は、「Topology Manager ポリシー」を参照してください。
たとえば、6 個の CPU を要求し、NUMA ノードごとに 4 個の CPU を持つ空のノードにスケジュールされている Pod を考えてみましょう。ノードの割り当て可能な合計容量は 8 CPU です。スケジューラーは Pod を空のノードに配置します。各 NUMA ノードで使用できる CPU は 4 つしかないため、ノードのローカルアドミッションが失敗します。
-
複数の NUMA ノードを持つすべてのクラスターでは、NUMA Resources Operator を使用する必要があります。詳細は、「NUMA Resources Operator のインストール」を参照してください。NUMA 対応スケジューリングが必要なすべてのノードを選択するには、
KubeletConfig
CR のmachineConfigPoolSelector
フィールドを使用します。 - すべてのマシン設定プールに一貫したハードウェア設定を指定する必要があります。たとえば、すべてのノードに同じ NUMA ゾーン数を割り当てることが求められます。
- エンジニアリングに関する考慮事項
- Pod では、正しいスケジュールと分離のためにアノテーションが必要になる場合があります。アノテーションの詳細は、「CPU パーティショニングとパフォーマンスチューニング」を参照してください。
-
SriovNetworkNodePolicy
CR の excludeTopology フィールドを使用して、スケジューリング中に SR-IOV Virtual Function NUMA アフィニティーを無視するように設定できます。
3.8.9. ノード設定 リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 制限と要件
追加のカーネルモジュールを分析して、CPU 負荷、システムパフォーマンス、KPI を満たす能力への影響を判断してください。
Expand 表3.1 追加のカーネルモジュール 機能 説明 追加のカーネルモジュール
MachineConfig
CR を使用して次のカーネルモジュールをインストールし、CNF に拡張カーネル機能を提供します。- sctp
- ip_gre
- ip6_tables
- ip6t_REJECT
- ip6table_filter
- ip6table_mangle
- iptable_filter
- iptable_mangle
- iptable_nat
- xt_multiport
- xt_owner
- xt_REDIRECT
- xt_statistic
- xt_TCPMSS
コンテナーマウント namespace の非表示
kubelet のハウスキーピングとエビクションモニタリングの頻度を減らして、CPU 使用量を削減します。kubelet/CRI-O に認識されるコンテナーマウント namespace を作成し、システムマウントスキャンのオーバーヘッドを削減します。
Kdump の有効化
任意の設定 (デフォルトで有効)
3.8.10. ホストファームウェアとブートローダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- エンジニアリングに関する考慮事項
推奨される設定は、セキュアブートを有効にすることです。
注記セキュアブートを有効にすると、署名されたカーネルモジュールのみがカーネルによってロードされます。ツリー外のドライバーはサポートされていません。
3.8.11. 非接続環境 リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
通信事業者コアクラスターは、インターネットに直接アクセスできないネットワークにインストールされることが想定されています。クラスターのインストール、設定、および操作に必要なすべてのコンテナーイメージが、インターネット非接続環境のレジストリーで利用できる必要があります。これには、OpenShift Container Platform イメージ、Day 2 OLM Operator イメージ、アプリケーションワークロードイメージが含まれます。非接続環境を使用すると、次のような複数の利点が得られます。
- セキュリティー - クラスターへのアクセスが制限されます。
- キュレーションされたコンテンツ - クラスター用にキュレーションおよび承認された更新に基づいてレジストリーが作成されます。
- 制限と要件
-
すべてのカスタム
CatalogSource
リソースに一意の名前が必要です。デフォルトのカタログ名を再利用しないでください。
-
すべてのカスタム
- エンジニアリングに関する考慮事項
- クラスターのインストール中に有効なタイムソースを設定する必要があります。
3.8.12. Agent-based Installer リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
通信事業者コアクラスターは、Agent-based Installer を使用してインストールできます。この方法を使用すると、インストールを管理するための追加のサーバーや仮想マシンを必要とせずに、ベアメタルサーバーに OpenShift Container Platform をインストールできます。Agent-based Installer は、任意のシステム (ラップトップなど) で動作し、ISO インストールイメージを生成できます。この ISO は、クラスターのスーパーバイザーノードのインストールメディアとして使用されます。進行状況は、スーパーバイザーノードの API インターフェイスにネットワーク接続できる任意のシステムから Agent-based Installer を使用して監視できます。
Agent-based Installer は以下をサポートしています。
- 宣言型 CR からのインストール
- 非接続環境でのインストール
- インストールをサポートするための追加のサーバー (踏み台ノードなど) を使用しないインストール
- 制限と要件
- 非接続インストールの場合は、必要なすべてのコンテンツがミラーリングされたレジストリーに、インストールされたホストからアクセスできる必要があります。
- エンジニアリングに関する考慮事項
- ネットワーク設定は、インストール時に NMState 設定として適用する必要があります。NMState Operator を使用した Day 2 ネットワーク設定はサポートされていません。
3.8.13. セキュリティー リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
通信事業者のお客様は、セキュリティーを重視しており、複数の攻撃ベクトルに対してクラスターを強化する必要があります。OpenShift Container Platform には、クラスターを保護する単一のコンポーネントや機能はありません。以下では、通信事業者コア RDS で取り上げる使用モデルのさまざまなセキュリティー指向の機能と設定を説明します。
-
SecurityContextConstraints (SCC): すべてのワークロード Pod は、
restricted-v2
またはrestricted
SCC を使用して実行する必要があります。 -
Seccomp: すべての Pod は、
RuntimeDefault
(またはより強力な) seccomp プロファイルを使用して実行する必要があります。 - ルートレス DPDK Pod: 多くのユーザープレーンネットワーキング (DPDK) CNF では、Pod を root 権限で実行する必要があります。この機能を使用すると、ルート権限がなくても、準拠した DPDK Pod を実行できます。ルートレス DPDK Pod は、ルートレス Pod 内にタップデバイスを作成し、DPDK アプリケーションからカーネルにトラフィックを挿入します。
- ストレージ: ストレージネットワークは分離されており、他のクラスターネットワークにルーティングできないようにする必要があります。詳細は、「ストレージ」セクションを参照してください。
OpenShift Container Platform クラスターノードにカスタムの nftables ファイアウォールルールを実装する場合、サポートされている実装方法について、Red Hat ナレッジベースソリューションの記事 Custom nftable firewall rules in OpenShift を参照してください。この記事は、OpenShift Container Platform 環境でネットワークセキュリティーポリシーの管理を担当するクラスター管理者を対象としています。
この方法を導入する前に、次のような運用上の影響を慎重に検討することが重要です。
- 早期適用: ルールは、ネットワークが完全に稼働する前の起動時に適用されます。ルールによって、ブートプロセス中に必要な重要なサービスが誤ってブロックされないように注意してください。
- 設定ミスのリスク: カスタムルールに誤りがあると、意図しない結果が生じ、パフォーマンスに影響が出たり、正当なトラフィックがブロックされたり、ノードが分離される可能性があります。メインクラスターにルールをデプロイする前に、非実稼働環境でルールを十分にテストしてください。
- 外部エンドポイント: OpenShift Container Platform が機能するには、外部エンドポイントへのアクセスが必要です。ファイアウォールの許可リストの詳細は、「OpenShift Container Platform のファイアウォールの設定」を参照してください。クラスターノードが外部エンドポイントにアクセスできることを確認してください。
ノードの再起動: node disruption policy が設定されていない限り、必要なファイアウォール設定で
MachineConfig
CR を適用すると、ノードが再起動します。この影響に注意して、それに応じてメンテナンス期間をスケジュールしてください。詳細は、「node disruption policy を使用してマシン設定の変更による停止を最小限に抑える」を参照してください。注記node disruption policy は、OpenShift Container Platform 4.17 以降で利用できます。
- ネットワークフローマトリックス: Ingress トラフィックの管理の詳細は、「OpenShift Container Platform ネットワークフローマトリックス」を参照してください。Ingress トラフィックを重要なフローに制限して、ネットワークセキュリティーを強化できます。このマトリックスでは、ベースクラスターサービスに関する詳細情報が提供されていますが、Day-2 Operator によって生成されるトラフィックは対象外です。
- クラスターバージョンの更新とアップグレード: OpenShift Container Platform クラスターを更新またはアップグレードするときは注意してください。プラットフォームのファイアウォール要件に適用された最近の変更により、ネットワークポートの権限の調整が必要になる場合があります。ドキュメントにガイドラインが記載されていますが、この要件は今後変化する可能性があることに注意してください。システム停止を最小限に抑えるには、実稼働環境に適用する前に、ステージング環境で更新やアップグレードをテストする必要があります。これにより、ファイアウォール設定の変更に関連する潜在的な互換性の問題を特定して対処できるようになります。
-
SecurityContextConstraints (SCC): すべてのワークロード Pod は、
- 制限と要件
ルートレス DPDK Pod には、次の追加設定が必要です。
-
タッププラグインの
container_t
SELinux コンテキストを設定します。 -
クラスターホストの
container_use_devices
SELinux ブール値を有効にします。
-
タッププラグインの
- エンジニアリングに関する考慮事項
-
ルートレス DPDK Pod を使用するには、ホスト上で
container_use_devices
SELinux ブール値を有効にして、タップデバイスの作成を許可します。これにより、許容範囲内のセキュリティーリスクが発生します。
-
ルートレス DPDK Pod を使用するには、ホスト上で
3.8.14. スケーラビリティー リンクのコピーリンクがクリップボードにコピーされました!
- このリリースの変更点
- このリリースではリファレンス設計の更新はありません。
- 説明
- 「制限と要件」の説明に従ってクラスターをスケーリングしてください。ワークロードのスケーリングは、「アプリケーションワークロード」で説明されています。
- 制限と要件
- クラスターは少なくとも 120 ノードまで拡張できます。