멀티클러스터 & Federation
하나의 거대한 클러스터보다 여러 개의 클러스터가 나은 이유
1. 왜 멀티클러스터인가
| 이유 | 설명 |
|---|---|
| 장애 격리 | 하나의 클러스터 장애가 전체에 영향을 주지 않음 (Blast Radius 제한) |
| 규정 준수 | 데이터 주권, 지역 법규에 따라 클러스터 분리 |
| 환경 분리 | dev / staging / prod를 클러스터 수준에서 격리 |
| 팀 분리 | 팀별 독립 클러스터로 자율성 + 책임 부여 |
| 하이브리드/멀티클라우드 | AWS + Azure, 온프레미스 + 클라우드 |
2. 관리 도구
| 도구 | 방식 | 특징 |
|---|---|---|
| Rancher | 웹 UI 기반 | ✅ 가장 쉬운 멀티클러스터 관리. 클러스터 생성/관리/모니터링 |
| ArgoCD | GitOps | 여러 클러스터에 동일 앱 배포. ApplicationSet |
| Cluster API | K8s로 K8s 관리 | K8s 오브젝트로 클러스터 생명주기 관리 (선언적) |
| vCluster | 가상 K8s | 하나의 물리 클러스터 안에 가상 K8s 클러스터 생성 |
vCluster
flowchart TB
subgraph HostCluster["호스트 클러스터"]
subgraph NS1["namespace: team-a"]
VC1["vCluster A<br/>(가상 K8s)"]
end
subgraph NS2["namespace: team-b"]
VC2["vCluster B<br/>(가상 K8s)"]
end
end
- 네임스페이스 안에 독립적인 K8s API Server + etcd가 동작
- 팀별 격리를 물리 클러스터 추가 없이 구현
- dev/CI 환경에서 유용
3. 멀티클러스터 네트워킹
| 도구 | 역할 |
|---|---|
| Submariner | 클러스터 간 Pod 네트워크 터널링 |
| Istio 멀티클러스터 | Service Mesh를 클러스터 간 확장 |
| Skupper | 클러스터 간 서비스 연결 (L7) |
4. 전략 패턴
| 패턴 | 설명 | 적합 |
|---|---|---|
| 환경별 분리 | dev/staging/prod 각각 클러스터 | ✅ 가장 일반적 |
| 지역별 분리 | 서울/도쿄/미국 등 지역별 | 글로벌 서비스 |
| 팀별 분리 | 팀마다 독립 클러스터 | 대규모 조직 |
| Active-Active | 여러 클러스터가 동시에 트래픽 처리 | 고가용성 |
| Active-Standby | DR 클러스터를 대기 상태로 유지 | 재해 복구 |
다음 글
→ #17 FinOps — K8s 비용 최적화