🧮 왜 K8s 노드 수는 홀수가 좋을까? (feat. ETCD & Raft)
“짝수로 하면… 싸움 난다구요 🤺”
🐣 Intro
쿠버네티스 클러스터를 만들다 보면 이런 얘기 꼭 듣습니다:
“마스터 노드는 홀수로 맞추세요~”
아니, 서버 갯수를 맞추는데 왜 갑자기 홀수 클럽 가입을 강요하는 걸까요?
짝수도 좋은 숫자인데 왜? 🤔
📦 원흉: ETCD & Raft
쿠버네티스의 모든 상태는 etcd 라는 키-값 저장소에 저장됩니다.
여기서 합의 알고리즘으로 Raft를 쓰는데…
Raft는 이런 룰이 있습니다:
- 리더 선출 & 합의하려면 과반수가 필요함
- 과반수 못 모으면?
→ “우리 클러스터는 무정부 상태다!” 선언하고 서비스 중단 😱
🎭 짝수 vs 홀수 상황극
Case 1: 노드가 2개 (짝수)
- 1대 장애 → 1:1 비겼음
- 과반수 없음 → 클러스터 멈춤 🚨
(둘이 서로 “내가 리더임” 하다가 끝남)
Case 2: 노드가 3개 (홀수)
- 1대 장애 → 2:1로 과반수 확보
- 리더 뽑을 수 있음 → 클러스터 정상 운영 🥳
Case 3: 노드가 4개 (짝수)
- 2대 장애 → 2:2 동률
- 과반수 없음 → 클러스터 멈춤
- (게다가 자원은 더 쓰는데 안정성은 3개랑 별 차이 없음)
Case 4: 노드가 5개 (홀수)
- 2대 장애 → 3:2로 과반수 확보
- 여전히 리더 선출 가능 → 서비스 유지 👌
🍕 비유로 이해하기
친구들이랑 피자 시켜 먹을 때를 생각해봅시다.
- 사람이 2명 → 한 명은 치킨피자, 한 명은 불고기피자
→ 결론: 싸움남 🤬
- 사람이 3명 → 두 명이 치킨피자 외치면 끝남
→ 결론: 질서 있게 피자 도착 🍕
👉 홀수 = 항상 과반수를 만들 수 있는 구조
📝 결론
- 홀수 노드 = 합의 알고리즘이 해피 엔딩으로 끝날 확률 ↑
- 짝수 노드 = 리더 선출하다가 싸움남 (=장애)
즉, 쿠버네티스에서 마스터 노드 수는 3, 5, 7… 이런 홀수로 맞추는 게 베스트입니다.
🎬 마무리
짝수 노드는 자원만 더 먹고, 결국 Raft 회의실에서 싸움만 만든다.
다음부터는 클러스터 짤 때 꼭 이렇게 기억하세요:
“K8s 마스터 노드 = 홀수로 가는 게 인생 꿀팁” 😎
