보류 상태로 멈춰 있는 AWS Fargate의 Amazon EKS 포드 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Fargate 인스턴스에서 실행 중인 Amazon Elastic Kubernetes Service(Amazon EKS) 포드가 보류 상태로 멈춰 있습니다.

간략한 설명

AWS Fargate를 사용하는 Amazon EKS 포드가 보류 상태로 유지되는 이유에는 몇 가지가 있습니다.

  • 특정 vCPU와 메모리 조합을 사용할 수 없기 때문에 용량 오류가 발생했습니다.
  • CoreDNS 포드가 Amazon Elastic Compute Cloud(Amazon EC2) 컴퓨팅 유형에 매핑하는 기본 주석과 함께 생성되었습니다. Fargate 노드에서 CoreDNS 포드를 스케줄링하려면 Amazon EC2 컴퓨팅 유형을 제거하세요.
  • 포드를 생성하여 fargate-scheduler에 할당했을 때 포드와 일치하는 Fargate 프로파일이 없었습니다. 포드가 생성 시 일치하지 않으면 자동으로 Fargate 노드에 다시 예약되지 않습니다. 이는 나중에 사용자가 일치하는 프로필을 생성할 경우에도 마찬가지입니다. 이 경우 포드는 default-scheduler에 할당됩니다.
  • 포드가 fargate-scheduler에 할당되었으나 보류 상태로 남아 있는 경우 포드에 대한 추가 문제 해결이 필요할 수 있습니다.

해결 방법

사전 요구 사항

  • 네임스페이스를 구성하세요. 그리고 Kubernetes 레이블을 포드 셀렉터의 레이블과 일치하도록 지정하세요(선택 사항). 두 조건이 모두 포드 사양과 일치하는 경우에만 Fargate 워크플로가 포드를 Fargate 프로필에 일치시킵니다.
  • 단일 Fargate 프로필 내에 여러 포드 선택기를 지정하는 경우 fargate-scheduler는 선택기 중 하나와 일치하면 포드를 스케줄링합니다.
  • 포드 사양이 여러 Fargate 프로필과 일치하는 경우 포드는 임의의 Fargate 프로필에 따라 예약됩니다. 이를 방지하려면 포드 사양 내에서 주석eks.amazonaws.com/fargate-profile:fp_name을 사용하세요. fp_name을 Fargate 프로필 이름으로 바꾸세요.

중요: 다음 단계는 AWS Fargate로 시작된 포드에만 적용됩니다. Amazon EC2 인스턴스에서 시작된 포드에 대한 자세한 내용은 Amazon EKS에서 포드 상태 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

사용자의 포드 상태 확인

1. 다음의 명령을 실행하여 포드 상태를 확인합니다.

kubectl get pods -n <namespace>

2. 포드에 대한 자세한 오류 정보를 얻으려면 다음의 describe 명령을 실행합니다.

kubectl describe pod YOUR\_POD\_NAME -n <namespace>

describe 명령의 출력을 참조하여 완료해야 할 해결 단계를 평가합니다.

용량 오류 해결

포드에 용량 문제가 있는 경우 다음과 유사한 describe 출력이 표시됩니다.

"지금은 Fargate 용량을 사용할 수 없습니다. 나중에 다시 시도하거나 다른 가용 영역에서 시도해 주세요."

이 출력은 Fargate가 선택한 vCPU와 메모리 조합을 기반으로 컴퓨팅 용량을 프로비저닝할 수 없음을 뜻합니다.

이 오류를 해결하려면 다음 단계를 완료하세요.

  • 20분 후에 포드를 다시 생성해 봅니다. 오류는 용량 기반이므로 정확한 시간은 달라질 수 있습니다.
  • 포드 사양 내에서 요청(CPU 및 메모리)을 변경합니다. 포드 사양에 대한 자세한 내용은 Kubernetes 웹 사이트에서 쿠버네티스가 리소스 요청 및 제한을 적용하는 방법을 참조하세요. 그러면 Fargate 워크플로가 vCPU와 메모리의 새로운 조합을 프로비저닝합니다.
    참고: 조합 중 하나를 기준으로 요금이 청구됩니다. 포드 사양에 따라 조합이 완료되는 방식에 대한 자세한 내용은 포드 CPU 및 메모리를 참조하세요. 터미널 또는 통합 개발 환경(IDE)에서 kubectl describe node 명령을 수행하여 더 높은 vCPU 및 메모리 조합 값을 얻으세요. Fargate가 항상 사용자의 요청에 따라 가용 용량을 제공할 수 있는 것은 아닙니다. Fargate는 최선을 다해 용량 풀에서 리소스를 프로비저닝합니다. 요금은 포드 사용량 및 이에 상응하는 vCPU 및 메모리 조합에 대해서만 청구됩니다.

보류 상태의 CoreDNS 포드 해결

CoreDNS 포드가보류 상태인 경우 다음 메시지와 비슷한 출력이 표시됩니다.

kubectl get pods -n kube-system
NAME                                     READY   STATUS     RESTARTS      AGE
coredns-6548845887-qk9vf                 0/1     Pending    0             157m

이는 CoreDNS 배포에 eks.amazonaws.com/compute-type : ec2라는 기본 주석이 있기 때문일 수 있습니다.

이 문제를 해결하고 Fargate 스케줄러에 포드를 재할당하려면 CoreDNS 업데이트를 참조하세요.

fargate-scheduler에 할당된 포드 문제 해결

fargate-scheduler에 할당된 포드가 보류 상태에서 멈춰 있을 수 있는 이유에는 여러 가지가 있습니다. 포드가 보류 상태로 남아 있는 경우 describe 출력은 다음 메시지와 유사합니다.

Events:
Type       Reason              Age                     From
----       ------              ----                    ----
Warning    FailedScheduling    2m25s (x301 over 5h3m)  fargate-scheduler

이 오류를 해결하려면 다음 작업을 완료하세요.

  • 포드를 삭제하고 다시 생성합니다.
  • 다음 사양이 포드 사양 YAML에 설정되어 있지 않은지 확인합니다. 이러한 사양으로 인해 fargate-scheduler가 포드를 건너뛸 수 있습니다.
    노드 선택기
    <>노드 이름
    schedulerName
  • Fargate 프로필에서 선택한 서브넷에 새 포드를 생성할 수 있는 가용 IP 주소가 충분한지 확인합니다. 각 Fargate 노드는 서브넷에서 하나의 IP 주소를 소비합니다.
  • NAT 게이트웨이가 퍼블릭 서브넷으로 설정되어 있고 여기에 탄력적 IP 주소가 연결되어 있는지 확인합니다.
  • Virtual Private Cloud(VPC)와 연결된 DHCP 옵션 세트에서 AmazonProvidedDNS 또는 domain-name-servers에 유효한 DNS 서버 호스트 이름이 있는지 확인합니다.
  • 사용자의 VPC에 대해 DNS 호스트 이름 및 DNS 확인이 활성화되어 있는지 확인합니다.
  • 사용자의 Fargate 포드가 서비스 통신용으로 구성된 VPC 엔드포인트만 있는 프라이빗 서브넷을 사용하는 경우, DNS 이름을 가진 이러한 엔드포인트를 허용합니다.
    ECR - API
    ECR - DKR
    S3 게이트웨이 엔드포인트
  • VPC 엔드포인트에 연결된 보안 그룹이 Fargate와 API 서버 간의 통신을 허용하는지 확인합니다. VPC 엔드포인트 보안 그룹은 클러스터 VPC CIDR에서 포트 443 수신을 허용해야 합니다. 또한 사용자 클러스터의 프라이빗 엔드포인트 액세스를 활성화해야 합니다.

default-scheduler에 할당된 포드 확인

포드가 할당된 스케줄러를 확인하려면 다음 명령을 실행하세요.

kubectl get pods -o yaml -n <namespace> <pod-name> | grep schedulerName.

출력에서 schedulerNamefargate-scheduler인지 확인합니다. default-scheduler로 나열되어 있으면 fargate-scheduler가 이 포드를 건너뛰었음을 의미합니다. 이 문제를 해결하려면 포드 구성에서 컴퓨팅 유형 주석을 확인하세요. 자세한 내용을 알아보려면 AWS Fargate 고려 사항을 참조하세요.

AWS 공식
AWS 공식업데이트됨 7달 전
댓글 없음