このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
EKS 機能をトラブルシューティングする
注記
EKS の機能は完全に管理され、クラスターの外部で実行されます。コントローラーの名前空間に直接アクセスすることはできません。トラブルシューティングでは、機能のヘルス、リソースのステータス、設定、コントローラーログに焦点を当てています。コントローラーの動作の可視化のためにコントローラーのログ配信を設定できます。「EKS 機能コントローラーログにアクセスする」を参照してください。
一般的なトラブルシューティングのアプローチ
EKS 機能をトラブルシューティングするときは、次の一般的なアプローチに従ってください。
-
機能のヘルスを確認する:
aws eks describe-capabilityを使用して、機能のステータスとヘルスに関する問題を表示します。 -
リソースのステータスを確認する: 作成した Kubernetes リソース (CRD) のステータス条件とイベントを確認します。
-
コントローラーログを確認する: ログ配信が設定されている場合、コントローラーログをクエリしてエラーと調整の詳細を確認します。
-
IAM アクセス許可を確認する: 機能ロールに必要なアクセス許可があることを確認します。
-
設定を確認する: 機能固有の設定が適切であることを確認します。
トラブルシューティングにコントローラーログを使用する
コントローラーログ配信を設定している場合 (「EKS 機能コントローラーログにアクセスする」を参照)、ログをクエリして、調整エラー、リソースの競合、設定の問題を特定できます。
すべてのコントローラーのエラーをクエリする
fields @timestamp, controller, message, error | filter level = "error" | sort @timestamp desc | limit 50
特定の ACK サービスコントローラーのログをフィルタリングする
controllerGroup フィールドを使用して、特定の ACK サービスコントローラーからログを分離します。
fields @timestamp, message, error | filter controllerGroup = "s3.services.k8s.aws" | filter level = "error" | sort @timestamp desc
リソースの種類 (EC2 コントローラーからの SecurityGroup ログのみなど) でさらにフィルタリングするには、次のようにします。
fields @timestamp, message, error | filter controllerGroup = "ec2.services.k8s.aws" | filter controllerKind = "SecurityGroup" | sort @timestamp desc | limit 100
特定の Argo CD アプリケーションのログをフィルタリングする
application フィールドを使用して、特定の Argo CD アプリケーションのログを分離します。
fields @timestamp, message, error | filter application = "my-application" | sort @timestamp desc | limit 100
特定のリソースの調整を追跡する
reconcileID フィールドを使用して、1 つの調整サイクルを追跡します。
fields @timestamp, level, message, error | filter reconcileID = "your-reconcile-id" | sort @timestamp asc
問題を示す一般的なログパターン
-
繰り返される調整エラー — コントローラーがリソースの目的の状態に到達できません。IAM アクセス許可の失敗や無効なリソース設定などの詳細について、
errorフィールドを確認します。 -
AWS API エラーでの「調整エラー」 — 機能ロールに特定の AWS サービスオペレーションのアクセス許可がない可能性があります。エラーメッセージを確認し、それに応じて IAM ポリシーを更新します。
-
リソースのログエントリがない — コントローラーによる調整が期待されるリソースのログが表示されない場合は、機能が
ACTIVEであり、機能がアクセスできる名前空間にリソースが存在することを確認します。
機能のヘルスを確認する
すべての EKS 機能が、EKS コンソールと describe-capability API を介してヘルス情報を提供します。
コンソール:
-
https://console.aws.amazon.com/eks/home#/clusters で Amazon EKS コンソールを開きます。
-
クラスター名を選択します。
-
[オブザーバビリティ] タブを選択します。
-
[クラスターを監視する] を選択します。
-
[機能] タブを選択すると、すべての機能のヘルスとステータスが表示されます。
[機能] タブには以下が表示されます。
-
機能の名前とタイプ
-
現在のステータス
-
ヘルスの問題とその説明
AWS CLI:
aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-capability-name
レスポンスは以下のとおりです。
-
status: 機能の現在の状態 (
CREATING、ACTIVE、UPDATING、DELETING、CREATE_FAILED、UPDATE_FAILED) -
health: 機能が検出した問題などのヘルス情報
機能でよく見られるステータス
CREATING: 機能のセットアップ中です。
ACTIVE: 機能の実行中ですぐに使用できるようになります。リソースが想定どおりに動作しない場合は、リソースのステータスと IAM アクセス許可を確認してください。
UPDATING: 設定変更の適用中です。ステータスが ACTIVE に戻るまで待ちます。
CREATE_FAILED または UPDATE_FAILED: セットアップまたは更新でエラーが発生しました。詳細については、ヘルスに関するセクションを確認してください。一般的な原因:
-
IAM ロールの信頼ポリシーが正しくないか、見つかりません。
-
IAM ロールが存在しないか、アクセスできません
-
クラスターアクセスに問題があります。
-
設定パラメータが無効です。
Kubernetes リソースのステータスを確認する
EKS 機能は、クラスターで Kubernetes カスタムリソース定義 (CRD) を作成および管理します。トラブルシューティングするときは、作成したリソースのステータスを確認してください。
# List resources of a specific type kubectl getresource-kind-A # Describe a specific resource to see conditions and events kubectl describeresource-kindresource-name-nnamespace# View resource status conditions kubectl getresource-kindresource-name-nnamespace-o jsonpath='{.status.conditions}' # View events related to the resource kubectl get events --field-selector involvedObject.name=resource-name-nnamespace
リソースのステータス条件では、以下の情報を確認できます。
-
リソースの準備ができているかどうか
-
何かエラーが発生しているか
-
現在の調整状態
IAM アクセス許可とクラスターアクセスを確認する
機能で発生する問題の多くは、IAM アクセス許可に問題があるか、クラスターアクセス設定が欠落していることに起因しています。機能ロールのアクセス許可とクラスターアクセスのエントリの両方を検証します。
IAM ロール許可をチェックする
必要なアクセス許可が機能ロールに付与されていることを確認します。
# List attached managed policies aws iam list-attached-role-policies --role-namemy-capability-role# List inline policies aws iam list-role-policies --role-namemy-capability-role# Get specific policy details aws iam get-role-policy --role-namemy-capability-role--policy-namepolicy-name# View the role's trust policy aws iam get-role --role-namemy-capability-role--query 'Role.AssumeRolePolicyDocument'
この信頼ポリシーは、capabilities.eks.amazonaws.com サービスプリンシパルを許可する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "capabilities.eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
EKS アクセスエントリとアクセスポリシーを確認する
どの機能でも、動作しているクラスターで適切な EKS アクセスエントリとアクセスポリシーが必要です。
アクセスエントリが存在することを確認する:
aws eks list-access-entries \ --cluster-namemy-cluster\ --regionregion-code
リスト内で機能ロール ARN を探します。見つからない場合、機能はクラスターにアクセスできません。
エントリにアタッチされているアクセスポリシーを確認する:
aws eks list-associated-access-policies \ --cluster-namemy-cluster\ --principal-arnarn:aws:iam::111122223333:role/my-capability-role\ --regionregion-code
どの機能にも、適切なアクセスポリシーが必要です。
-
ACK: Kubernetes リソースを作成および管理するためのアクセス許可が必要です。
-
kro: Kubernetes リソースを作成および管理するためのアクセス許可が必要です。
-
Argo CD: Application を作成および管理するためのアクセス許可が必要です。また、マルチクラスターのデプロイには、リモートターゲットクラスターにアクセスエントリが必要です。
Argo CD によるマルチクラスターのデプロイの場合:
リモートクラスターにデプロイする場合は、ターゲットクラスターごとに機能ロールのアクセスエントリがあることを確認します。
# Check Access Entry on target cluster aws eks describe-access-entry \ --cluster-nametarget-cluster\ --principal-arnarn:aws:iam::111122223333:role/argocd-capability-role\ --regionregion-code
ターゲットクラスターにアクセスエントリがない場合、Argo CD はそのクラスターにアプリケーションをデプロイできません。設定の詳細については、「ターゲットクラスターを登録する」を参照してください。
機能に固有のトラブルシューティング
各機能タイプに固有の詳しいトラブルシューティングガイダンスについては、以下を参照してください。
-
ACK 機能に関する問題をトラブルシューティングする - ACK リソースの作成、IAM アクセス許可、クロスアカウントアクセスをトラブルシューティングします。
-
Argo CD 機能に関する問題をトラブルシューティングする - アプリケーション同期、リポジトリ認証、マルチクラスターデプロイをトラブルシューティングします。
-
kro 機能に関する問題をトラブルシューティングする - ResourceGraphDefinitions、CEL 式、RBAC アクセス許可をトラブルシューティングします。
すべての機能に共通する問題
CREATING 状態で機能が停止する
機能が想定よりも長く CREATING 状態のままである場合:
-
コンソール ([オブザーバビリティ] > [クラスターをモニタリング] > [機能] タブ) または AWS CLI を使用して、機能のヘルスをチェックして特定の問題がないか確認します。
aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-capability-name\ --query 'capability.health' -
IAM ロールが存在し、信頼ポリシーが適切であることを確認します。
-
クラスターがアクセス可能で正常であることを確認します。
-
機能のセットアップを阻害するようなクラスターレベルの問題がないか確認します。
リソースが作成または更新されない
機能が ACTIVE であるのにリソースが作成または更新されない場合:
-
リソースのステータスをチェックしてエラー条件を確認します。
-
特定の AWS サービス (ACK) またはリポジトリ (Argo CD) に対する IAM アクセス許可を検証します。
-
基礎となるリソース (kro) を作成するための RBAC アクセス許可を確認します。
-
リソース仕様をチェックして検証エラーがないか確認します。
機能のヘルスに問題がある
describe-capability がヘルスの問題を示している場合:
-
問題の説明を注意深く読みます。具体的な問題を示していることがよくあります。
-
根本原因 (IAM アクセス許可や設定エラーなど) に対処します。
-
問題が解決すると、機能は自動的に復旧します。
次のステップ
-
機能リソースの使用 - 機能リソースを管理する
-
ACK 機能に関する問題をトラブルシューティングする - ACK に固有のトラブルシューティングを行う
-
Argo CD 機能に関する問題をトラブルシューティングする - Argo CD に固有のトラブルシューティングを行う
-
kro 機能に関する問題をトラブルシューティングする - kro に固有のトラブルシューティングを行う
-
EKS 機能のセキュリティに関する考慮事項 - 機能のセキュリティ面のベストプラクティス