[Kubernetes] ETCD란? (Feat_Raft 알고리즘)

2025. 7. 9. 23:27·Kubernetes
반응형



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. 어떤 데이터를 저장할까?

  1. 클러스터의 현재 상태 (actual state) : 실제 클러스터에 존재하는 리소스 상태
  2. 클러스터의 원하는 상태 (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
'Kubernetes' 카테고리의 다른 글
  • [Kubernetes] 쿠버네티스 DNS 쿼리 과정 (Feat. CoreDNS & FQDN)
  • [Kubernetes] AWS Karpenter 완전 정복(CA와의 차이)
  • [Kubernetes] EKS Cluster AutoScaling 완전 정복(Feat: Terraform, Helm, HPA, Jmeter)
  • [Kubernetes] Service 개념 및 종류
운덩하는 개발자
운덩하는 개발자
    반응형
  • 운덩하는 개발자
    ddo_hyung_
    운덩하는 개발자
  • 전체
    오늘
    어제
    • 분류 전체보기
      • EKS
      • Container
      • Python
      • AI
      • Java
      • 자기개발, 일기
      • AWS
      • Algorithm
      • Spring Boot
      • Kubernetes
      • Github Action
      • CS
      • Network
      • Etc
      • Linux
      • Terraform
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    테라폼 예시
    쿠버네티스 cluster ip
    쿠버네티스 셀렉터 사용사례
    메트릭서버
    Kubernetes
    AWS
    테라폼 EC2
    쿠버네티스 서비스 종류
    코어디엔에스
    테라폼 예제
    쿠버네티스 셀렉터
    clusterautoscaler
    네트워크
    쿠버네티스 node port
    metricserver
    배포
    테라폼
    쿠버네티스 도메인 쿼리 질의
    테라폼 AWS
    youtube 접속 과정
    Network
    DNS
    카펜터
    쿠버네티스 셀렉터 예시
    클러스터오토스케일링
    쿠버네티스 dns
    에프큐디엔
    쿠버네티스 셀렉터 실습
    쿠버네티스
    인터넷 접속 과정
    쿠버네티스 로드밸런서
    테라폼 실습
    쿠버네티스 파드 예시
    컨테이너
    쿠버네티스 Headless Service
    쿠버네티스 ExternalName
    terraform
    쿠버네티스 파드 실습
    셀렉터와 라벨
    network 과정
    쿠버네티스 파드
    테라폼 프로비저닝 실습
    쿠버네티스 도메인
    쿠버네티스 서비스 쓰는 이유
    테라폼 프로비저닝 예시
    karpenter
    kubernetes pod example
    ca와kapenter비교
    테라폼 프로비저닝 예제
    쿠버네티스 셀렉터와 라벨
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
운덩하는 개발자
[Kubernetes] ETCD란? (Feat_Raft 알고리즘)
상단으로

티스토리툴바