AWS Fargate OS パッチ適用イベントのアクションを設定する - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

AWS Fargate OS パッチ適用イベントのアクションを設定する

重要

Amazon EKS を使用した AWS Fargate は、AWS GovCloud (米国東部) および AWS GovCloud (米国西部) ではご利用いただけません。

Amazon EKS は定期的に AWS Fargate ノードの OS にパッチを適用し、ノードを安全に保ちます。パッチ適用プロセスの一環として、ノードをリサイクルして OS パッチをインストールします。更新は、サービスへの影響を最小限に抑える方法で試行されます。ただし、Pods のエビクションが正常に行われない場合は、ポッドを削除する必要がある場合があります。以下に示しているのは、中断の可能性を最小限に抑えるために実行できるアクションです。

  • 適切な Pod の中断予算 (PDB) を設定して、同時にダウンする Pods の数をコントロールします。

  • Pods が削除される前に、失敗したエビクションに対応する Amazon EventBridge ルールを作成します。

  • AWS User Notifications で通知設定を作成します。

Amazon EKS は、Kubernetes コミュニティと緊密に協力して、できるだけ早く、バグ修正とセキュリティパッチが入手可能になるようにしています。すべての Fargate Pods は最新の Kubernetes パッチバージョンで起動されます。このバージョンは、Amazon EKS からクラスターの Kubernetes バージョンとして入手できます。以前のパッチバージョンの Pod をお持ちの場合、Amazon EKS はそれをリサイクルして最新バージョンに更新することがあります。これにより、Pods に最新のセキュリティアップデートが確実に装備されます。そのため、重大な「Common Vulnerabilities and Exposures」(共通脆弱性識別子) (CVE) 問題があっても、最新の状態に保たれてセキュリティリスクが軽減されています。

Pods がリサイクルされるときに一度にダウンする Pods の数を制限するために、Pod の中断予算 (PDB) を設定できます。PDB を使用して、更新の実行を許可しながら、各アプリケーションの要件に基づいて最小限使用可能なポッドを定義できます。詳細については、「Kubernetes ドキュメント」の「Specifying a Disruption Budget for your Application」(アプリケーションの中断予算を指定する) を参照してください。

Amazon EKS は エビクションAPI を使用して、アプリケーションに設定した PDB を尊重しながら Pod を安全に排出します。ポッドのエビクションは、影響を最小限に抑えるために、アベイラビリティーゾーンごとに行われます。エビクションが成功した場合、新しい Pod は最新のパッチを取得し、それ以上のアクションは必要ありません。

Pod のエビクションが失敗すると、Amazon EKS はエビクションに失敗した Pods の詳細を含むイベントをアカウントに送信します。スケジュールされた終了時刻より前にメッセージに対応できます。具体的な時刻は、パッチの緊急性によって異なります。その時刻になると、Amazon EKS は Pods のエビクションを再び試行します。ただし、今回は、エビクションが失敗しても新しいイベントは送信されません。エビクションが再び失敗すると、新しい Pods に最新のパッチが適用できるように、既存の Pods が定期的に削除されます。

Pod のエビクションが失敗したときに受信されるイベントのサンプルを次に示します。これには、クラスター、Pod 名、Pod 名前空間、Fargate プロファイル、およびスケジュールされた終了時刻に関する詳細が含まれます。

{ "version": "0", "id": "12345678-90ab-cdef-0123-4567890abcde", "detail-type": "EKS Fargate Pod Scheduled Termination", "source": "aws.eks", "account": "111122223333", "time": "2021-06-27T12:52:44Z", "region": "region-code", "resources": [ "default/my-database-deployment" ], "detail": { "clusterName": "my-cluster", "fargateProfileName": "my-fargate-profile", "podName": "my-pod-name", "podNamespace": "default", "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget", "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]" } }

さらに、複数の PDB が Pod に関連付けられていると、エビクション失敗イベントが発生する可能性があります。このイベントは次のエラーメッセージを返します。

"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",

このイベントに基づいて、目的のアクションを作成できます。例えば、Pod の中断予算 (PDB) を調整して、Pods のエビクションの方法をコントロールできます。具体的には、利用可能な Pods の目標パーセンテージを指定する PDB から始めたとします。アップグレード中に Pods が強制終了される前に、PDB を異なる割合の Pods に調整できます。このイベントを受信するには、クラスターが属する AWS アカウント および AWS リージョン で Amazon EventBridge ルールを作成する必要があります。ルールでは、次のカスタムパターンを使用する必要があります。EventBridge ルールの作成の詳細については、Amazon EventBridge ユーザーガイドの「イベントに反応する Amazon EventBridge ルールの作成」を参照してください 。

{ "source": ["aws.eks"], "detail-type": ["EKS Fargate Pod Scheduled Termination"] }

キャプチャするためのイベントに適切なターゲットを設定できます。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge ターゲット」を参照してください。AWS User Notifications で通知設定を作成することもできます。AWS Management Console を使用して通知を作成する場合は、[イベントルール] で、[AWS のサービス 名] に [Elastic Kubernetes Service (EKS)] を選択し、[イベントタイプ] に [EKS Fargate Pod のスケジュールされた終了時刻] を選択します。詳細については、「AWS User Notifications ユーザーガイド」の「AWS User Notifications の開始方法」を参照してください。