EC2 인스턴스 스토어로 구성된 AWS Outposts 로컬 Amazon EKS 클러스터 문제 해결

EC2 인스턴스 스토어로 구성된 AWS Outposts 로컬 Amazon EKS 클러스터 문제 해결

이 주제에서는 EC2 인스턴스 스토어로 구성된 AWS Outposts에서 로컬 Amazon EKS 클러스터를 사용할 때 볼 수 있는 일반적인 오류와 이를 해결하는 방법을 다룹니다.

출처: 문서

본문

aws eks update-kubeconfig를 실행한 후 다음 오류가 표시된다면:

Either parameter --cluster-name or --cluster-id must be specified.

또는:

couldn't get current server API group list: getting credentials: exec: executable aws failed with exit code 1

kubeconfig(~/.kube/config)가 exec 인수에 --cluster-id가 아닌 --cluster-name을 지정하는지 확인하세요.

      args:
        - --region
        - region-code
        - eks
        - get-token
        - --cluster-name
        - my-cluster
        - --output
        - json
      command: aws

kubectl get nodes를 실행했을 때 노드가 표시되지 않으면:

  • 노드에서 kubelet 로그를 확인합니다. SSM 또는 SSH로 노드에 액세스해 다음을 실행하세요.
systemctl status kubelet -l
  • 권한 없음 오류를 확인합니다. 권한 없음 오류는 노드 역할 권한 누락 또는 aws-auth ConfigMap 문제를 나타낼 수 있어요. 노드의 인스턴스 역할이 aws-auth ConfigMap에 올바르게 매핑되었는지 확인하세요.
  • CSR 상태를 확인합니다. 노드의 인증서 서명 요청이 승인되었는지 확인하세요.
kubectl get csr

CSR이 Pending 상태라면 승인합니다.

kubectl certificate approve node-csr-EXAMPLE

클러스터가 FAILED 상태가 되면:

  • 용량 부족: Outpost에 지정된 인스턴스 유형의 제어 플레인 인스턴스 6개(etcd 3개 + API 서버 3개)에 대한 충분한 가상화 용량이 있는지 확인하세요. 인스턴스 유형이 Outpost에 슬롯으로 잡혀 있어야 합니다.
  • 분산 토폴로지를 충족할 수 없음: spreadLevel을 host로 지정했다면 선택한 인스턴스 유형으로 구성된 호스트가 최소 3개인지 확인하세요. rack을 지정했다면 선택한 인스턴스 유형으로 호스트가 있는 랙이 최소 3개인지 확인하세요.
  • 서브넷 문제: 지정한 서브넷이 Outpost가 홈인 가용 영역에 있고 각 서브넷에 사용 가능한 IP 주소가 최소 3개 있는지 확인하세요. EC2 인스턴스 스토어로 구성된 AWS Outposts의 Amazon EKS 로컬 클러스터용 VPC 및 서브넷 생성을 참고하세요.

Kubernetes 버전 또는 플랫폼 버전 업데이트 중에 클러스터가 UPDATING 상태로 유지되면:

  • 용량 부족: 업데이트 중에 제어 플레인 인스턴스는 재인스턴스화 전에 삭제됩니다. 대체 인스턴스가 프로비저닝되기 전에 해제된 용량을 다른 워크로드가 소비하면 업데이트가 중단됩니다. Outpost에 제어 플레인 인스턴스 유형에 대한 사용 가능한 용량이 있는지 확인하세요.

Kubernetes API 작업을 수행할 수 없게 되고 Outpost가 연결이 끊긴 경우:

  • etcd가 쿼럼을 잃었을 수 있습니다. 단절 중에 etcd 인스턴스가 둘 이상 사용 불가능해지면 이 문제가 발생합니다.
  • 이미 실행 중인 워크로드는 계속 작동하지만 Kubernetes API 작업은 사용할 수 없어요.
  • 연결이 복원되면 Amazon EKS가 가장 최근의 etcd 스냅샷에서 클러스터 상태를 복구합니다.
  • AWS Support Center에 문의하세요.

더 알아보기 (Learn more)