Fargate Pod 구성 세부 정보 이해하기

Fargate Pod 구성 세부 정보 이해하기

AWS Fargate에서 Kubernetes Pod를 실행할 때의 고유한 Pod 구성 세부 사항을 설명합니다.

출처: 문서

본문

이 섹션에서는 AWS Fargate에서 Kubernetes Pod를 실행할 때의 고유한 Pod 구성 세부 사항 중 일부를 설명합니다.

Pod CPU 및 메모리

Kubernetes를 사용하면 Pod의 각 컨테이너에 할당되는 최소 vCPU 수와 메모리 자원인 requests를 정의할 수 있습니다. Kubernetes는 각 Pod에 요청된 자원이 최소한 컴퓨팅 자원에서 사용 가능하도록 Pod를 예약합니다. 자세한 내용은 Kubernetes 문서의 컨테이너용 컴퓨팅 자원 관리(Managing compute resources for containers)를 참조하세요.

참고

Amazon EKS Fargate는 노드당 하나의 Pod만 실행하므로 자원이 부족할 때 Pod를 축출(evict)하는 상황은 발생하지 않습니다. 모든 Amazon EKS Fargate Pod는 보장된 우선순위(guaranteed priority)로 실행되므로 요청된 CPU와 메모리는 모든 컨테이너의 limit과 동일해야 합니다. 자세한 내용은 Kubernetes 문서의 Pod에 대한 서비스 품질 구성(Configure Quality of Service for Pods)을 참조하세요.

Pod가 Fargate에 예약되면 Pod 사양 내의 vCPU 및 메모리 예약 값이 Pod에 프로비저닝할 CPU와 메모리 양을 결정합니다.

  • 모든 Init 컨테이너 중 최대 요청 값을 사용하여 Init 요청 vCPU 및 메모리 요구 사항을 결정합니다.
  • 모든 장기 실행 컨테이너의 요청 값을 합산하여 장기 실행 요청 vCPU 및 메모리 요구 사항을 결정합니다.
  • 앞의 두 값 중 더 큰 값을 Pod의 vCPU 및 메모리 요청으로 선택합니다.
  • Fargate는 필요한 Kubernetes 구성 요소(kubelet, kube-proxy, containerd)를 위해 각 Pod의 메모리 예약에 256 MB를 추가합니다.
  • Fargate는 vCPU와 메모리 요청의 합과 가장 근접하게 일치하는 컴퓨팅 구성으로 반올림하여 Pod가 실행에 필요한 자원을 항상 확보하도록 보장합니다.
  • vCPU와 메모리 조합을 지정하지 않으면 가장 작은 조합(.25 vCPU와 0.5 GB 메모리)이 사용됩니다.

다음 표는 Fargate에서 실행되는 Pod에 사용 가능한 vCPU 및 메모리 조합을 보여줍니다.

vCPU 값 메모리 값
.25 vCPU 0.5 GB, 1 GB, 2 GB
.5 vCPU 1 GB, 2 GB, 3 GB, 4 GB
1 vCPU 2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB
2 vCPU 4 GB ~ 16 GB (1-GB 단위)
4 vCPU 8 GB ~ 30 GB (1-GB 단위)
8 vCPU 16 GB ~ 60 GB (4-GB 단위)
16 vCPU 32 GB ~ 120 GB (8-GB 단위)

Kubernetes 구성 요소에 예약된 추가 메모리로 인해 요청한 것보다 더 많은 vCPU를 가진 Fargate 작업(task)이 프로비저닝될 수 있습니다. 예를 들어 1 vCPU와 8 GB 메모리 요청은 메모리 요청에 256 MB가 추가되어 2 vCPU와 9 GB 메모리의 Fargate 작업이 프로비저닝됩니다. 1 vCPU와 9 GB 메모리를 가진 작업은 없기 때문입니다.

Fargate에서 실행되는 Pod의 크기와 kubectl get nodes가 보고하는 노드 크기 사이에는 상관관계가 없습니다. 보고된 노드 크기는 종종 Pod의 용량보다 큽니다. 다음 명령으로 Pod 용량을 확인할 수 있습니다. default를 Pod의 네임스페이스로, pod-name을 Pod의 이름으로 바꾸세요.

kubectl describe pod --namespace default pod-name

출력 예시는 다음과 같습니다.

[...]
annotations:
    CapacityProvisioned: 0.25vCPU 0.5GB
[...]

CapacityProvisioned 어노테이션은 강제된 Pod 용량을 나타내며 Fargate에서 실행되는 Pod의 비용을 결정합니다. 컴퓨팅 구성의 가격 정보는 AWS Fargate Pricing을 참조하세요.

Fargate 스토리지

Fargate에서 실행되는 Pod는 수동 드라이버 설치 단계 없이 Amazon EFS 파일 시스템을 자동으로 마운트합니다. Fargate 노드에서는 동적 영구 볼륨 프로비저닝(dynamic persistent volume provisioning)을 사용할 수 없지만 정적 프로비저닝은 사용할 수 있습니다. 자세한 내용은 GitHub의 Amazon EFS CSI Driver를 참조하세요.

프로비저닝되면 Fargate에서 실행되는 각 Pod는 기본 20 GiB의 임시 스토리지(ephemeral storage)를 받습니다. 이 유형의 스토리지는 Pod가 중지된 후 삭제됩니다. Fargate에 새로 시작된 Pod는 임시 스토리지 볼륨의 암호화가 기본적으로 활성화됩니다. 임시 Pod 스토리지는 AWS Fargate 관리 키를 사용하는 AES-256 암호화 알고리즘으로 암호화됩니다.

참고

Fargate에서 실행되는 Amazon EKS Pod의 기본 사용 가능 스토리지는 20 GiB보다 작습니다. Pod 내부에 로드되는 kubelet 및 기타 Kubernetes 모듈이 일부 공간을 사용하기 때문입니다.

임시 스토리지의 총량을 최대 175 GiB까지 늘릴 수 있습니다. Kubernetes로 크기를 구성하려면 Pod의 각 컨테이너에 ephemeral-storage 자원의 requests를 지정하세요. Kubernetes가 Pod를 예약할 때 각 Pod의 자원 요청 합계가 Fargate 작업의 용량보다 작은지 확인합니다. 자세한 내용은 Kubernetes 문서의 Pod 및 컨테이너용 자원 관리(Resource Management for Pods and Containers)를 참조하세요.

Amazon EKS Fargate는 시스템 사용을 위해 요청된 것보다 더 많은 임시 스토리지를 프로비저닝합니다. 예를 들어 100 GiB를 요청하면 115 GiB 임시 스토리지를 가진 Fargate 작업이 프로비저닝됩니다.

더 알아보기 (Learn more)