DevOps Tasks
AWS Fargate에서 Pod Disruption Budget(PDB)로 OS 패치 대응하기 본문
Pod Disruption Budget(PDB)는 Kubernetes에서 애플리케이션의 안정성을 보장하기 위한 핵심 도구입니다.
특히 AWS Fargate 환경에서는 운영체제(OS) 패치 이벤트가 정기적으로 발생하며, 이를 대비해 `PDB`와 `EventBridge`를 활용한 체계적인 대응 전략이 중요합니다.
AWS Fargate OS 패치 이벤트란?
AWS Fargate는 보안과 안정성을 위해 주기적으로 OS 패치를 수행하며, 이 과정에서 Fargate 노드를 재활용(recycle)합니다.
이에 따라 다음과 같은 조치가 필요합니다:
- Pod 퇴거(Eviction) : 패치 중 영향을 최소화하기 위해 기존 Pods를 퇴거시킵니다.
- Pod 삭제 : 퇴거가 실패할 경우, 기존 Pods를 강제로 삭제하고 새 Pods를 생성합니다.
패치 이벤트 대응을 위한 핵심 설정
1. Pod Disruption Budget(PDB) 설정
PDB는 OS 패치 이벤트 중 동시에 중단될 수 있는 Pod의 개수를 제어합니다.
이를 통해 애플리케이션의 가용성을 유지할 수 있습니다.
예시 PDB 설정
아래는 `minAvailable`을 기준으로 최소 가용성을 설정한 PDB 예시입니다:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: example-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: example
2. PDB: 최소 가용성 vs 최대 중단 가능성
① 최소 가용성 (minAvailable)
- 정의: 항상 실행 상태를 유지해야 하는 최소 Pod 개수.
- 사용 사례: 주요 서비스의 가용성을 보장.
- 예시: minAvailable: 2 → 최소 2개의 Pod가 실행 중이어야 퇴거 가능.
② 최대 중단 가능성 (maxUnavailable)
- 정의: 동시에 중단될 수 있는 최대 Pod 개수.
- 사용 사례: 업데이트 시 리소스 영향을 제한.
- 예시: maxUnavailable: 1 → 최대 1개의 Pod만 중단 가능.
③ 설정 선택 가이드
- `minAvailable`: 가용성을 보장하려는 경우.
- `maxUnavailable`: 중단 영향을 제어하려는 경우.
- 두 설정은 동시에 사용할 수 없으며, 상황에 맞춰 하나만 설정해야 합니다.
EventBridge 알림 설정
AWS는 Fargate OS 패치 시 발생하는 이벤트를 `Amazon EventBridge`를 통해 알립니다.
이를 활용해 자동화된 대응을 설정하거나 사전 조치를 취할 수 있습니다.
자세한 EventBridge 활용법.
EventBridge 이벤트 예시
{
"source": ["aws.eks"],
"detail-type": ["EKS Fargate Pod Scheduled Termination"]
}
Pod 수동 재시작: 선제적 대응 전략
Pod 퇴거 알림을 수신한 경우, 퇴거일 이전에 Pod를 수동으로 재시작하여 패치를 선제적으로 처리할 수 있습니다.
명령어 예시
kubectl delete pod <POD_NAME> --namespace=<NAMESPACE>
🌟 운영 인사이트
Eviction 실패 대응
- 실패 이벤트를 모니터링하여 필요시 PDB를 일시적으로 조정해 중단을 방지합니다.
- Eviction 실패 메시지 예시
{ "evictErrorMessage" : "Cannot evict pod as it would violate the pod's disruption budget" }
최소 가용성과 중단 가능성 조율
- PDB 설정을 유기적으로 관리해 서비스 가용성과 업데이트 안정성 간 균형을 유지합니다.
🎁 Wrap-Up
AWS Fargate의 OS 패치 이벤트는 Kubernetes 클러스터 운영의 핵심 과제 중 하나입니다.
Pod Disruption Budget과 EventBridge를 적절히 설정하면 패치 중에도 안정적인 워크로드를 유지할 수 있습니다.
이를 통해 서비스 중단을 최소화하고 보안성을 강화하며, 대규모 클러스터에서도 신뢰성 높은 Kubernetes 환경을 구축할 수 있습니다.
이제 Fargate의 OS 패치도 더 이상 문제가 아니라, 관리 전략의 일부가 됩니다.
'Kubernetes' 카테고리의 다른 글
[Kubernetes] AWS EKS에서 Kubernetes Pod별 보안 그룹 설정: 네트워크 보안 강화 (0) | 2024.12.03 |
---|---|
[Kubernetes] Karpenter Spot Node 모니터링을 위한 EventBridge 설정 (0) | 2024.12.03 |
[Kubernetes] Karpenter 를 이용한 EKS 노드 그룹 관리 (0) | 2024.12.01 |
[Kubernetes] EKS CoreDNS 및 Kubelet 통신 문제 (0) | 2024.11.30 |
Kubernetes 에서 Finalizer로 인한 리소스 삭제 지연 처리 방법 (1) | 2024.09.28 |