ETCD

2025. 8. 8. 22:10·K8s

ETCD란?

마스터노드의 control plane에 위치해있는 key-value쌍의 저장소이다.

기존 DB와의 차이

전통적인 DB는 테이블형식이다. 이러한 DB는 행과 열로 데이터를 저장하고,

만약 아래와 같은 직원 테이블이 있다고 보자

이름 나이 장소
홍길동 45 서울
김철수 33 서울
김영희 21 인천

각 행은 한 사람을 나타내고, 각 열은 저장되는 정보의 유형을 나타낸다.

만일 연봉, 사원평가에 따른 등급와 같은 정보를 추가하고 싶을 때, 테이블과 그 안에 있는 모든 정보에 아래와 같이 영향을 미치게 된다.

이름 나이 장소 연봉 등급
홍길동 45 서울 5000  
김철수 33 서울 4000  
김영희 21 인천   A

새로운 정보를 추가 할 때 마다 표 전체가 영향을 받아 빈 셀이 많아진다.

ETCD와 같은 key-value 쌍 저장소는 아래와 같이 정보를 문서 또는 페이지 형태로 저장한다.

key value
이름 홍길동
나이 45
장소 서울
연봉 5000
key value
이름 김철수
나이 33
장소 서울
연봉 4000
key value
이름 김영희
나이 21
장소 인천
등급 A

만일 김철수라는 사원에게 부서라는 항목을 추가하고싶다면 해당 사원 정보에 key-value만 추가하면 된다.

key value
이름 김철수
나이 33
장소 서울
연봉 4000
부서 HR

이 데이터들은 일반적으로 YAML이나, JSON 형식으로 저장된다.

{
    "이름": "홍길동",
    "나이": "45",
    "장소": "서울",
    "연봉": "5000"
},
{
    "이름": "김철수",
    "나이": "33",
    "장소": "서울",
    "연봉": "4000",
    "부서": "HR"
},
{
    "이름": "김영희",
    "나이": "21",
    "장소": "인천",
    "등급": "A"
}

 

쿠버네티스에서 ETCD가 저장하는 데이터

ETCD는 쿠버네티스 클러스터의 모든 상태 정보를 저장하는 중앙 저장소 역할을 한다. 구체적으로 다음과 같은 데이터들이 저장된다.

클러스터 구성 정보

  • 노드 정보: 마스터 노드, 워커 노드의 상태와 메타데이터
  • 네트워크 설정: 클러스터 내부 네트워킹 구성
  • 인증서: TLS 인증서와 보안 관련 정보
  • Namespaces: 클러스터 내 논리적 분할 공간 정보

워크로드 관련 데이터

  • Pods: 실행 중인 모든 Pod의 상태, 스펙, 메타데이터
  • Deployments: 배포 설정과 레플리카 정보
  • ReplicaSets: 복제본 관리 정보
  • DaemonSets: 데몬셋 구성 정보
  • StatefulSets: 상태가 있는 애플리케이션 정보
  • Bindings: Pod와 Node 간의 스케줄링 바인딩 정보

서비스 및 네트워킹

  • Services: 서비스 정의와 엔드포인트 정보
  • Endpoints: 서비스가 트래픽을 전달할 실제 Pod IP 목록
  • Ingress: 외부 접근 라우팅 규칙
  • NetworkPolicies: 네트워크 보안 정책

설정 및 보안

  • ConfigMaps: 애플리케이션 설정 데이터
  • Secrets: 민감한 정보 (패스워드, 토큰 등)
  • ServiceAccounts: 서비스 계정 정보
  • RBAC: 역할 기반 접근 제어 설정

스토리지

  • PersistentVolumes: 영구 볼륨 정보
  • PersistentVolumeClaims: 볼륨 요청 정보
  • StorageClasses: 스토리지 클래스 정의

시스템 및 모니터링

  • Events: 클러스터 내 발생하는 모든 이벤트 로그 (Pod 생성, 에러 등)

실제 저장 예시

etcd에서 Pod 정보는 다음과 같은 형태로 저장된다:

{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "name": "nginx-pod",
    "namespace": "default",
    "uid": "12345-67890-abcdef"
  },
  "spec": {
    "containers": [
      {
        "name": "nginx",
        "image": "nginx:1.20"
      }
    ]
  },
  "status": {
    "phase": "Running",
    "podIP": "10.244.1.5"
  }
}

이처럼 etcd는 쿠버네티스의 모든 상태를 관리한다. 만약 etcd가 손상되면 클러스터의 모든 정보가 사라지기 때문에 정기적인 백업이 매우 중요하다.


출처:
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/14298420#lecture-article
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/14298422#lecture-article

728x90

'K8s' 카테고리의 다른 글

Kube-scheduler  (0) 2025.08.11
Kube Controller Manager  (0) 2025.08.09
Kube-apiserver  (0) 2025.08.09
컨테이너 런타임 인터페이스 (CRI)  (0) 2025.08.05
쿠버네티스 (Kubernetes | K8s) 기본개념  (0) 2025.08.05
'K8s' 카테고리의 다른 글
  • Kube Controller Manager
  • Kube-apiserver
  • 컨테이너 런타임 인터페이스 (CRI)
  • 쿠버네티스 (Kubernetes | K8s) 기본개념
ahpicl64
ahpicl64
in the clouds
  • ahpicl64
    구름
    ahpicl64
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • WIL (4)
      • Jungle (36)
      • AWS (2)
      • SQL (2)
      • CS:APP (17)
      • Algorithm (10)
      • K8s (7)
      • 자료 구조 (10)
      • Spring (4)
      • React (0)
      • 운영체제 (1)
      • 기타등등 (2)
      • 이야기 (0)
  • 블로그 메뉴

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

    • github
  • 공지사항

  • 인기 글

  • 태그

    CloudFront
    S3
    python
    CSAPP
    k8s
    queue
    트러블슈팅
    AWS
    DevOps
    어셈블리
    부하테스트
    Spring
    github actions
    자료구조
    컴퓨터시스템
    IAM
    EC2
    DB
    알고리즘
    Spring boot
  • 02-21 07:23
  • hELLO· Designed By정상우.v4.10.3
ahpicl64
ETCD
상단으로

티스토리툴바