이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
ACK 기능 관련 문제 해결
참고
EKS 기능은 완전관리형 기능이며, 클러스터 외부에서 실행됩니다. 사용자에게 컨트롤러 네임스페이스에 대한 직접 액세스 권한이 없습니다. 컨트롤러 동작을 볼 수 있도록 컨트롤러 로그 전송을 구성할 수 있습니다. EKS Capabilities 컨트롤러 로그에 액세스을(를) 참조하세요. 문제 해결은 기능 상태, 리소스 상태 및 IAM 구성에 중점을 둡니다.
기능이 ACTIVE 상태이지만 리소스가 생성되지 않음
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 \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-ack# Look for issues in the health section
일반적인 원인:
-
IAM 권한 누락: 기능 역할에 AWS 서비스에 대한 권한이 부족함
-
잘못된 네임스페이스: 적절한 IAMRoleSelector 없이 네임스페이스에서 생성된 리소스
-
유효하지 않은 리소스 사양: 리소스 상태 조건에 검증 오류가 있는지 확인
-
API 스로틀링: AWS API 속도 제한에 도달함
-
승인 웹후크: 컨트롤러가 리소스 상태를 패치하지 못하도록 차단하는 승인 웹후크
리소스 상태 확인:
# Describe the resource to see conditions and events kubectl describe bucketmy-bucket-n default # Look for status conditions kubectl get bucketmy-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 iamroleselectormy-selector
네임스페이스 정렬 확인:
IAMRoleSelector는 클러스터 범위의 리소스이지만 특정 네임스페이스를 대상으로 합니다. 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": [.replaceable]`"arn:aws:iam::444455556666:role/cross-account-ack-role"` } ] }
자세한 교차 계정 구성은 ACK 권한 구성 섹션을 참조하세요.
다음 단계
-
EKS에 대한 ACK 고려 사항 - ACK 고려 사항 및 모범 사례
-
ACK 권한 구성 - IAM 권한 및 다중 계정 패턴 구성
-
ACK 개념 - ACK 개념 및 리소스 수명 주기 이해
-
EKS 기능 문제 해결 - 일반 기능 문제 해결 지침