Azure Kubernetes Service (AKS) は、コンテナー化されたアプリケーションをデプロイして管理するために使用できるマネージド Kubernetes サービスです。 他のマネージド サービスと同様に、AKS は運用上のオーバーヘッドの多くを Azure にオフロードしながら、高可用性、スケーラビリティ、移植性の機能をワークロードに提供します。
この記事では、アーキテクトとしてコンピューティング デ シジョン ツリー を確認し、ワークロードのコンピューティングとして AKS を選択したことを前提としています。 この記事のガイダンスでは、Azure Well-Architected Framework の柱の原則にマップされたアーキテクチャに関する推奨事項を示します。
テクノロジスコープ
このレビューでは、次の Azure リソースに関する相互に関連する決定に焦点を当てます。
- AKS
AKS の Well-Architected Framework の柱のベスト プラクティスについて説明するときは、 クラスター と ワークロードを区別することが重要です。 クラスターのベスト プラクティスは、クラスター管理者とそのリソース プロバイダーの間で共有される責任ですが、ワークロードのベスト プラクティスは開発者のドメインです。 この記事では、これらの各ロールに関する考慮事項と推奨事項について説明します。
Note
次の柱には、設計チェックリストと、各選択がクラスター アーキテクチャ、ワークロード アーキテクチャ、またはその両方に適用されるかどうかを示す推奨事項の一覧が含まれます。
Reliability
信頼性の柱の目的は、十分な回復性を構築 し、障害から迅速に回復する機能をして継続的な機能を提供することです。
信頼性設計の原則、個々のコンポーネント、システム フロー、およびシステム全体に適用される高度な設計戦略を提供します。
ワークロード設計チェックリスト
信頼性 の設計レビュー チェックリストに基づいて、設計戦略を開始します。 AKS の機能とその依存関係を念頭に置いて、ビジネス要件との関連性を判断します。 必要に応じて、より多くのアプローチを含むように戦略を拡張します。
(クラスター) 冗長性を構築して回復性を向上させます。 単一のリージョンにデプロイするときに可用性を向上させるために、回復性戦略の一部として AKS クラスターの可用性ゾーンを使用します。 多くの Azure リージョンには、可用性ゾーンがあります。 ゾーン間の接続の待機時間が短くなるほど近いですが、ローカルの停止が複数のゾーンに影響を与える可能性を減らすには十分に離れています。
重要なワークロードの場合は、異なる Azure リージョンに複数のクラスターをデプロイします。 AKS クラスターを地理的に分散することで、より高い回復性を実現し、リージョンの障害の影響を最小限に抑えることができます。 マルチリージョン戦略は、可用性を最大化し、ビジネス継続性を提供するのに役立ちます。 インターネットに接続するワークロードでは、 Azure Front Door または Azure Traffic Manager を使用して、AKS クラスター間でトラフィックをグローバルにルーティングする必要があります。 詳細については、「 マルチリージョン戦略」を参照してください。
クラスターが複数クラスター トポロジのフェールオーバー トラフィックを確実にスケーリングして処理できるように、IP アドレス空間を計画します。
(クラスターとワークロード) クラスターとワークロードの信頼性と全体的な正常性インジケーターを監視します。 ログとメトリックを収集してワークロードの正常性を監視し、パフォーマンスと信頼性の傾向を特定し、問題のトラブルシューティングを行います。 Azure Monitor を使用して Kubernetes を監視するためのベスト プラクティスと、ワークロード用の Well-Architected Health モデリング ガイドを確認して、AKS ソリューションの信頼性と正常性監視ソリューションの設計に役立ててください。
水平スケーリングをサポートし、アプリケーションの準備と正常性をレポートするようにワークロードが構築されていることを確認します。
(クラスターとワークロード) ユーザー ノード プールでアプリケーション ポッドをホストします。 システム ポッドをアプリケーション ワークロードから分離することで、AKS の重要なサービスが、リソースの需要や、ユーザー ノード プールを実行するワークロードによって引き起こされる潜在的な問題の影響を受けないようにすることができます。
ワークロードがユーザー ノード プールで実行されていることを確認し、適切なサイズの SKU を選択します。 少なくとも、ユーザー ノード プール用に 2 つのノード、システム ノード プール用に 3 つのノードを含めます。
(クラスターとワークロード) 可用性と復旧のターゲットに AKS アップタイム サービス レベル アグリーメント (SLA) を考慮します。 クラスターとワークロードの信頼性と復旧のターゲットを定義するには、「信頼性ターゲットを 定義するための推奨事項」のガイダンスに従ってください。 その後、それらの目標を満たす設計を作成します。
(クラスターとワークロード)Azure Backup を使用して AKS クラスター サービスを保護するには、バックアップ コンテナーに復旧ポイントを格納し、障害シナリオの間に復元を実行します。 AKS クラスターで実行されているコンテナー化されたアプリケーションとデータをバックアップおよび復元するには、保護を構成するための AKS バックアップの概要のガイダンスに従います。
構成に関する推奨事項
Recommendation | Benefit |
---|---|
(クラスターとワークロード)ノード セレクターとアフィニティを使用してポッドのスケジュールを制御します。 AKS では、Kubernetes スケジューラはノード内のハードウェアによってワークロードを論理的に分離できます。 容認とは異なり、一致するノード セレクターがないポッドはラベル付けされたノードでスケジュールできますが、一致するノード セレクターを定義するポッドに優先順位が与えられます。 |
ノード アフィニティにより柔軟性が高まるため、ポッドをノードと一致できない場合の動作を定義できます。 |
(クラスター)ネットワーク要件とクラスターのサイズ設定に基づいて、適切なネットワーク プラグインを選択します。 ネットワーク プラグインによって、さまざまなレベルの機能が提供されます。 Azure Container Networking Interface (Azure CNI) は、Windows ベースのノード プール、一部のネットワーク要件、Kubernetes ネットワーク ポリシーなどの特定のシナリオに必要です。 詳細については、 Kubenet と Azure CNI の比較に関するページを参照してください。 |
適切なネットワーク プラグインは、互換性とパフォーマンスの向上に役立ちます。 |
(クラスターとワークロード)運用グレードのクラスターには 、AKS アップタイム SLA を使用します。 | ワークロードでは、AKS クラスターの Kubernetes API サーバー エンドポイントの可用性の保証が高いため、高可用性ターゲットをサポートできます。 |
(クラスター) 可用性ゾーン を使用して、物理的に分離されたデータセンターに AKS エージェント ノードを分散することで、Azure リージョン内の回復性を最大化します。 併置要件が存在する場合は、通常の仮想マシン スケール セットベースの AKS デプロイを 1 つのゾーンに使用するか、 近接配置グループ を使用してノード間の待機時間を最小限に抑えます。 |
ノード プールを複数のゾーンに分散することで、1 つのノード プール内のノードは、別のゾーンがダウンした場合でも引き続き実行されます。 |
(クラスターとワークロード)アプリケーション配置マニフェストでポッド リソースの要求と制限を定義します。 Azure Policy を使用して、これらの制限を適用します。 | Kubernetes クラスターでのリソースの枯渇を防ぐには、コンテナーの CPU とメモリのリソース制限が必要です。 |
(クラスターとワークロード)システム ノード プールをアプリケーション ワークロードから分離したままにします。 システム ノード プールには、少なくとも 2 つの vCPU と 4 GB のメモリの仮想マシン (VM) SKU が必要です。 4 vCPU 以上を使用することをお勧めします。 詳しくは、 システム・ノード・プールおよびユーザー・ノード・プールを参照してください。 |
システム ノード プールは、クラスターのコントロール プレーンに不可欠な重要なシステム ポッドをホストします。 これらのシステム ポッドをアプリケーション ワークロードから分離することで、重要なサービスがリソースの需要やワークロードによって引き起こされる潜在的な問題の影響を受けないようにすることができます。 |
(クラスターとワークロード)特定の要件に基づいて、アプリケーションを専用ノード プールに分離します。 管理オーバーヘッドを減らすために、多数のノード プールを避けてください。 | アプリケーションは同じ構成を共有でき、GPU 対応 VM、CPU またはメモリ最適化 VM、またはゼロにスケーリングする機能が必要です。 ノード プールを特定のアプリケーションに専用化することで、リソースを過剰にプロビジョニングまたは過小使用することなく、各アプリケーションが必要なリソースを確実に取得できます。 |
(クラスター)多数の同時送信接続を行うワークロードを実行するクラスターには 、NAT ゲートウェイ を使用します。 | Azure NAT Gateway は、大規模な信頼性の高いエグレス トラフィックをサポートし、高い同時送信トラフィックに Azure Load Balancer の制限を適用することで信頼性の問題を回避するのに役立ちます。 |
(クラスターとワークロード)Azure Backup を使用して AKS クラスターを保護し、 障害発生時に別のリージョンに復元します。 Azure Backup では、コンテナー化されたアプリケーションのバックアップ操作と復元操作と、クラスターの状態とアプリケーション データの両方で実行されるデータがサポートされます。 リージョンの障害シナリオでバックアップを使用し、バックアップを復旧できます。 |
Azure Kubernetes Service (AKS) を使用した Azure Backup は、フル マネージドのスケーラブルでセキュリティで保護されたコスト効率の高いソリューションを提供します。 バックアップ インフラストラクチャの設定と保守の複雑さなしで、ワークロードの信頼性を向上させます。 |
セキュリティ
セキュリティの柱の目的は、ワークロードに対して機密性、整合性、可用性を保証することです。
セキュリティ設計の原則は、AKS の技術設計にアプローチを適用することで、これらの目標を達成するための高度な設計戦略を提供します。
ワークロード設計チェックリスト
セキュリティ の 設計レビュー チェックリストに基づいて設計戦略を開始し、セキュリティ体制を改善するための脆弱性と制御を特定します。 AKS セキュリティの概念を理解し、CIS Kubernetes ベンチマークに基づいてセキュリティ強化の推奨事項を評価します。 必要に応じて、より多くのアプローチを含むように戦略を拡張します。
(クラスター)ID とアクセス管理のために Microsoft Entra ID と統合します。Microsoft Entra ID を使用してクラスターの ID 管理を一元化します。 ユーザー アカウントまたはグループの状態が変わると、AKS クラスターにアクセスしたとき、その変更内容が自動的に更新されます。 プライマリ セキュリティ境界として ID を確立します。 お使いの Kubernetes クラスターの開発者とアプリケーション所有者はさまざまなリソースへのアクセスを必要とします。
最小限の特権アクセスには、Microsoft Entra ID で Kubernetes ロールベースのアクセス制御 (RBAC) を使用します。 管理者特権の割り当てを最小限に抑えることで、構成とシークレットを保護します。
(クラスター)セキュリティ監視およびセキュリティ情報およびイベント管理ツールと統合します。Microsoft Sentinel で Microsoft Defender for Containers を使用して、クラスターとその上で実行されるワークロード全体の脅威を検出して迅速に対応します。 Microsoft Sentinel の AKS コネクタを有効にして、AKS 診断ログを Microsoft Sentinel にストリーミングします。
(クラスターとワークロード) セグメント化とネットワーク制御を実装します。 データ流出を防ぐには、承認された安全なトラフィックのみが許可され、セキュリティ侵害の爆発半径が含まれていることを確認します。
プライベート AKS クラスターを使用して、API サーバーへのクラスター管理トラフィックがプライベート ネットワーク上に残っていることを確認することを検討してください。 または、パブリック クラスターに対して API サーバーの許可リストを使用します。
(ワークロード) Web アプリケーション ファイアウォール (WAF) を使用して、潜在的な攻撃の受信トラフィックをスキャンします。 WAF は、アプリケーションに到達する前に悪意のあるトラフィックをブロックするのに役立つ脅威をリアルタイムで検出して軽減できます。 SQL インジェクション、クロスサイト スクリプティング、その他の Open Web アプリケーション セキュリティ プロジェクトの脆弱性など、一般的な Web ベースの攻撃に対する堅牢な保護を提供します。 Azure Application Gateway や Azure Front Door などの一部のロード バランサーには、統合された WAF があります。
(ワークロード) 強化されたワークロードのソフトウェア サプライ チェーンを維持します。 コンテナー対応のスキャンを使用して、継続的インテグレーションと継続的デリバリー パイプラインが強化されていることを確認します。
(クラスターとワークロード) 特殊なセキュリティで保護されたワークロードに対して追加の保護を実装します。 クラスターで機密性の高いワークロードを実行する必要がある場合は、プライベート クラスターのデプロイが必要になる場合があります。 いくつかの例を次に示します。
- Payment Card Industry Data Security Standard (PCI-DSS 3.2.1): PCI-DSS 3.2.1 用の AKS 規制クラスター
- AKS での DoD 影響レベル 5 (IL5) のサポートと要件: Azure Government IL5 の分離要件。
構成に関する推奨事項
Recommendation | Benefit |
---|---|
(クラスター)クラスターで マネージド ID を 使用します。 | サービスプリンシパルの管理とローテーションに関連するオーバーヘッドを回避できます。 |
(ワークロード) AKS で Microsoft Entra ワークロード ID を 使用して、Azure Key Vault や Microsoft Graph などの Microsoft Entra で保護されたリソースにワークロードからアクセスします。 | AKS ワークロード ID を使用して、コード内で資格情報を直接管理しなくても、Microsoft Entra ID RBAC を使用して Azure リソースへのアクセスを保護します。 |
(クラスター) AKS から Azure Container Registry で認証するには、Microsoft Entra ID を使用します。 | Microsoft Entra ID を使用すると、AKS は、 imagePullSecrets シークレットを使用せずに Container Registry で認証できます。 |
(クラスター)ワークロード要件により高いレベルのセグメント化が必要な場合は、 プライベート AKS クラスター を使用して API サーバーへのネットワーク トラフィックをセキュリティで保護します。 | 既定では、ノード プールと API サーバー間のネットワーク トラフィックは、Microsoft バックボーン ネットワークを移動します。 プライベート クラスターを使用すると、API サーバーへのネットワーク トラフィックがプライベート ネットワークのみに残ることを確認できます。 |
(クラスター)パブリック AKS クラスターの場合は、API サーバーによって承認された IP アドレス範囲を使用します。 デプロイ ビルド エージェントのパブリック IP アドレス、操作管理、ノード プールのエグレス ポイント (Azure Firewall など) などのソースを含めます。 | パブリック クラスターを使用する場合、クラスターの API サーバーに到達できるトラフィックを制限することで、AKS クラスターの攻撃対象領域を大幅に削減できます。 |
(クラスター)Microsoft Entra ID RBAC を使用して API サーバーを保護します。 Microsoft Entra ID ベースの ID を使用してすべてのクラスター アクセスを適用するには、ローカル アカウントを無効にします。 |
Kubernetes API サーバーへのアクセスのセキュリティ保護は、クラスターをセキュリティで保護するために実行できる最も重要なことの 1 つです。 Kubernetes RBAC を Microsoft Entra ID と統合して、API サーバーへのアクセスを制御します。 |
(クラスター) Azure ネットワーク ポリシー または Calico を使用します。 | ポリシーを使用すると、クラスター内のポッド間のネットワーク トラフィックをセキュリティで保護および制御できます。 Calico は、ポリシーの順序付けと優先順位、拒否規則、より柔軟な一致ルールなど、より豊富な機能セットを提供します。 |
(クラスター) Azure Policy を使用してクラスターとポッドをセキュリティで保護する。 | Azure Policy は、一元化された一貫性のある方法でクラスターに大規模な適用と保護を適用するのに役立ちます。 また、ポッドに付与される関数を制御し、会社のポリシーに対して何かが実行されているかどうかを検出することもできます。 |
(クラスター)リソースへのコンテナー アクセスをセキュリティで保護します。 コンテナーで実行できるアクションへのアクセスを制限します。 最小限のアクセス許可を付与し、ルートまたは特権エスカレーションの使用を避けます。 Linux ベースのコンテナーについては、 組み込みの Linux セキュリティ機能を使用したリソースへのセキュリティ コンテナーのアクセスに関する記事を参照してください。 |
アクセス許可を制限し、ルートまたは特権エスカレーションの使用を回避することで、セキュリティ侵害のリスクを軽減できます。 コンテナーが侵害された場合でも、潜在的な損害が最小限に抑えられるよう支援できます。 |
(クラスター)クラスターの送信トラフィックが Azure Firewall や HTTP プロキシなどのネットワーク セキュリティ ポイントを通過するようにして、クラスターエグレス トラフィックを制御します。 | Azure Firewall または HTTP プロキシを介して送信トラフィックをルーティングすることで、未承認のアクセスとデータ流出を防ぐセキュリティ ポリシーを適用できます。 この方法では、セキュリティ ポリシーの管理も簡素化され、AKS クラスター全体で一貫性のある規則を適用しやすくなります。 |
(クラスター)Key Vault でオープンソースの Microsoft Entra ワークロード ID と シークレット ストア CSI ドライバー を使用します。 | これらの機能は、強力な暗号化を使用して Key Vault のシークレット、証明書、接続文字列を保護およびローテーションするのに役立ちます。 アクセス監査ログを提供し、コア シークレットをデプロイ パイプラインから除外します。 |
(クラスター) Microsoft Defender for Containers を使用します。 | Microsoft Defender for Containers は、クラスター、コンテナー、およびアプリケーションのセキュリティを監視および維持するのに役立ちます。 |
コストの最適化
コストの最適化では、支出パターンの検出 、重要な領域への投資の優先順位付け、ビジネス要件を満たしながら組織の予算を満たすために他の での最適化に重点を置いています。
コスト最適化設計原則は、これらの目標を達成し、AKS とその環境に関連する技術設計で必要に応じてトレードオフを行う高度な設計戦略を提供します。
ワークロード設計チェックリスト
投資のコスト最適化 の 設計レビュー チェックリストに基づいて、設計戦略を開始します。 ワークロードの設計を、そのワークロードに割り当てられた予算に合わせて微調整します。 設計では、適切な Azure 機能を使用し、投資を監視し、時間の経過と同時に最適化する機会を見つける必要があります。
(クラスター) コスト モデルに AKS の価格レベル を含めます。 コストを見積もるために、 Azure 料金計算ツール を使用し、計算ツールでさまざまな構成と支払いプランをテストします。
(クラスター) ワークロードに最適な料金を取得します。 ワークロードの実行コストに直接影響するため、ノード プールごとに適切な VM SKU を使用します。 適切な使用率なしで高パフォーマンスの VM を選択すると、無駄な支出につながる可能性があります。 あまり強力でない VM を選択すると、パフォーマンスの問題が発生し、ダウンタイムが増加する可能性があります。
容量を適切に計画していて、ワークロードが予測可能で、長期間存在する場合は、 Azure の予約 または 節約計画 にサインアップして、リソース コストを削減します。
Azure Spot Virtual Machines を選択して、使用率の低い Azure 容量を大幅な割引で使用します。 これらの割引は、従量課金制の価格の最大 90% に達する場合があります。 容量が Azure で再び必要になると、Azure インフラストラクチャはスポット ノードを削除します。
オンプレミスまたはエッジで AKS を実行する場合は、 Azure ハイブリッド特典 を使用して、これらのシナリオでコンテナー化されたアプリケーションを実行するときのコストを削減することもできます。
(クラスターとワークロード) ワークロード コンポーネントのコストを最適化します。 ワークロードに最もコスト効率の高いリージョンを選択します。 コスト、待機時間、コンプライアンスの要件を評価して、ワークロードをコスト効率の高い方法で実行し、顧客に影響を与えたり、追加のネットワーク料金を作成したりしないようにします。 Azure にワークロードをデプロイするリージョンは、コストに大きな影響を与える可能性があります。 多くの要因により、リソースのコストは Azure のリージョンごとに異なります。
新しいノードではそれらのイメージをダウンロードする必要があるため、コストを削減するために、小さく最適化されたイメージを維持します。 アプリケーションの起動時にユーザー要求のエラーまたはタイムアウトが発生すると、オーバープロビジョニングが発生する可能性があります。 障害やタイムアウトを回避するために、コンテナーをできるだけ早く起動できるようにイメージをビルドします。
Azure Monitor で Kubernetes を監視するためのベスト プラクティスのコスト最適化に関する推奨事項を確認して、ワークロードに最適な監視戦略を決定します。 CPU、メモリ、ストレージ、ネットワークから始まるパフォーマンス メトリックを分析して、クラスター、ノード、名前空間ごとにコスト最適化の機会を特定します。
(クラスターとワークロード) ワークロードのスケーリング コストを最適化します。 すべてのワークロード要件を満たしながら、スケーリング コストを削減するために、垂直方向と水平方向の別のスケーリング構成を検討してください。 ワークロードのアクティブが低い場合は、自動スケーラーを使用してスケールインします。
(クラスターとワークロード) コスト データを収集して分析します。 コストの最適化を有効にする基礎は、コスト削減クラスターの分散です。 コスト削減目標の調整を推進し、クラウド コストに透明性をもたらすために、財務チーム、運用チーム、エンジニアリング チーム間のコラボレーションを含むコスト効率の考え方を開発します。
構成に関する推奨事項
Recommendation | Benefit |
---|---|
(クラスターとワークロード) AKS SKU の選択 とマネージド ディスク サイズをワークロードの要件に合わせます。 | 選択内容をワークロードの需要に合わせることは、不要なリソースに対して支払いを行わないようにするのに役立ちます。 |
(クラスター) AKS ノード プールに適した VM インスタンスの種類を選択します。 適切な VM インスタンスの種類を決定するには、ワークロードの特性、リソース要件、および可用性のニーズを考慮してください。 |
適切な VM インスタンスの種類を選択することは、AKS でアプリケーションを実行するコストに直接影響するため、非常に重要です。 適切な使用率なしで高パフォーマンスのインスタンスを選択すると、無駄な支出につながる可能性があります。 あまり強力でないインスタンスを選択すると、パフォーマンスの問題やダウンタイムの増加につながる可能性があります。 |
(クラスター)より電力効率の高い Azure Resource Manager アーキテクチャに基づいて VM を選択します。 AKS では、 Arm64 ノード プールの作成 と、クラスター内での Intel と Resource Manager のアーキテクチャ ノードの組み合わせがサポートされています。 | Arm64 アーキテクチャでは、電力使用率が低く、コンピューティング パフォーマンスが効率的であるため、価格とパフォーマンスの比率が向上します。 これらの機能により、低コストでより優れたパフォーマンスが得られます。 |
(クラスター) クラスター オートスケーラー を有効にして、過剰なリソース容量に応じてエージェント ノードの数を自動的に減らします。 | AKS クラスター内のノード数を自動的にスケールダウンすると、需要が少ないときに効率的なクラスターを実行し、需要が増加したときにスケールアップできます。 |
(クラスター) ノードの自動プロビジョニングを 有効にして、VM SKU の選択を自動化します。 | ノードの自動プロビジョニングにより、SKU の選択プロセスが簡素化され、保留中のポッド リソース要件に基づいて、最も効率的でコスト効率の高い方法でワークロードを実行するための最適な VM 構成が決定されます。 |
(ワークロード) HorizontalPodAutoscaler を使用して、CPU 使用率やその他のメトリックに応じてデプロイ内のポッドの数を調整します。 | 需要が少ない場合はポッドの数を自動的にスケールダウンし、需要が増加したときにスケールアウトすると、ワークロードの運用コスト効率が向上します。 |
(ワークロード) VerticalPodAutoscaler (プレビュー) を使用してポッドを適切にサイズ変更し、過去の使用状況に基づいて 要求と制限を 動的に設定します。 | 各ワークロードのコンテナーにリソース要求と制限を設定することで、VerticalPodAutoscaler は他のポッドの CPU とメモリを解放し、AKS クラスターの効果的な使用率を確保するのに役立ちます。 |
(クラスター) AKS コスト分析アドオンを構成します。 | コスト分析クラスター拡張機能を使用すると、クラスターまたは名前空間内のさまざまな Kubernetes リソースに関連付けられているコストに関する詳細な分析情報を取得できます。 |
オペレーショナル エクセレンス
オペレーショナル エクセレンスは主に、開発プラクティス、可観測性、リリース管理の手順に重点を置いています。
オペレーショナル エクセレンス設計原則、ワークロードの運用要件に対してこれらの目標を達成するための高度な設計戦略を提供します。
ワークロード設計チェックリスト
監視、テスト、デプロイのプロセスを定義するための オペレーショナル エクセレンスの設計レビュー チェックリスト に基づいて、設計戦略を開始します。 理解して実装するための主な考慮事項については、 AKS のベスト プラクティス と Day-2 操作ガイド を参照してください。
(クラスター) コードとしてのインフラストラクチャ (IaC) デプロイ アプローチを実装します。 Bicep、Terraform、または同様のツールを使用して、宣言型のテンプレート ベースのデプロイ アプローチを使用します。 すべてのデプロイが反復可能でトレース可能であり、ソース コードのリポジトリに保存されている必要があります。 詳細については、AKS 製品ドキュメントの クイックスタート を参照してください。
(クラスターとワークロード) インフラストラクチャとワークロードのデプロイを自動化します。 標準的なソフトウェア ソリューションを使用して、クラスターとワークロードのデプロイを管理、統合、自動化します。 デプロイ パイプラインをソース管理システムと統合し、自動テストを組み込みます。
必要なクラスター全体の構成とデプロイでクラスターがブートストラップされるように、自動化されたプロセスを構築します。 通常、このプロセスは GitOps を使用して実行されます。
ソフトウェア開発ライフサイクル内で、ワークロードに対して反復可能で自動化されたデプロイ プロセスを使用します。
(クラスターとワークロード) 包括的な監視戦略を実装します。 ログとメトリックを収集してワークロードの正常性を監視し、パフォーマンスと信頼性の傾向を特定し、問題のトラブルシューティングを行います。 Azure Monitor を使用して Kubernetes を監視するためのベスト プラクティスと、監視システムを設計および作成するための Well-Architected 推奨事項を確認して、ワークロードに最適な監視戦略を決定します。
診断設定を有効にして、コントロール プレーンまたはコア API サーバーの対話がログに記録されるようにします。
ワークロードは、収集可能なテレメトリを出力するよう設計する必要があり、それにはライブネス状態と準備完了状態も含める必要があります。
(クラスターとワークロード) 運用戦略でテストを実装する。 運用環境でのテストでは、実際のデプロイを使用して、運用環境でのアプリケーションの動作とパフォーマンスを検証および測定します。 Kubernetes を対象とするカオス エンジニアリング プラクティスを使用して、アプリケーションまたはプラットフォームの信頼性の問題を特定します。
Azure Chaos Studio は、障害をシミュレートし、ディザスター リカバリーの状況をトリガーするのに役立ちます。
(クラスターとワークロード) ワークロード ガバナンスを適用する。 Azure Policy は、組織の標準に一貫したコンプライアンスを確保し、ポリシーの適用を自動化し、クラスター リソースの一元的な可視性と制御を提供します。
AKS で使用可能な組み込みポリシーの詳細については、「 Azure ポリシー」セクションを参照してください。
(クラスターとワークロード) ミッション クリティカルなワークロードには 、スタンプレベルのブルーグリーンデプロイ を使用します。 スタンプ レベルの青緑色のデプロイ アプローチでは、変更のリリースに対する信頼性が高くなり、ダウンタイムなしのアップグレードが可能になります。これは、Azure プラットフォーム、リソース プロバイダー、IaC モジュールなどのダウンストリーム依存関係との互換性を検証できるためです。
Kubernetes とイングレス コントローラーは、リリース エンジニアリング プロセスに組み込むための多くの高度なデプロイ パターンをサポートしています。 ブルー/グリーン デプロイやカナリア リリースなどのパターンを検討してください。
(クラスターとワークロード) ワークロードをより持続可能なものにします。 ワークロードの 持続性とクラウド効率を高 めるためには、 コストの最適化、 炭素排出量の削減、 エネルギー消費の最適化に関する取り組みを組み合わせる必要があります。 アプリケーションのコストを最適化することは、ワークロードをより持続可能にするための第一歩です。
持続可能で効率的な AKS ワークロードを構築する方法については、 AKS の持続可能なソフトウェア エンジニアリングの原則 を参照してください。
構成に関する推奨事項
Recommendation | Benefit |
---|---|
(クラスター) AKS 用の Azure ポリシーを使用して、クラスターとポッドの構成標準を運用化します。 | AKS 用の Azure ポリシーは、一元化された一貫性のある方法でクラスターに大規模な適用と保護を適用するのに役立ちます。 ポリシーを使用して、ポッドに付与されるアクセス許可を定義し、会社のポリシーに確実に準拠します。 |
(ワークロード) Kubernetes イベント ドリブン オートスケーラー (KEDA) を使用します。 | KEDA を使用すると、処理されるイベントの数など、イベントに基づいてアプリケーションをスケーリングできます。 50 を超える KEDA スケーラーの豊富なカタログから選択できます。 |
パフォーマンス効率
パフォーマンス効率とは、容量の管理により、負荷が増加してもユーザー エクスペリエンスを維持することです。 この戦略には、リソースのスケーリング、潜在的なボトルネックの特定と最適化、ピーク パフォーマンスの最適化が含まれます。
パフォーマンス効率設計の原則、予想される使用に対してこれらの容量目標を達成するための高度な設計戦略を提供します。
ワークロード設計チェックリスト
AKS の主要業績評価指標に基づいてベースラインを定義するための パフォーマンス効率の設計レビュー チェックリスト に基づいて、設計戦略を開始します。
(クラスターとワークロード) 容量計画を実施する。 SKU、自動スケール設定、IP アドレス指定、フェールオーバーに関する考慮事項を含む詳細な容量計画の演習を実行して反復処理します。
容量プランを正式に作成した後、クラスターのリソース使用率を継続的に監視することで、プランを頻繁に更新します。
(クラスター) スケーリング戦略を定義します。 リソースが過剰使用や無駄なくワークロードの需要を満たすように効率的に調整されるようにスケーリングを構成します。 クラスターの自動スケーリングや HorizontalPodAutoscaler などの AKS 機能を使用して、ワークロードのニーズを動的に満たし、運用に対する負担を軽減します。 ワークロードを最適化して、コンテナー内で効率的に運用およびデプロイします。
スケーリングとパーティション分割のガイドを確認して、スケーリング構成のさまざまな側面を理解します。
(クラスターとワークロード) パフォーマンス テストを実施する。 ポッドとクラスターオートスケーラーの両方を実行する継続的なロード テスト アクティビティを実行します。 パフォーマンス目標と確立されたベースラインと結果を比較します。
(クラスターとワークロード) ワークロードとフローを個別にスケーリングします。 ワークロードを分離し、異なるノード プールに流れ込んで、独立したスケーリングを可能にします。 フローを使用したワークロード設計の最適化に関する記事のガイダンスに従って、フローを特定し、優先順位を付けます。
構成に関する推奨事項
Recommendation | Benefit |
---|---|
(クラスター) クラスター オートスケーラー を有効にして、ワークロードの需要に応じてエージェント ノードの数を自動的に調整します。 HorizontalPodAutoscaler を使用して、CPU 使用率やその他のメトリックに応じてデプロイ内のポッドの数を調整します。 |
ノードの数と AKS クラスター内のポッドの数を自動的にスケールアップまたはスケールダウンする機能により、効率的でコスト効率の高いクラスターを実行できます。 |
(クラスターとワークロード)ワークロードを異なるノード プールに分割し、 ユーザー ノード プールのスケーリングを検討します。 | 常に実行中のノードが必要なシステム ノード プールとは異なり、ユーザー ノード プールを使用すると、スケールアップまたはスケールダウンできます。 |
(ワークロード)AKS の高度なスケジューラ機能 を使用して、それらを必要とするワークロードのリソースの高度な分散を実装します。 | AKS クラスターを管理するときは、多くの場合、チームとワークロードを分離する必要があります。 Kubernetes スケジューラが提供する高度な機能を使用すると、特定のノードでスケジュールできるポッドを制御できます。 また、マルチポッド アプリケーションをクラスター全体に適切に分散する方法を制御することもできます。 |
(ワークロード) KEDA を使用して、ワークロードに固有のシグナルに基づいて意味のある自動スケール ルールセットを構築します。 | すべてのスケールの決定を CPU またはメモリのメトリックから導き出せるわけではありません。 スケーリングに関する考慮事項は、多くの場合、より複雑なデータ ポイントや外部データ ポイントから生まれます。 KEDA を使用すると、キュー内のメッセージの数やトピックのラグの長さなど、イベントに基づいてアプリケーションをスケーリングできます。 |
Azure ポリシー
Azure には、一般的な Azure ポリシーや Kubernetes 用の Azure Policy アドオン、クラスター内など、Azure リソースに適用される AKS に関連する広範な組み込みポリシーセットが用意されています。 Azure リソース ポリシーの多くは、 Audit/Deny と Deploy If Not Exists バリアントの 両方に含まれています。 組み込みの Azure Policy 定義に加えて、AKS リソースと Kubernetes 用の Azure Policy アドオンの両方にカスタム ポリシーを作成できます。
この記事の推奨事項の一部は、Azure Policy を使用して監査できます。 たとえば、次のクラスター ポリシーを確認できます。
- クラスターには、ポッドの仕様に合わせて対応性またはライブネスの正常性プローブが構成されています。
- クラウドベースのポリシー用の Microsoft Defender。
- 認証モードと構成ポリシー (Microsoft Entra ID、RBAC など)、ローカル認証を無効にします。
- プライベート クラスターを含む API サーバー ネットワーク アクセス ポリシー。
- GitOps 構成ポリシー。
- 診断設定ポリシー。
- AKS バージョンの制限。
- コマンド呼び出しを禁止します。
次のクラスターとワークロード ポリシーを確認することもできます。
- Linux ベースのワークロードに対する Kubernetes クラスター ポッドのセキュリティ イニシアチブ。
- AppArmor、sysctl、セキュリティ キャップ、SELinux、seccomp、特権コンテナー、自動マウント クラスター API 資格情報などのポッドとコンテナーの機能ポリシーを含めます。
- マウント、ボリューム ドライバー、およびファイルシステム ポリシー。
- ホスト ネットワーク、ポート、許可された外部 IP、HTTP、内部ロード バランサーなど、ポッドとコンテナーのネットワーク ポリシー。
- 名前空間のデプロイの制限。
- CPU とメモリのリソース制限。
包括的なガバナンスについては、 Kubernetes の Azure Policy 組み込み定義 と、コンピューティング レイヤーのセキュリティに影響する可能性があるその他のポリシーを確認します。
Azure Advisor の推奨事項
Azure Advisor は、Azure デプロイを最適化するためのベスト プラクティスに従うのに役立つ、パーソナライズされたクラウド コンサルタントです。
詳細については、 Azure Advisor に関するページを参照してください。
アーキテクチャの例
主要な推奨事項を示す基本的なアーキテクチャ: AKS ベースライン アーキテクチャ。
関連コンテンツ
この記事で強調表示されている推奨事項を示すリソースとして、次の記事を検討してください。
- AKS ベースライン アーキテクチャ
- 高度な AKS マイクロサービス アーキテクチャ
- PCI-DSS ワークロード用の AKS クラスター
- マルチリージョン クラスターの AKS ベースライン
- AKS ランディング ゾーン アクセラレータ
次の製品ドキュメントを使用して、実装の専門知識を構築します。