Amazon EKS リソーススケーリング実行ブロック - Amazon Application Recovery Controller (ARC)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EKS リソーススケーリング実行ブロック

EKS リソーススケーリング実行ブロックを使用すると、マルチリージョンリカバリプロセスの一部として EKS リソースをスケーリングできます。実行ブロックを設定するときに、非アクティブ化されるリージョンのキャパシティを基準として、スケールするキャパシティのパーセンテージを定義します。

EKS アクセスエントリのアクセス許可を設定する

EKS リソーススケーリングの実行ブロックを追加する前に、EKS クラスター内の Kubernetes リソースでアクションを実行するために必要なアクセス許可をリージョン切り替えに提供する必要があります。リージョン切り替えへのアクセスを提供するには、リージョン切り替えアクセスポリシー arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy を使用して、リージョン切り替えがプランの実行に使用する IAM ロールの EKS アクセスエントリを作成する必要があります。

リージョン切り替え EKS アクセスポリシー

以下の情報は、EKS アクセスポリシーに関する詳細を示します。

名前: AmazonARCRegionSwitchScalingPolicy

ポリシー ARN: arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy

Kubernetes API グループ Kubernetes resources Kubernetes 動詞 (許可)

*

*/scale

get、update

*

*/status

get

autoscaling

horizontalpodautoscalers

get、patch

リージョン切り替えの EKS アクセスエントリを作成する

次の例では、リージョン切り替えが Kubernetes リソースに対して特定のアクションを実行できるように、必要なアクセスエントリとアクセスポリシーの関連付けを作成する方法について説明します。この例では、IAM ロール arn:aws:iam::555555555555:role/my-role の EKS クラスター my-cluster 内の名前空間 my-namespace1 にアクセス許可が適用されます。

これらのアクセス許可を設定するときは、実行ブロック内の両方の EKS クラスターに対してこれらのステップを実行してください。

前提条件

開始する前に、クラスターの認証モードを API_AND_CONFIG_MAP または API に変更します。認可モードを変更すると、アクセスエントリの API が追加されます。詳細については、「Amazon EKS ユーザーガイド」の「アクセスエントリを使用するように認証モードを変更する」を参照してください。

アクセスエントリを作成する

最初のステップでは、次のような AWS CLI コマンドを使用してアクセスエントリを作成します。

aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws:iam::555555555555:user/my-user --type STANDARD

詳細については、「Amazon EKS ユーザーガイド」の「アクセスエントリを作成する」を参照してください。

アクセスエントリの関連付けを作成する

次に、次のような AWS CLI コマンドを使用して、リージョンスイッチアクセスポリシーへの関連付けを作成します。

aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::555555555555:role/my-role \ --access-scope type=namespace,namespaces=my-namespace1 --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy

詳細については、「Amazon EKS ユーザーガイド」の「アクセスポリシーをアクセスエントリに関連付ける」を参照してください。

実行ブロックの 2 番目の EKS クラスターで、他のリージョンでこれらのステップを繰り返し、両方のクラスターにリージョン切り替えでアクセスできるようにします。

構成

重要

EKS リソーススケーリング実行ブロックを追加する前に、まず正しいアクセス許可が設定されていることを確認してください。詳細については、「EKS アクセスエントリのアクセス許可を設定する」を参照してください。また、正しい IAM ポリシーが設定されていることを確認します。詳細については、「Amazon EKS リソーススケーリング実行ブロックサンプルポリシー」を参照してください。

リージョン切り替えは現在、apps/v1、Deployment、apps/v1 の ReplicaSet リソースをサポートしています。

実行ブロック設定には、次の値を入力します。

  1. ステップ名: 名前を入力します。

  2. ステップの説明 (オプション): ステップの説明を入力します。

  3. アプリケーション名: myApplication など、EKS アプリケーションの名前を入力します。

  4. Kubernetes リソースの種類: Deploymentなど、アプリケーションのリソースの種類を入力します。

  5. リージョンのリソース: リージョンごとに、EKS クラスター ARN、リソース名前空間など、EKS クラスターの情報を入力します。

  6. アクティブ化されたリージョンのキャパシティと一致する割合: アクティブ化されたリージョンで一致する、ソースリージョンで実行中のポッドの希望する割合を入力します。

  7. キャパシティモニタリングアプローチ: キャパシティモニタリングの唯一のオプション [24 時間にわたってサンプリングされた最大実行キャパシティ] が既に選択されています。

    このキャパシティモニタリングアプローチでは、EKS サービスリクエストに ReplicaCount 値を使用します。詳細については、「Amazon Elastic Kubernetes Service ユーザーガイド」の Amazon EKS での ARC ゾーンシフトの説明を参照してください。

  8. タイムアウト: タイムアウト値を入力します。

次に、[ステップを保存] を選択します。

仕組み

プランの実行中に、リージョン切り替えは、アクティブ化するリージョン内のターゲットリソースについて、過去 24 時間のサンプルされたレプリカの最大数を取得します。次に、式 ceil(percentToMatch * Source replica count) を使用して、送信先リソースに必要なレプリカ数を計算します。

レプリケート先の準備完了レプリカ数が希望する値よりも少ない場合、リージョン切り替えはレプリケート先のリソースレプリカ値を希望するキャパシティにスケールします。レプリカの準備が整うまで待機し、必要に応じてノードの自動スケーラーを活用してノードのキャパシティを増やします。

オプションの hpaName フィールドが空でない場合、リージョンは HorizontalPodAutoscaler にパッチを適用し、パッチ {"spec":{"behavior":{"scaleDown":{"selectPolicy":"Disabled"}}}} を使用して実行中または実行後に自動スケールダウンを防止します。

パッチ内のリソースのレプリカフィールドと HorizontalPodAutoscaler フィールドを無視するよう、GitOps ツールなどのドリフト修正ツールを必ず設定してください。

プラン評価の一環として評価されるもの

リージョン切り替えがプランを評価すると、リージョン切り替えは設定された EKS 実行ブロックとアクセス許可に対していくつかのチェックを実行します。リージョン切り替えは、プランの IAM ロールに EKS クラスターを記述し、関連するアクセスエントリポリシーを一覧表示するための正しいアクセス許可があることを確認します。リージョン切り替えは、IAM ロールが正しいアクセスエントリポリシーに関連付けられていることも検証するため、リージョン切り替えには Kubernetes リソースを操作するために必要なアクセス許可が付与されます。最後に、リージョン切り替えは、設定された EKS クラスターと Kubernetes リソースが存在することを確認します。

さらに、リージョン切り替えは、必要なモニタリングデータ (Kubernetes レプリカ数) が正常に収集および保存されていることをチェックし、リージョン切り替えプランの実行に必要な実行中のポッドの数をキャプチャします。