ACK 機能に関する問題をトラブルシューティングする - Amazon EKS

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

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

ACK 機能に関する問題をトラブルシューティングする

このトピックでは、機能のヘルスチェック、リソースステータスの確認、IAM アクセス許可の問題など、EKS Capability for ACK をトラブルシューティングする際のガイダンスを示します。

注記

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

機能がアクティブなのにリソースが作成されない

ACK 機能のステータスが ACTIVE なのに AWS にリソースが作成されない場合は、機能のヘルス、リソースのステータス、IAM アクセス許可を確認してください。

機能のヘルスを確認する:

機能のヘルスとステータスの問題は、EKS コンソールまたは AWS CLI を使用して表示できます。

コンソール:

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

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

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

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

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

AWS CLI:

# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-ack # Look for issues in the health section

一般的な原因:

  • IAM アクセス許可がない: 機能ロールに AWS サービスのアクセス許可が付与されていません。

  • 名前空間が間違っている: IAMRoleSelector が適切でない名前空間にリソースが作成されました。

  • リソース仕様が無効である: リソースのステータス条件に検証エラーがないか確認してください。

  • API スロットリング: AWS API レートリミットに達しています。

  • アドミッションウェブフック: アドミッションウェブフックのために、コントローラーがリソースステータスにパッチを適用できません。

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

# Describe the resource to see conditions and events kubectl describe bucket my-bucket -n default # Look for status conditions kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}' # View resource events kubectl get events --field-selector involvedObject.name=my-bucket -n default

IAM アクセス許可を確認する:

# View the Capability Role's policies aws iam list-attached-role-policies --role-name my-ack-capability-role aws iam list-role-policies --role-name my-ack-capability-role # Get specific policy details aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name

AWS にリソースが作成されているのに Kubernetes に表示されない

ACK で追跡できるリソースは、Kubernetes マニフェストを介して作成されたものだけです。ACK で既存の AWS リソースを管理するには、採用機能を使用します。

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

リソースの採用の詳細については、「ACK の概念」を参照してください。

クロスアカウントリソースが作成されない

IAM ロールセレクターの使用時にターゲット AWS アカウントにリソースが作成されない場合は、信頼関係と IAMRoleSelector 設定を確認します。

信頼関係を確認する:

# Check the trust policy in the target account role aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'

信頼ポリシーは、ソースアカウントの機能ロールに引き受けられるようになっている必要があります。

IAMRoleSelector 設定を確認する:

# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector

名前空間の配置を確認する:

IAMRoleSelectors は、クラスター範囲のリソースですが、特定の名前空間をターゲットとします。ACK リソースが IAMRoleSelector の名前空間セレクターに一致する名前空間にあることを確認してください。

# Check resource namespace kubectl get bucket my-cross-account-bucket -n production # List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'

IAMRoleSelected 条件を確認する:

ACK.IAMRoleSelected 条件を調べて、IAMRoleSelector がリソースに正常に一致したものであることを確認します。

# Check if IAMRoleSelector was matched kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'

条件が False であるか指定されていない場合は、IAMRoleSelector の名前空間セレクターがリソースの名前空間と一致しません。セレクターの namespaceSelector がリソースの名前空間ラベルと一致していることを確認します。

機能ロールのアクセス許可を確認する:

機能ロールには、ターゲットアカウントロールの sts:AssumeRole および sts:TagSession のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`" } ] }

クロスアカウント設定の詳細については、「ACK アクセス許可を設定する」を参照してください。

次のステップ