このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
ACK 機能に関する問題をトラブルシューティングする
このトピックでは、機能のヘルスチェック、リソースステータスの確認、IAM アクセス許可の問題など、EKS Capability for ACK をトラブルシューティングする際のガイダンスを示します。
注記
EKS の機能は完全に管理され、クラスターの外部で実行されます。コントローラーのログや名前空間にアクセスすることはできません。トラブルシューティングでは、機能のヘルス、リソースのステータス、IAM の設定に焦点を当てています。
機能がアクティブなのにリソースが作成されない
ACK 機能のステータスが ACTIVE なのに AWS にリソースが作成されない場合は、機能のヘルス、リソースのステータス、IAM アクセス許可を確認してください。
機能のヘルスを確認する:
機能のヘルスとステータスの問題は、EKS コンソールまたは AWS CLI を使用して表示できます。
コンソール:
-
https://console.aws.amazon.com/eks/home#/clusters で Amazon EKS コンソールを開きます。
-
クラスター名を選択します。
-
[オブザーバビリティ] タブを選択します。
-
[クラスターを監視する] を選択します。
-
[機能] タブを選択すると、すべての機能のヘルスとステータスが表示されます。
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-namemy-ack-capability-roleaws iam list-role-policies --role-namemy-ack-capability-role# Get specific policy details aws iam get-role-policy --role-namemy-ack-capability-role--policy-namepolicy-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-namecross-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 bucketmy-cross-account-bucket-nproduction# List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselectormy-selector-o jsonpath='{.spec.namespaceSelector}'
IAMRoleSelected 条件を確認する:
ACK.IAMRoleSelected 条件を調べて、IAMRoleSelector がリソースに正常に一致したものであることを確認します。
# Check if IAMRoleSelector was matched kubectl get bucketmy-cross-account-bucket-nproduction-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 アクセス許可を設定する」を参照してください。
次のステップ
-
EKS を利用する場合の ACK の考慮事項 - ACK の考慮事項とベストプラクティス
-
ACK アクセス許可を設定する - IAM アクセス許可およびマルチアカウントパターンを設定する
-
ACK の概念 - ACK の概念およびリソースライフサイクルを理解する
-
EKS 機能をトラブルシューティングする - 一般的な機能をトラブルシューティングする際のガイダンス