

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

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

# EKS 機能をトラブルシューティングする
<a name="capabilities-troubleshooting"></a>

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

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

## 一般的なトラブルシューティングのアプローチ
<a name="_general_troubleshooting_approach"></a>

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

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

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

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

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

## 機能のヘルスを確認する
<a name="_check_capability_health"></a>

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

 **コンソール:**

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

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

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

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

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

[機能] タブには以下が表示されます。
+ 機能の名前とタイプ
+ 現在のステータス
+ ヘルスの問題とその説明

 **AWS CLI**:

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

レスポンスは以下のとおりです。
+  **status**: 機能の現在の状態 (`CREATING`、`ACTIVE`、`UPDATING`、`DELETING`、`CREATE_FAILED`、`UPDATE_FAILED`)
+  **health**: 機能が検出した問題などのヘルス情報

## 機能でよく見られるステータス
<a name="_common_capability_statuses"></a>

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

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

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

 **CREATE\$1FAILED** または **UPDATE\$1FAILED**: セットアップまたは更新でエラーが発生しました。詳細については、ヘルスに関するセクションを確認してください。一般的な原因:
+ IAM ロールの信頼ポリシーが正しくないか、見つかりません。
+ IAM ロールが存在しないか、アクセスできません。
+ クラスターアクセスに問題があります。
+ 設定パラメータが無効です。

## Kubernetes リソースのステータスを確認する
<a name="_verify_kubernetes_resource_status"></a>

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 アクセス許可とクラスターアクセスを確認する
<a name="_review_iam_permissions_and_cluster_access"></a>

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

### IAM ロール許可をチェックする
<a name="_check_iam_role_permissions"></a>

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

```
# 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 アクセスエントリとアクセスポリシーを確認する
<a name="_check_eks_access_entries_and_access_policies"></a>

どの機能でも、動作しているクラスターで適切な 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 はそのクラスターにアプリケーションをデプロイできません。設定の詳細については、「[ターゲットクラスターを登録する](argocd-register-clusters.md)」を参照してください。

## 機能に固有のトラブルシューティング
<a name="_capability_specific_troubleshooting"></a>

各機能タイプに固有の詳しいトラブルシューティングガイダンスについては、以下を参照してください。
+  [ACK 機能に関する問題をトラブルシューティングする](ack-troubleshooting.md) - ACK リソースの作成、IAM アクセス許可、クロスアカウントアクセスをトラブルシューティングします。
+  [Argo CD 機能に関する問題をトラブルシューティングする](argocd-troubleshooting.md) - アプリケーション同期、リポジトリ認証、マルチクラスターデプロイをトラブルシューティングします。
+  [kro 機能に関する問題をトラブルシューティングする](kro-troubleshooting.md) - ResourceGraphDefinitions、CEL 式、RBAC アクセス許可をトラブルシューティングします。

## すべての機能に共通する問題
<a name="_common_issues_across_all_capabilities"></a>

### CREATING 状態で機能が停止する
<a name="_capability_stuck_in_creating_state"></a>

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

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

   ```
   aws eks describe-capability \
     --region region-code \
     --cluster-name my-cluster \
     --capability-name my-capability-name \
     --query 'capability.health'
   ```

1. IAM ロールが存在し、信頼ポリシーが適切であることを確認します。

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

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

### リソースが作成または更新されない
<a name="_resources_not_being_created_or_updated"></a>

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

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

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

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

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

### 機能のヘルスに問題がある
<a name="_capability_health_shows_issues"></a>

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

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

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

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

## 次のステップ
<a name="_next_steps"></a>
+  [機能リソースの使用](working-with-capabilities.md) - 機能リソースを管理する
+  [ACK 機能に関する問題をトラブルシューティングする](ack-troubleshooting.md) - ACK に固有のトラブルシューティングを行う
+  [Argo CD 機能に関する問題をトラブルシューティングする](argocd-troubleshooting.md) - Argo CD に固有のトラブルシューティングを行う
+  [kro 機能に関する問題をトラブルシューティングする](kro-troubleshooting.md) - kro に固有のトラブルシューティングを行う
+  [EKS 機能のセキュリティに関する考慮事項](capabilities-security.md) - 機能のセキュリティ面のベストプラクティス