
1. 왜 ETCD라고 불릴까?
etcd는 "/etc"(리눅스 설정 디렉토리) + "distributed"(분산 시스템)의 합성어다.
즉, 모든 노드가 공유하고 일관되게 접근할 수 있는 분산 설정 저장소를 의미한다.
1.1 왜 하필 분산 설정 저장소라는 이름일까?
전통적인 리눅스에서는 /etc 디렉토리가 모든 설정 파일의 중심이다
하지만 Kubernetes는 여러 노드가 함께 동작하는 클러스터 환경이므로 설정 저장 방식에 다음 조건이 요구된다
- 설정은 모든 노드가 접근 가능해야 하며,
- 여러 노드에서 동시에 읽고 쓰더라도 데이터 일관성이 유지되어야 하고,
- 일부 노드 장애 시에도 데이터가 안전하게 유지되어야 한다.
→ 이 조건을 만족시키는 저장소가 바로 분산 키-값 저장소, etcd다.
여기서 "동시에 읽고 쓰기가 가능하다고?" 라며 의문을 가질 수 있다.
이 의문은 아래에서 ETCD의 Raft 알고리즘을 설명하면서 풀도록 하겠다.
2. ETCD란?
Kubernetes 클러스터의 모든 상태를 저장하는 분산 키-값 저장소다.
단순 저장소가 아니라 Kubernetes의 'SSOT(Single Source of Truth)'이기도 하다.
2.1) Single Source of Truth란?
어떤 시스템의 모든 상태나 정보가 신뢰할 수 있는 하나의 장소에서만 관리되고, 그 외의 모든 컴포넌트는 이 기준점을 기준으로 동작하거나 동기화된다는 원칙이다.
→ Kubernetes에서는 etcd가 바로 이 기준점이다.
3. 어떤 데이터를 저장할까?
- 클러스터의 현재 상태 (actual state) : 실제 클러스터에 존재하는 리소스 상태
- 클러스터의 원하는 상태 (desired state) : 사용자가 의도한 리소스 상태 (예: "Pod는 항상 3개 유지")
3.1 Desired State, Actual State의 쓰임새
예를 들어, 사용자가 이 클러스터에 Youtube라는 파드가 3개 있어야 한다고 지정했다 (Desired State)
하지만 어떤 이유로 인해 실제로는 Youtube라는 파드가 2개만 살아 있을 경우 (Actual State)
Kubernetes는 etcd에 저장된 desired state(3개)와 actual state(2개)를 비교하여 차이를 감지하고, 누락된 파드를 자동으로 생성해 desired state에 맞춘다.
이처럼 etcd에 두 상태가 함께 저장되기 때문에 Kubernetes는 상태 차이를 인지하고 self-healing이 가능하다.
3.2 어떤 형태로 저장하는가?
4. ETCD의 프로세스(Raft 알고리즘)
'Kubernetes' 카테고리의 다른 글
| [Kubernetes] 쿠버네티스 DNS 쿼리 과정 (Feat. CoreDNS & FQDN) (2) | 2025.06.06 |
|---|---|
| [Kubernetes] AWS Karpenter 완전 정복(CA와의 차이) (0) | 2024.03.22 |
| [Kubernetes] EKS Cluster AutoScaling 완전 정복(Feat: Terraform, Helm, HPA, Jmeter) (0) | 2024.03.16 |
| [Kubernetes] Service 개념 및 종류 (1) | 2023.12.17 |
| [Kubernetes - 파드 실습] 셀렉터, 레이블 활용, 레플리케이션 컨트롤러 & 스케줄링 테스트 (0) | 2023.12.12 |
