Kubernetes では、新しく作成されたポッドとスケジュールされていないポッドは、要件を満たすノードに自動的にスケジュールされます。 ノードのアフィニティ、テイント、トライレイションを使用することで、ポッドがスケジュールされるノードをより細かく制御できます。
ノードのアフィニティを使用すると、ポッドが特定のラベル付きノードで実行されるよう制限するルールを指定できます。 テイントは、ポッドを拒否するためにノードに適用され、トライレイションはテイントを許容するためポッドに適用されます。 ノード アフィニティー、テイント、トライレイションの詳細については、Kubernetes のドキュメントをご参照ください。 ArcGIS Enterprise on Kubernetes のポッドにノード アフィニティーとトライレイションを適用する方法については、「ポッドの配置の管理」をご参照ください。
ノードのアフィニティ、テイント、トライレイションを組み合わせることで、ワークロードの配置のきめ細かい制御、分離の強化、リソース割り当ての最適化を行い、Kubernetes クラスター内のコンプライアンス要件を効果的に満たすことができます。
- 特殊な要件によるワークロードの分離 - ラベルとノードのアフィニティ ルールを使用して、特定のポッドが専用ノードにスケジュールされるようにします。 テイントを使用して、CPU やメモリーの要件が高いなどの特定の特性を持つノードを、ArcGIS ワークロード専用としてマークします。 サービス ポッドにトライレイションを適用して、必要なリソースを持つノードにスケジュールされるようにします。
- リソースの割り当ての最適化 - リソースのオーバーロードを防ぐためにリソースが制限されているノードにテイントを適用し、これらのノードのリソース制約に一致するようにサービス ポッドにトライレイションを定義します。 ノードのアフィニティをテイントおよびトライレイションと組み合わせて、サービス ポッドがリソース要件を満たすノードにのみスケジュールされるようにします。
- ジオロケーションベースのスケジュール設定 - データの場所や特定の規制への準拠が必要なアプリケーションの場合は、ノードのアフィニティを使用して、ノードの地理的な場所に基づいてサービス ポッドをスケジュールします。 物理的な場所やデータ主権の規制に基づいてノードをテイントし、サービス ポッドにトライレイションを適用して、ノード上でスケジュールされ、必要な場所の制約に準拠するようにします。
自動スケーリングは、ワークロードの需要に基づいてポッドの数を動的に調整することで、ノードのアフィニティとトライレイションの使用を強化します。 この動的スケーリングにより、特定の要件を満たすノードや必要なリソースが利用できるノードにポッドが効率的にスケジュールされ、リソースの割り当てが最適化されます。 自動スケーリングをノードのアフィニティーおよびトライレイションと組み合わせることで、Kubernetes クラスターは、ノードの制約と設定に準拠しながらワークロードの変動に適応し、リソースの使用率、パフォーマンス、スケーラビリティーの向上を実現します。 自動スケーリングについての詳細は「サービスのスケーリング」をご参照ください。
シナリオ
サービス上のポッド配置の管理が組織にどのようなメリットをもたらすかをより深く理解するには、次のシナリオを確認してください。
シナリオ 1 - パブリック マッピング サービスでの季節的なトラフィックの急増
ある公共団体は、地元の祭りの期間中、トラフィックの大幅な増加を経験します。 イベント情報を得ようと Web マップにアクセスするユーザーは、基になるマップ サービスへの需要が高いため、遅延に遭遇します。 これに対処するため、組織管理者は以下を行います。
- キーと値のペア「high-performance: true」が指定された高パフォーマンスの CPU やメモリーのリソースを使用してノードを構成します。
- ノード アフィニティ ルールを適用して、高パフォーマンスの CPU およびメモリー リソースのノードにマップ サービス ポッドがスケジュールされるようにします。
- [Type] - Preferred
- [Key] - high-performance
- [Operator] - Exists
- [Value] - true
- ポッドが高パフォーマンスのワークロードにテイントされたノード上で実行できるようにトライレイションを適用し、マップ サービスがトラフィックの急増を処理できるようにします。
- [Effect] - NoSchedule
- [Key] - workload
- [Operator] - Equal
- [Value] - high-performance
- 「workload=high-performance:NoSchedule」が指定された高パフォーマンス ノードをテイントします。
シナリオ 2 - 環境モニタリングのためのデータ処理
環境局は、土地利用の変化を監視するために一連の地理空間解析を行っています。 この解析は膨大な計算リソースを要し、当局はこの目的のために GPU を備えた専用ノードを用意しています。 他のサービスとリソースを競合せずに地理空間解析を効果的に実行するため、組織管理者は以下を行います。
- キーと値のペア「gpu: true」を使用して GPU 対応ノードを構成します。
- ノードのアフィニティ ルールを適用して、GPU ノードに解析ポッドをスケジュールします。
- [Type] - Required
- [Key] - gpu
- [Operator] - In
- [Value] - true
- テイントされた GPU ノード上でポッドを実行できるようにトライレイションを適用します。
- [Effect] - NoSchedule
- [Key] - workload
- [Operator] - Equal
- [Value] - high-resource
- 「workload=high-resource:NoSchedule」を使用して GPU ノードをテイントし、リソースをあまり消費しないポッドがそこにスケジュールされないようにします。
シナリオ 3 - 共有フィーチャ サービスのためのリソースの最適化
市の GIS 部門には、頻繁に使用されるわけではないものの、総じて単一サービスの実施に負荷をかけるフィーチャ サービスが多数あります。 この部門がシステムに過負荷をかけずにサービスの可用性を維持できるようにするため、組織管理者は以下を行います。
- キー「resource-constrained」を使用してノードを構成します。
- ノードのアフィニティ ルールを適用して、リソースの可用性が低いノードのスケジュールを優先します。
- [Type] - Preferred
- [Key] - resource-constrained
- [Operator] - DoesNotExist
- フィーチャ サービス ポッドにトライレイションを適用して、制約にかかわらず必ずテイントされたノードでスケジュールできるようにします。
- [Effect] - PreferNoSchedule
- [Key] - resource-constrained
- [Operator] - Exists
- 「resource-constrained:PreferNoSchedule」を使用してリソース制約ノードをテイントします。
シナリオ 4 - クラスター スケーリング中のデータ ストアの中断の回避
政府のサービス利用パターンでは、日中にサービスが集中して使用されます。 このパターンでは、これらのサービスに必要なすべてのポッド レプリカをサポートするために、多数のクラスター ノードが必要となります。 サービスは夜間には使用されないため、組織ではクラウド コンピューティングのコストを削減するため、ノード数を縮小したいと考えています。 しかし、システム管理のデータ ストア ポッドが実行されているノードを終了すると、これらのポッドが中断するリスクが生じます。 このような潜在的な中断を回避するため、組織管理者は以下のことを行います:
- データ ストア ポッド向けに個別のノード グループを作成し、各ノードにはキーと値のペア「data-store: true」のラベルを付けます。
- ノード アフィニティーのルールを適用し、データ ストアのポッドがこのグループのノードにスケジュールされるようにします。
- [Type] - Required
- [Key] - data-store
- [Operator] - In
- [Value] - true
- テイントされたデータ ストア ノード上でデータ ストア ポッドを実行できるよう、トライレイションを適用します:
- [Effect] - NoSchedule
- [Key] - workload
- [Operator] - Equal
- [Value] - data-store
- 「workload=data-store:NoSchedule」でデータ ストア ノードをテイントします。
- 夜間にクラスター ノードをスケール ダウンする際、データ ストア ノード グループをスケール ダウンしません。