서버리스 파드를 위한 Fargate 프로필
EC2 노드를 관리하지 않고 Fargate에서 Kubernetes 파드를 실행하고, Fargate 프로필을 구성하며, 네임스페이스 제한을 이해합니다.
서버리스 파드를 위한 Fargate 프로필은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
Fargate 프로필이란 무엇인가요
AWS Fargate for EKS를 사용하면 EC2 노드를 프로비저닝하거나 관리하지 않고도 Kubernetes pod를 실행할 수 있습니다. 인스턴스 유형과 노드 그룹을 고려하는 대신, 네임스페이스와 선택적 레이블 선택기를 기준으로 어떤 pod를 Fargate에서 실행할지 지정하는 Fargate 프로필을 정의합니다. AWS는 각 pod에 필요한 컴퓨팅 리소스를 자동으로 프로비저닝하고 pod가 중지되면 해당 리소스를 종료합니다.
Fargate 프로필 구성
Fargate 프로필은 EKS 클러스터에 연결되며 하나 이상의 선택기를 포함합니다. 각 선택기는 네임스페이스와 선택적인 Kubernetes 레이블 키-값 쌍을 지정합니다. pod가 Fargate에 스케줄링되려면 하나 이상의 선택기와 일치해야 합니다. 또한 이 프로필은 pod 실행 역할(IAM 역할)과 Fargate가 pod를 시작할 때 사용할 프라이빗 서브넷을 지정합니다.
# Create a Fargate profile for the 'production' namespace
aws eks create-fargate-profile \
--cluster-name my-cluster \
--fargate-profile-name production-profile \
--pod-execution-role-arn arn:aws:iam::111122223333:role/EKSFargatePodExecutionRole \
--subnets subnet-aaa subnet-bbb \
--selectors '[{"namespace":"production"},{"namespace":"staging","labels":{"fargate":"true"}}]'Pod 실행 역할
pod 실행 역할은 Fargate가 컨테이너 이미지를 가져오고 pod 로그를 CloudWatch로 전송할 때 EKS가 맡는 IAM 역할입니다. 이 역할에는 AmazonEKSFargatePodExecutionRolePolicy AWS 관리형 정책이 포함되어야 합니다. 이 역할이 없으면 Fargate가 ECR에 인증하거나 CloudWatch Logs에 기록할 수 없으므로 Fargate에 스케줄링된 pod가 시작되지 않습니다.
# Create the pod execution role trust policy
cat fargate-trust-policy.json
# {
# "Version": "2012-10-17",
# "Statement": [{
# "Effect": "Allow",
# "Principal": {"Service": "eks-fargate-pods.amazonaws.com"},
# "Action": "sts:AssumeRole"
# }]
# }
aws iam attach-role-policy \
--role-name EKSFargatePodExecutionRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicyFargate의 네임스페이스 제한
Fargate에는 중요한 네임스페이스 제한이 있습니다. kube-system 네임스페이스에서는 kube-proxy와 같은 시스템 pod가 실행되므로 대부분의 Fargate 프로필을 사용할 수 없습니다. 예외적으로 CoreDNS의 경우 AWS가 CoreDNS 배포에서 eks.amazonaws.com/compute-type: ec2 주석을 제거하도록 패치하는 안내 절차를 제공하므로 Fargate에서 실행할 수 있습니다. 제외된 네임스페이스의 pod는 EC2 노드를 사용할 수 없으면 계속 스케줄링되지 않은 상태로 남습니다.
# Patch CoreDNS to allow Fargate scheduling
kubectl patch deployment coredns \
-n kube-system \
--type json \
-p '[{"op":"remove","path":"/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
# Restart CoreDNS to apply the patch
kubectl rollout restart deployment coredns -n kube-systemFargate Pod 리소스 크기 지정
Fargate는 pod 사양에 정의된 CPU 및 메모리 요청량을 기준으로 컴퓨팅 리소스를 할당합니다. 할당량은 Fargate가 지원하는 가장 가까운 vCPU/메모리 조합으로 올림됩니다(예: 0.25 vCPU / 0.5 GB부터 16 vCPU / 120 GB까지). pod가 실행되는 동안 할당된 리소스에 대해서만 초 단위로 요금이 부과됩니다. 항상 정확한 리소스 요청량을 설정해야 합니다. 요청량을 너무 낮게 설정하면 메모리 부족으로 프로세스가 종료되고, 너무 높게 설정하면 비용이 증가합니다.
# Pod spec with explicit resource requests and limits
apiVersion: v1
kind: Pod
metadata:
name: api-pod
namespace: production
spec:
containers:
- name: api
image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/my-api:latest
resources:
requests:
cpu: '500m'
memory: '1Gi'
limits:
cpu: '1'
memory: '2Gi'Fargate와 EC2 노드 그룹 비교: 절충점
Fargate는 노드 관리를 없애지만 몇 가지 제약이 있습니다. daemonset을 사용할 수 없고(스케줄링할 영구 노드가 없기 때문), 권한 있는 컨테이너를 사용할 수 없으며, 일부 스토리지 유형에 대한 지원도 제한적입니다. EC2 노드 그룹은 GPU, 사용자 지정 커널, 로컬 NVMe 드라이브를 사용하는 상태 저장 워크로드를 지원합니다. 일반적으로 동일한 EKS 클러스터 내에서 상태 비저장 서비스를 Fargate에서 실행하고 상태 저장 또는 GPU 워크로드를 전용 EC2 노드 그룹에서 실행합니다.
Fargate 네트워킹 및 보안 그룹
각 Fargate pod는 자체 탄력적 네트워크 인터페이스(ENI)와 프로필에서 지정한 서브넷의 프라이빗 IP를 할당받습니다. 따라서 Security Groups for Pods 기능을 사용해 각 pod에 고유한 보안 그룹을 적용할 수 있습니다. Fargate pod는 표준 VPC 보안 그룹 규칙을 모두 지원하므로 개별 pod 수준에서 인바운드 및 아웃바운드 트래픽을 세밀하게 제어할 수 있습니다. 이는 공유 노드 수준 보안 그룹을 사용하는 것보다 중요한 보안상의 이점입니다.
# Assign a security group to a pod via annotation
apiVersion: v1
kind: Pod
metadata:
name: secure-api
namespace: production
annotations:
vpc.amazonaws.com/pod-eni: 'true'
spec:
securityGroups:
groupIds:
- sg-0abc1234def56789a
containers:
- name: api
image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/secure-api:v2Fargate 로그를 CloudWatch로 전송
Fargate pod는 기본 제공 Fluent Bit 로그 라우터를 사용해 로그를 Amazon CloudWatch Logs로 전송합니다. aws-observability 네임스페이스에 aws-logging이라는 이름의 ConfigMap을 생성하여 로깅을 구성합니다. pod 실행 역할에는 로그 그룹을 생성하고 로그 이벤트를 기록할 권한이 있어야 합니다. 로그는 클러스터와 네임스페이스별 CloudWatch 로그 그룹으로 구성되므로 별도의 로그 에이전트를 실행하지 않고도 중앙 집중식 로그 집계를 쉽게 구현할 수 있습니다.
# ConfigMap to enable Fargate logging
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-logging
namespace: aws-observability
data:
flb_log_cw: 'true'
output.conf: |
[OUTPUT]
Name cloudwatch_logs
Match *
region us-east-1
log_group_name /aws/eks/my-cluster/fargate
log_stream_prefix fargate-
auto_create_group trueFargate의 수평 Pod 자동 확장
Fargate는 Kubernetes Horizontal Pod Autoscaler (HPA)를 지원합니다. HPA가 복제본을 확장하면 노드 그룹 크기를 직접 조정하지 않아도 Fargate가 새 마이크로 VM을 자동으로 프로비저닝합니다. 이를 통해 진정한 서버리스 자동 확장 환경을 구현할 수 있습니다. HPA가 pod 수를 제어하고 Fargate가 컴퓨팅 리소스를 탄력적으로 처리합니다. 단, HPA가 CPU 및 메모리 사용량을 읽으려면 클러스터에 Metrics Server를 배포해야 합니다.
# Deploy Metrics Server (required for HPA)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# Create an HPA for a Fargate-scheduled deployment
kubectl autoscale deployment my-api \
--namespace production \
--cpu-percent=60 \
--min=2 \
--max=20Fargate 요금 모델
Fargate에서는 소비한 vCPU-초 및 GB-초를 기준으로 요금을 지불하며, pod당 최소 과금 시간은 1분입니다. 노드 수준 비용, 예약 용량 요금, AMI/OS 패치 비용은 없습니다. Fargate는 일반적으로 적절한 크기로 조정한 EC2 온디맨드 인스턴스보다 컴퓨팅 단위당 비용이 높지만, 노드 관리와 패치, 확장 여부 결정에 드는 엔지니어링 시간을 절약할 수 있으므로 총 소유 비용은 더 낮은 경우가 많습니다.
알아 두어야 할 Fargate의 일반적인 제한
SAA-C03 시험에서 알아 두어야 할 Fargate의 주요 제한은 다음과 같습니다. DaemonSet을 지원하지 않고(영구 노드가 없으므로 각 노드에 pod를 배치할 수 없음), 권한 있는 컨테이너를 지원하지 않으며, hostNetwork 모드를 지원하지 않습니다. 또한 임시 스토리지는 pod당 20 GB로 제한되며, 구성을 통해 200 GB까지 확장할 수 있습니다. EBS를 사용하는 영구 블록 스토리지는 지원되지 않으므로 Fargate pod에서 공유 영구 파일 스토리지가 필요하면 EFS를 사용해야 합니다.
# Mount EFS in a Fargate pod (EBS is NOT supported on Fargate)
apiVersion: v1
kind: Pod
metadata:
name: efs-pod
namespace: production
spec:
volumes:
- name: efs-storage
persistentVolumeClaim:
claimName: efs-pvc
containers:
- name: app
image: my-image:latest
volumeMounts:
- name: efs-storage
mountPath: /data빠른 확인
이 레슨에서 다룬 AWS Solutions Architect (SAA-C03) 개념을 얼마나 이해했는지 확인해 보세요.
레슨 요약
이 레슨에서 다음을 배웠습니다. Fargate 프로필은 네임스페이스와 레이블 선택기를 사용해 pod를 서버리스 방식으로 스케줄링하고, pod 실행 역할은 Fargate에 이미지를 가져오고 로그를 기록할 권한을 부여합니다. 또한 Fargate는 DaemonSet 또는 EBS를 지원하지 않으므로 영구 스토리지에는 EFS를 사용해야 합니다. 다음으로 VPC CNI 플러그인과 AWS Load Balancer Controller를 사용하는 EKS 네트워킹을 살펴보겠습니다.
자주 묻는 질문
“서버리스 파드를 위한 Fargate 프로필” 강의는 무료인가요?
네 — “서버리스 파드를 위한 Fargate 프로필” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“서버리스 파드를 위한 Fargate 프로필”에서 뭘 배우나요?
EC2 노드를 관리하지 않고 Fargate에서 Kubernetes 파드를 실행하고, Fargate 프로필을 구성하며, 네임스페이스 제한을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“서버리스 파드를 위한 Fargate 프로필” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- EKS 컨트롤 플레인 및 워커 노드
- 서버리스 파드를 위한 Fargate 프로필
- EKS 네트워킹: VPC CNI 및 로드 밸런싱
- 서비스 계정을 위한 IAM 역할(IRSA)