ACK 기능 관련 문제 해결 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

ACK 기능 관련 문제 해결

이 주제에서는 기능 상태 확인, 리소스 상태 확인 및 IAM 권한 문제를 포함하여 EKS의·ACK 기능에 대한 문제 해결 지침을 제공합니다.

참고

EKS 기능은 완전관리형 기능이며, 클러스터 외부에서 실행됩니다. 사용자는 컨트롤러 로그 또는 컨트롤러 네임스페이스에 대한 액세스 권한이 없습니다. 문제 해결은 기능 상태, 리소스 상태 및 IAM 구성에 중점을 둡니다.

기능이 ACTIVE이지만 리소스가 생성되지 않음

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

네임스페이스 정렬 확인:

IAMRoleSelector는 클러스터 범위의 리소스이지만 특정 네임스페이스를 대상으로 합니다. 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:AssumeRolests: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 권한 구성 섹션을 참조하세요.

다음 단계