Amazon Elastic Kubernetes Service(EKS)에서 StatefulSet과 함께 자주 언급되는 RPP, RPE, HSP는 Kubernetes 환경에서 애플리케이션 배포 및 관리와 관련된 중요한 개념입니다. 이 글에서는 각각의 의미와 활용 사례를 간단히 설명합니다.
1. RPP (Replica Placement Policy)
RPP란?
RPP(Replica Placement Policy)는 StatefulSet 복제본(replica)을 특정 노드 또는 가용 영역(AZ)에 배치하는 정책입니다.
이 정책은 파드 배치 최적화와 가용성 보장을 위해 사용됩니다.
활용 사례
- 고가용성(HA):
- 복제본이 여러 가용 영역에 분산 배치되어 장애 복원력을 높임.
- 자원 최적화:
- 특정 노드에만 파드를 배치하거나, 노드 간 부하를 균등하게 분산.
설정 예시
Affinity(친화도)를 설정하여 파드 배치를 제어:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- my-app
topologyKey: "kubernetes.io/hostname"
2. RPE (Replica Persistence Enforcement)
RPE란?
RPE(Replica Persistence Enforcement)는 StatefulSet의 복제본이 재시작될 때 데이터 일관성을 유지하도록 스토리지 연결을 강제하는 기능입니다.
이 설정은 상태 저장 애플리케이션에서 데이터 무결성을 보장합니다.
활용 사례
- 데이터베이스:
- 파드 재시작 시, 기존에 사용하던 스토리지(PersistentVolume)와 지속적으로 연결.
- 스토리지 안정성:
- 장애 상황에서도 데이터를 보존하여 안정성을 높임.
설정 예시
StatefulSet에서 PVC와 PersistentVolume을 사용하는 예:
volumeClaimTemplates:
- metadata:
name: my-data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
3. HSP (Host Scaling Policy)
HSP란?
HSP(Host Scaling Policy)는 클러스터의 노드를 자동으로 확장하거나 축소하는 정책입니다.
StatefulSet과 함께 사용하여 애플리케이션의 확장성과 안정성을 동시에 관리할 수 있습니다.
활용 사례
- 자동 스케일링:
- 워크로드 증가 시 노드를 확장하여 자원을 확보.
- 비용 절감:
- 유휴 자원을 줄이기 위해 노드를 축소.
설정 예시
EKS에서 StatefulSet과 함께 노드 스케일링을 설정:
apiVersion: apps/v1
kind: StatefulSet
spec:
replicas: 3
template:
spec:
containers:
- name: my-container
resources:
requests:
cpu: "500m"
memory: "512Mi"
요약
용어설명주요 목적
RPP | 복제본을 특정 노드/가용 영역에 배치 | 고가용성과 자원 최적화 |
RPE | 복제본의 데이터 일관성 보장 | 데이터 무결성 및 안정성 보장 |
HSP | 노드 자동 확장 및 축소 관리 | 확장성 및 비용 효율성 |
EKS StatefulSet에서 RPP, RPE, HSP는 각각의 역할을 통해 클러스터의 안정성과 효율성을 극대화하는 데 기여합니다. 이러한 설정을 적절히 활용하면 고가용성과 데이터 일관성을 유지하며, 비용 절감까지 실현할 수 있습니다.