kro 캐퍼빌리티 문제 해결

kro 캐퍼빌리티 문제 해결

kro 캐퍼빌리티에서 발생하는 일반적인 문제를 해결하는 방법을 설명합니다.

출처: 문서

본문

참고

EKS 캐퍼빌리티는 완전 관리형이며 클러스터 밖에서 실행됩니다. 컨트롤러 네임스페이스에 직접 접근할 수 없으므로, 문제 해결은 캐퍼빌리티 상태, 리소스 상태, 구성, 그리고 컨트롤러 로그에 초점을 맞춥니다. 컨트롤러 로그 전달을 구성해 컨트롤러 동작에 대한 가시성을 얻을 수 있습니다. 자세한 내용은 EKS 캐퍼빌리티 컨트롤러 로그 접근을 참고하세요.

일반적인 문제 해결 접근 방식

kro 캐퍼빌리티 문제를 해결할 때는 다음의 일반적인 접근 방식을 따르세요.

  • 캐퍼빌리티 상태 확인: aws eks describe-capability를 사용해 캐퍼빌리티 상태와 상태 문제를 봅니다.
  • 리소스 상태 확인: 생성한 Kubernetes 리소스(CRD)에서 상태 조건과 이벤트를 확인합니다.
  • 컨트롤러 로그 검토: 로그 전달을 구성했다면 컨트롤러 로그에서 오류와 조정 세부 정보를 조회합니다.
  • IAM 권한 검토: 캐퍼빌리티 역할이 필요한 권한을 보유했는지 확인합니다.
  • 구성 확인: 캐퍼빌리티별 구성이 올바른지 검증합니다.

컨트롤러 로그를 사용한 문제 해결

컨트롤러 로그 전달을 구성했다면(자세한 내용은 EKS 캐퍼빌리티 컨트롤러 로그 접근 참고) 로그를 조회해 조정 오류, 리소스 충돌, 구성 문제를 식별할 수 있습니다.

모든 컨트롤러에서 오류 조회:

fields @timestamp, controller, message, error
| filter level = "error"
| sort @timestamp desc
| limit 50

특정 리소스의 조정 추적에서는 reconcileID 필드를 사용해 단일 조정 주기를 따라갑니다.

리소스 상태 확인

kro 캐퍼빌리티는 클러스터에서 CRD를 생성하고 관리합니다. 문제를 해결하려면 생성한 리소스의 상태를 확인하세요.

# 특정 유형의 리소스 나열
kubectl get resource-kind -A

# 특정 리소스를 설명해 조건과 이벤트 확인
kubectl describe resource-kind resource-name -n namespace

# 리소스 상태 조건 보기
kubectl get resource-kind resource-name -n namespace -o jsonpath='{.status.conditions}'

# 리소스 관련 이벤트 보기
kubectl get events --field-selector involvedObject.name=resource-name -n namespace

리소스 상태 조건은 리소스 준비 여부, 발생한 오류, 현재 조정 상태에 대한 정보를 제공합니다.

EKS 액세스 항목과 액세스 정책 확인

모든 캐퍼빌리티는 작동하는 클러스터에 올바른 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

kro는 Kubernetes 리소스를 생성하고 관리할 권한이 필요합니다.

캐퍼빌리티가 CREATING 상태에 머무르는 문제

캐퍼빌리티가 예상보다 오래 CREATING 상태로 남아 있다면:

  • 콘솔(Observability > Monitor cluster > Capabilities 탭) 또는 AWS CLI로 캐퍼빌리티 상태에서 특정 문제를 확인합니다.
  • IAM 역할이 존재하고 올바른 신뢰 정책을 보유했는지 확인합니다.
  • 클러스터가 접근 가능하고 정상인지 확인합니다.
  • 캐퍼빌리티 설정을 막을 수 있는 클러스터 수준 문제가 있는지 확인합니다.

리소스가 생성되거나 업데이트되지 않는 문제

캐퍼빌리티가 ACTIVE인데도 리소스가 생성되거나 업데이트되지 않는다면:

  • 리소스 상태에서 오류 조건을 확인합니다.
  • 특정 서비스(ACK)나 리포지토리(Argo CD)에 대한 IAM 권한을 확인합니다.
  • 기본 리소스 생성에 대한 RBAC 권한을 확인합니다(kro).
  • 검증 오류가 있는지 리소스 사양을 검토합니다.

캐퍼빌리티 상태에 문제가 표시되는 경우

describe-capability로 상태 문제가 표시된다면:

  • 문제 설명을 주의 깊게 읽으세요. 종종 구체적인 문제를 나타냅니다.
  • 근본 원인(IAM 권한, 구성 오류 등)을 해결합니다.
  • 문제가 해결되면 캐퍼빌리티는 자동으로 복구됩니다.

더 알아보기 (Learn more)