EKS 機能をトラブルシューティングする - Amazon EKS

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

EKS 機能をトラブルシューティングする

このトピックでは、機能のヘルスチェック、よくある問題、機能固有のトラブルシューティングへのリンクなど、EKS 機能に関する一般的なトラブルシューティングのガイダンスを示します。

注記

EKS の機能は完全に管理され、クラスターの外部で実行されます。コントローラーのログや名前空間にアクセスすることはできません。トラブルシューティングでは、機能のヘルス、リソースのステータス、設定に焦点を当てています。

一般的なトラブルシューティングのアプローチ

EKS 機能をトラブルシューティングするときは、次の一般的なアプローチに従ってください。

  1. 機能のヘルスを確認する: aws eks describe-capability を使用して、機能のステータスとヘルスに関する問題を表示します。

  2. リソースのステータスを確認する: 作成した Kubernetes リソース (CRD) のステータス条件とイベントを確認します。

  3. IAM アクセス許可を確認する: 機能ロールに必要なアクセス許可があることを確認します。

  4. 設定を確認する: 機能固有の設定が適切であることを確認します。

機能のヘルスを確認する

すべての EKS 機能が、EKS コンソールと describe-capability API を介してヘルス情報を提供します。

コンソール:

  1. https://console.aws.amazon.com/eks/home#/clusters で Amazon EKS コンソールを開きます。

  2. クラスター名を選択します。

  3. [オブザーバビリティ] タブを選択します。

  4. [クラスターを監視する] を選択します。

  5. [機能] タブを選択すると、すべての機能のヘルスとステータスが表示されます。

[機能] タブには以下が表示されます。

  • 機能の名前とタイプ

  • 現在のステータス

  • ヘルスの問題とその説明

AWS CLI:

aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-capability-name

レスポンスは以下のとおりです。

  • status: 機能の現在の状態 (CREATINGACTIVEUPDATINGDELETINGCREATE_FAILEDUPDATE_FAILED)

  • health: 機能が検出した問題などのヘルス情報

機能でよく見られるステータス

CREATING: 機能のセットアップ中です。

ACTIVE: 機能の実行中ですぐに使用できるようになります。リソースが想定どおりに動作しない場合は、リソースのステータスと IAM アクセス許可を確認してください。

UPDATING: 設定変更の適用中です。ステータスが ACTIVE に戻るまで待ちます。

CREATE_FAILED または UPDATE_FAILED: セットアップまたは更新でエラーが発生しました。詳細については、ヘルスに関するセクションを確認してください。一般的な原因:

  • IAM ロールの信頼ポリシーが正しくないか、見つかりません。

  • IAM ロールが存在しないか、アクセスできません。

  • クラスターアクセスに問題があります。

  • 設定パラメータが無効です。

Kubernetes リソースのステータスを確認する

EKS 機能は、クラスターで Kubernetes カスタムリソース定義 (CRD) を作成および管理します。トラブルシューティングするときは、作成したリソースのステータスを確認してください。

# List resources of a specific type kubectl get resource-kind -A # Describe a specific resource to see conditions and events kubectl describe resource-kind resource-name -n namespace # View resource status conditions kubectl get resource-kind resource-name -n namespace -o jsonpath='{.status.conditions}' # View events related to the resource kubectl get events --field-selector involvedObject.name=resource-name -n namespace

リソースのステータス条件では、以下の情報を確認できます。

  • リソースの準備ができているかどうか

  • 何かエラーが発生しているか

  • 現在の調整状態

IAM アクセス許可とクラスターアクセスを確認する

機能で発生する問題の多くは、IAM アクセス許可に問題があるか、クラスターアクセス設定が欠落していることに起因しています。機能ロールのアクセス許可とクラスターアクセスのエントリの両方を検証します。

IAM ロール許可をチェックする

必要なアクセス許可が機能ロールに付与されていることを確認します。

# List attached managed policies aws iam list-attached-role-policies --role-name my-capability-role # List inline policies aws iam list-role-policies --role-name my-capability-role # Get specific policy details aws iam get-role-policy --role-name my-capability-role --policy-name policy-name # View the role's trust policy aws iam get-role --role-name my-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-name my-cluster \ --region region-code

リスト内で機能ロール ARN を探します。見つからない場合、機能はクラスターにアクセスできません。

エントリにアタッチされているアクセスポリシーを確認する:

aws eks list-associated-access-policies \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::111122223333:role/my-capability-role \ --region region-code

どの機能にも、適切なアクセスポリシーが必要です。

  • ACK: Kubernetes リソースを作成および管理するためのアクセス許可が必要です。

  • kro: Kubernetes リソースを作成および管理するためのアクセス許可が必要です。

  • Argo CD: Application を作成および管理するためのアクセス許可が必要です。また、マルチクラスターのデプロイには、リモートターゲットクラスターにアクセスエントリが必要です。

Argo CD によるマルチクラスターのデプロイの場合:

リモートクラスターにデプロイする場合は、ターゲットクラスターごとに機能ロールのアクセスエントリがあることを確認します。

# Check Access Entry on target cluster aws eks describe-access-entry \ --cluster-name target-cluster \ --principal-arn arn:aws:iam::111122223333:role/argocd-capability-role \ --region region-code

ターゲットクラスターにアクセスエントリがない場合、Argo CD はそのクラスターにアプリケーションをデプロイできません。設定の詳細については、「ターゲットクラスターを登録する」を参照してください。

機能に固有のトラブルシューティング

各機能タイプに固有の詳しいトラブルシューティングガイダンスについては、以下を参照してください。

すべての機能に共通する問題

CREATING 状態で機能が停止する

機能が想定よりも長く CREATING 状態のままである場合:

  1. コンソール ([オブザーバビリティ] > [クラスターをモニタリング] > [機能] タブ) または AWS CLI を使用して、機能のヘルスをチェックして特定の問題がないか確認します。

    aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-capability-name \ --query 'capability.health'
  2. IAM ロールが存在し、信頼ポリシーが適切であることを確認します。

  3. クラスターがアクセス可能で正常であることを確認します。

  4. 機能のセットアップを阻害するようなクラスターレベルの問題がないか確認します。

リソースが作成または更新されない

機能が ACTIVE であるのにリソースが作成または更新されない場合:

  1. リソースのステータスをチェックしてエラー条件を確認します。

  2. 特定の AWS サービス (ACK) またはリポジトリ (Argo CD) に対する IAM アクセス許可を検証します。

  3. 基礎となるリソース (kro) を作成するための RBAC アクセス許可を確認します。

  4. リソース仕様をチェックして検証エラーがないか確認します。

機能のヘルスに問題がある

describe-capability がヘルスの問題を示している場合:

  1. 問題の説明を注意深く読みます。具体的な問題を示していることがよくあります。

  2. 根本原因 (IAM アクセス許可や設定エラーなど) に対処します。

  3. 問題が解決すると、機能は自動的に復旧します。

次のステップ