Azure Kubernetes Service (AKS) の使用量とコストを最適化する

この記事では、Azure Kubernetes Service (AKS) の使用量とコストを最適化する方法に関するガイダンスを提供します。 ここでは、次のトピックに関するガイダンスについて説明します。

自動スケーリング

水平ポッドの自動スケーリング

水平ポッド オートスケーラー (HPA) は、リソースの需要を監視し、需要に合わせてポッドの数を自動的にスケーリングするようにワークロード リソースを自動的に更新します。 負荷の増加に対する応答は、より多くのポッドをデプロイするためです。 負荷が減少し、ポッドの数が構成されている最小値を超える場合、自動スケーラーはワークロード リソースにスケールダウンを指示します。

Metrics API は 60 秒ごとに kubelet からデータを取得し、HPA は既定で必要な変更がないか 15 秒ごとに Metrics API をチェックします。 これは、HPA が 60 秒ごとに更新されることを意味します。 デプロイ用に HPA を構成する場合は、実行できるレプリカの最小数と最大数、およびスケーリングするタイミングを決定するために HPA が使用するメトリックを定義します。

詳細については、「AKS での ポッドの水平自動スケーリング自動スケーリング」を参照してください。

Kubernetes イベント駆動型自動スケーリング

Kubernetes イベントドリブン オートスケーラー (KEDA) は、イベントドリブン自動スケールをワークロードに適用します。 KEDA は HPA と連携し、上書きや重複なしで機能を拡張できます。

AKS 用の KEDA アドオンを使用して、アプリケーションをスケーリングし、 Azure KEDA スケーラーの豊富なカタログを活用できます。 詳細については、「 KEDA アドオンを使用したアプリケーションの自動スケーリング 」および 「AKS 用 KEDA アドオンのインストール」を参照してください。

ポッドの垂直自動スケーリング

Vertical Pod Autoscaler (VPA) は、過去の使用状況に基づいて、ワークロードあたりのコンテナーに対するリソース要求と制限を自動的に設定します。 VPA は、ポッドの CPU とメモリを解放して、AKS クラスターを効果的に使用できるようにします。 時間の経過と同時に、VPA はリソースの使用に関する推奨事項を提供します。

詳細については、「 Azure Kubernetes Service (AKS) での垂直ポッドの自動スケーリング」および「Azure Kubernetes Service (AKS)での垂直ポッド オートスケーラー (VPA) の使用」を参照してください。

クラスターの適切なサイズ設定

クラスターのサイズを適切に設定する

コストとパフォーマンスを最適化するには、 クラスターのサイズを適切 に設定することが重要です。 アプリケーションのニーズに合わせてノードを追加したり削除したりすることで、クラスターのサイズを手動で変更できます。 また、クラスターを自動スケーリングして、需要の変化に応じてノードの数を自動的に調整することもできます。

詳細については、「 Azure Kubernetes Service (AKS) クラスターのサイズ変更」を参照してください。

クラスターの自動スケール

クラスター オートスケーラーを使用すると、リソースの使用状況と制約に基づいてノード プールを自動的にスケーリングできます。たとえば、保留中のポッドをスケジュールするようにスケールアップしたり、スケールダウンして未使用ノードのコストを削減したりできます。 クラスター オートスケーラー プロファイルは、クラスター オートスケーラーの動作を制御するために微調整できるパラメーターのセットです。

詳細については、「 Azure Kubernetes Service (AKS) でのクラスター自動スケールの概要」および「Azure Kubernetes Service (AKS)でのクラスター オートスケーラーの使用」を参照してください。

ノードの自動プロビジョニング (プレビュー)

オープンソースの Karpenter プロジェクトに基づくノード自動プロビジョニング (NAP) (プレビュー) は、ワークロードの保留中のポッド リソース要件に基づいて適切なインフラストラクチャをプロビジョニングするのに役立ちます。 効率的なビンパッキングにより、ワークロードを適切なサイズのインフラストラクチャに統合して、運用コストを削減できます。

詳細については、 Azure Kubernetes Service (AKS) でのノードの自動プロビジョニング (プレビュー) に関するページを参照してください。

GPU の最適化

GPU のパーティション分割と共有

GPU パーティション分割は、複数のワークロード間で GPU を分割または共有することで、過小使用に対処するのに役立ちます。 以降のセクションでは、AKS で GPU をパーティション分割および共有するさまざまな方法について説明します。

タイム スライシング

NVIDIA GPU オペレーターは、Kubernetes クラスター内の GPU のタイム スライスを有効にします。 タイム スライスを使用すると、システム管理者は GPU のレプリカのセットを定義できます。各 レプリカ は、ワークロードを実行するためにポッドに個別に渡すことができます。 クラスター全体の既定のタイム スライス構成とノード固有の構成を適用できます。

GPU のタイム スライスを示すビジュアル グラフの例のスクリーンショット。

詳細については、「 Kubernetes のタイム スライス GPU」を参照してください。

マルチ処理サービス (MPS)

1 つのプロセスで、GPU で使用可能なすべてのメモリとコンピューティング帯域幅の容量を利用できない場合があります。 マルチプロセス サービス (MPS) を使用すると、ワークロード間でメモリとコンピューティング リソースを論理的にパーティション分割でき、GPU 上で異なるプロセスのカーネル操作と memcopy 操作を重複させることができます。 MPS は、GPU 使用率の向上と実行時間の短縮に役立ちます。

GPU マルチプロセス サービス (MPS) を示すビジュアル グラフの例のスクリーンショット。

詳細については、「 マルチプロセス サービス (MPS)」を参照してください。

マルチインスタンス GPU (MIG)

マルチインスタンス GPU (MIG) を 使用すると、NVIDIA Ampere 以降のアーキテクチャに基づいて GPU を CUDA アプリケーション用の個別のセキュリティで保護された GPU インスタンスにパーティション分割できます。

複数インスタンス GPU (MIG) を示すビジュアル グラフの例のスクリーンショット。

詳細については、「MIG を 使用した GPU オペレーター」 および 「Azure Kubernetes Service (AKS) でのマルチインスタンス GPU ノード プールの作成」を参照してください。

マルチテナンシー

マルチテナントとは、テナント、チーム、およびビジネス ユニット間でのインフラストラクチャの共有を指します。 次の表は、AKS でマルチテナントを実装するさまざまな方法の概要を示しています。

マルチテナントの種類 マルチテナント レベル クラスター ポッドの密度 コストの割り当て 理想的なユース ケース 潜在的なリスク
専用クラスター ハード マルチテナント 最も簡単 完全なセキュリティ分離境界と簡単なコスト割り当て • クラスターが大規模に拡散すると、管理オーバーヘッドコストが増加する
• ポッド密度が低く、リソースが過剰にプロビジョニングされている
専用ノード プール ソフト マルチテナント 中程度 中程度 中程度のポッド密度 • テナント間の信頼が必要
• ネットワーク ポリシー、クォータ管理、ロールベースのアクセス制御 (RBAC) などの追加のクラスター構成が必要です。
専用名前空間 ソフトなマルチテナンシー より高い より難しい リソース使用率を最大化するためのインフラストラクチャの共有 • 既定では、敵対的な環境では安全ではありません
• ネットワーク ポリシー、クォータ管理、ロールベースのアクセス制御 (RBAC) などの追加のクラスター構成が必要です。

専用クラスター

専用クラスター マルチテナントでは、クラスターは 1 つのワークロードまたはチーム専用です。

専用クラスター のマルチテナントを示すビジュアル グラフの例のスクリーンショット。

次の表は、専用クラスターの使用の長所と短所の概要を示しています。

利点 デメリット
•より簡単な分離方法
•簡単なコストの割り当てとチャージバック
• テナントが互いを信頼しない場合に適しています (多くの場合、セキュリティとリソース共有の観点から)。
• 高い管理と財務オーバーヘッド
• 一般的にポッド密度が低く、過剰に割り当てられたリソース

専用ノード プール

専用ノード プールマルチテナントでは、クラスターは多くのテナントによって共有されます。

専用ノード プールのマルチテナントを示すビジュアル グラフの例のスクリーンショット。

次の表は、専用ノード プールの使用の長所と短所を示しています。

利点 デメリット
• 中程度のポッド密度
• 一部の共有インフラストラクチャ
• 1 つのテナント専用のノード プールに Azure タグを適用する (タグはノードに伝達され、アップグレードによって保持されます)
• テナント間の信頼が必要
• ネットワーク ポリシー、クォータ管理、ロールベースのアクセス制御 (RBAC) などの追加のクラスター構成が必要です。

専用の名前空間

専用名前空間マルチテナントでは、クラスターは多くのテナントによって共有され、名前空間は分離境界として機能します。

専用名前空間のマルチテナントを示すビジュアル グラフの例のスクリーンショット。

次の表は、専用名前空間を使用することの長所と短所の概要を示しています。

利点 デメリット
• ポッド密度の向上
•最高のビン詰め
• リソース使用率を最大化するためのインフラストラクチャの共有
• 既定では、敵対的な環境では安全ではありません
• すべてのテナントを信頼できない場合は、追加のセキュリティ対策が必要です

Azure の割引

さらに 1 ステップ節約するには、Azure の割引プラン、予約インスタンス、Azure ハイブリッド特典などの Azure 割引を利用します。

Azure 割引の種類 詳細情報
Azure の節約プラン •1-3年の前払いコミットメント
• 従量課金制と比較して最大 65% を節約
• 柔軟で、SKU ファミリやリージョンの制限なし
• さまざまな SKU やリージョンのリソースと一貫したコストを伴うワークロードに最適
予約インスタンス •1-3年の前払いコミットメント
•従量課金制と比較して72% まで節約
• 特定の SKU ファミリとリージョンに制限
• 継続的に実行される安定したワークロードに最適 (予期しない SKU やリージョンの変更なし)
Azure ハイブリッドの利点 • オンプレミスの Windows Server および SQL Server ライセンスを Azure に持ち込む
• アクティブなソフトウェア アシュアランス (SA) または対象となるサブスクリプションを持つ対象のオンプレミス ライセンスを使用する

次のステップ

AKS のコストの詳細については、次の記事を参照してください。