Master 노드 장애 시 문제점
기존 실행 중인 애플리케이션은 유지됨.
하지만,
kubectl 명령어, API 호출 모두 실패.| 구성 요소 | HA 동작 방식 |
|---|---|
| API Server | Active-Active (Load Balancer 필요) |
| Scheduler | Active-Standby (Leader Election) |
| Controller Manager | Active-Standby (Leader Election) |
| etcd | 클러스터 구성 (3, 5, 7 노드 권장) |
✔️ API Server
✔️ Controller Manager & Scheduler
--leader-elect=true 옵션으로 활성화$ kube-controller-manager --leader-elect true [other options]
--leader-elect-lease-duration 15s
--leader-elect-renew-deadline 10s
--leader-elect-retry-period 2s
Kubernetes 내 Endpoint 객체를 이용해 Lock 획득
Leader:
renew deadline: 10초 기본)Standby:
| 토폴로지 | 특징 |
|---|---|
| Stacked Topology | etcd + Control Plane 함께 구동 (설치 간단, 리스크 ↑) |
| External etcd Topology | 별도 etcd 클러스터 (이중화 강화, 설치 복잡) |
✔️ etcd는 홀수 노드 (3, 5, 7) 권장.
✔️ API Server는 etcd 클러스터에 직접 연결.
6443kubeconfig → Load Balancer → API Servers (master1, master2, ...)
┌──────────────────────┐
│ Load Balancer │
│ (HAProxy / NGINX) │
└─────────┬────────────┘
│
┌────────────────────────────┴────────────────────────────┐
│ API Server (6443) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Master Node 1 │ │ Master Node 2 │ │ Master Node 3 │ ... │
│ │ - API Server │ │ - API Server │ │ - API Server │ │
│ │ - Scheduler │ │ - Scheduler │ │ - Scheduler │ │
│ │ - Controller │ │ - Controller │ │ - Controller │ │
│ │ - etcd (opt) │ │ - etcd (opt) │ │ - etcd (opt) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└───────────────────────────────────────────────────────────┘
│
┌────────┴────────┐
│ Worker Node 1 │
│ Worker Node 2 │
│ Worker Node 3 │
└──────────────────┘
| 이전 | 변경 후 (HA 구성) |
|---|---|
| Master 1개 | Master 2개 + Load Balancer |
| Worker 2개 | Worker 2개 (동일) |
| 총 3 노드 | 총 4 노드 + LB (5개 리소스) |