Kubernetes etcd 완벽 가이드! Cluster 상태 저장소와 Backup 구조 이해하기

Kubernetes Cluster가 정상적으로 동작하기 위해서는 현재 상태 정보를 저장하고 관리하는 데이터 저장소가 필요합니다.

Kubernetes에서 모든 Cluster 정보는 etcd라는 Key-Value Database에 저장됩니다.

예:

Deployment 생성

API Server 요청

etcd 저장

Controller 확인

Pod 생성

즉, Kubernetes Cluster의 모든 중요한 정보는 etcd에 기록됩니다.

구성 요소역할
etcdCluster 상태 저장
API Serveretcd 접근 관리
Controller Manager상태 비교 및 변경
SchedulerPod 배치 결정

etcd 구조를 이해하면 Kubernetes Backup, Recovery, High Availability 설계의 핵심을 이해할 수 있습니다.

Kubernetes etcd란?

etcd는 분산 Key-Value Database입니다.

Kubernetes에서는 Cluster의 모든 상태 정보를 저장하는 역할을 합니다.

저장 데이터:

  • Pod 정보
  • Deployment 정보
  • Service 정보
  • Secret 정보
  • ConfigMap 정보
  • Namespace 정보
  • Node 정보

Kubernetes의 “기억 저장소”라고 볼 수 있습니다.

Kubernetes Architecture에서 etcd 위치

전체 구조:

kubectl

API Server

etcd

Controller Manager

Scheduler

kubelet

etcd는 Control Plane 내부에서 가장 중요한 Component 중 하나입니다.

Kubernetes API Server와 etcd 관계

사용자는 직접 etcd에 접근하지 않습니다.

모든 요청은 API Server를 통해 처리됩니다.

흐름:

사용자 요청

API Server

etcd 저장

상태 변경

Controller 동작

API Server는 Kubernetes의 Gateway 역할을 합니다.

Kubernetes etcd에 저장되는 데이터

etcd에는 Kubernetes Object 정보가 저장됩니다.

예:

Deployment:

replicas: 3

Service:

clusterIP: 10.96.0.1

Secret:

database-password

모든 설정 정보가 저장됩니다.

Kubernetes etcd 동작 방식

etcd는 분산 Database로 동작합니다.

주요 특징:

  • Consistency 보장
  • Leader 기반 동작
  • Distributed Storage
  • Watch 기능 지원

Kubernetes는 etcd를 통해 Cluster 상태를 지속적으로 관리합니다.

Kubernetes etcd와 Raft Consensus

etcd는 Raft 알고리즘을 사용합니다.

구조:

etcd Node 여러 개

Leader 선택

데이터 복제

Consistency 유지

High Availability 환경에서 중요합니다.

Kubernetes etcd High Availability 구성

Production Cluster에서는 etcd를 여러 개 구성합니다.

예:

etcd-1

etcd-2

etcd-3

구조:

Leader

Follower 복제

하나의 Node 장애가 발생해도 Cluster 운영이 가능합니다.

Kubernetes Single etcd와 Multi etcd 비교

구분SingleMulti
구성1개3개 이상
장애 대응낮음높음
운영 환경개발Production
복구성낮음높음

Production 환경에서는 Multi 구성 사용이 일반적입니다.

Kubernetes etcd Backup이 필요한 이유

etcd에는 모든 Cluster 상태가 저장됩니다.

만약:

etcd 데이터 손상

Cluster 상태 손실

Resource 복구 어려움

따라서 정기적인 Backup이 필요합니다.

Kubernetes etcd Backup 방법

Snapshot 방식으로 Backup합니다.

예:

etcdctl snapshot save backup.db

결과:

Snapshot saved

Cluster 상태를 파일 형태로 저장합니다.

Kubernetes etcd Backup 확인

Snapshot 상태 확인:

etcdctl snapshot status backup.db

확인:

  • Revision
  • Size
  • Hash

정상 Backup 여부를 확인합니다.

Kubernetes etcd Restore 과정

장애 발생:

etcd 데이터 손실

Backup 파일 준비

Restore 실행

etcd 재구성

API Server 연결

Cluster 복구

Recovery 절차를 사전에 준비해야 합니다.

Kubernetes etcd와 Disaster Recovery

Enterprise 환경에서는 Backup 전략이 중요합니다.

구조:

자동 Backup

외부 Storage 저장

장애 발생

Restore

서비스 복구

Disaster Recovery Architecture와 연결됩니다.

Kubernetes etcd 보안 관리

etcd에는 민감한 데이터가 저장됩니다.

예:

Secret

Database Password

API Token

따라서 보호가 필요합니다.

관리 항목:

  • TLS Encryption
  • Access Control
  • Backup 암호화
  • Network 제한

Kubernetes etcd 성능 관리

etcd 성능은 Cluster 전체 성능에 영향을 줍니다.

관리 항목:

항목설명
Disk I/O저장 성능
Latency응답 속도
Database Size데이터 증가
Compaction오래된 데이터 정리

빠른 Storage가 중요합니다.

Kubernetes etcd 장애 분석

etcd 문제가 발생하면 확인합니다.

상태 확인:

etcdctl endpoint status

Health 확인:

etcdctl endpoint health

확인 항목:

  • Leader 상태
  • Disk 문제
  • Network
  • Certificate

Kubernetes etcd와 Monitoring

운영 환경에서는 etcd Metric을 확인해야 합니다.

확인:

  • Request Latency
  • Leader 변경
  • Database Size
  • Failed Request

Prometheus와 연동하여 관리합니다.

Kubernetes etcd 운영 전략

Production 환경:

3 Node 구성

자동 Backup

Backup 검증

Monitoring

Restore 테스트

실제 복구 가능한 환경을 만들어야 합니다.

Kubernetes etcd 장점

장점설명
상태 저장Cluster 정보 관리
일관성데이터 보호
Backup 가능복구 지원
분산 구조고가용성 제공

etcd는 Kubernetes의 핵심 데이터 저장소입니다.

자주 묻는 질문

etcd가 삭제되면 Kubernetes가 동작하지 않나요?

기존 실행 중인 Container는 일부 유지될 수 있지만 Cluster 상태 관리가 불가능해집니다.

Secret도 etcd에 저장되나요?

네. Kubernetes Secret 정보도 저장되므로 보안 관리가 중요합니다.

etcd Backup은 얼마나 자주 해야 하나요?

Cluster 변경 빈도와 중요도에 따라 정기적으로 수행해야 합니다.

마무리

Kubernetes etcd는 Cluster 전체 상태 정보를 저장하는 핵심 Database입니다.

구성 요소역할
etcd상태 저장
API Server접근 관리
Raft데이터 일관성 유지
SnapshotBackup·Recovery

etcd 구조를 이해하면 Kubernetes Backup, High Availability, Disaster Recovery 설계를 이해하는 기반이 됩니다.

다음 글에서는 Kubernetes 요청 처리의 중심 Component인 Kubernetes API Server 완벽 가이드! Cluster 통신과 인증 처리 구조 이해하기를 진행하겠습니다.

댓글 남기기