day1: etcd 소개

발행: (2025년 12월 5일 오전 10:55 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

소개

Kubernetes CKA 학습 여정의 1일차는 전체 클러스터를 지원하는 키‑값 저장소인 etcd에 초점을 맞춥니다.

etcd란?

etcd는 고가용성, 분산형, 신뢰할 수 있는 키‑값 데이터베이스로, 단순하고 안전하며 빠릅니다. Kubernetes는 모든 클러스터 정보(노드, 파드, 설정, 시크릿, 서비스 계정, 역할, 역할 바인딩 등)를 etcd에 저장합니다. kubectl get과 같은 명령을 실행하면 API 서버가 etcd 데이터베이스에 질의합니다.

etcd는 키‑값 저장소이기 때문에 빠른 조회와 검색에 강점이 있습니다. 복잡한 SQL‑스타일 쿼리를 지원하지는 않지만, 키에 연결된 값은 JSON 문서와 같은 복잡한 데이터 구조가 될 수 있습니다.

etcd 서비스와 클라이언트

etcd 서버가 시작되면 기본적으로 포트 2379에서 서버의 IP 주소를 청취합니다. 클라이언트는 이 엔드포인트에 연결해 데이터를 저장하고 조회합니다. 기본 CLI 클라이언트는 etcdctl입니다.

# Example etcdctl command
./etcdctl put key1 value1

Note: etcd 버전에 따라 노출되는 API가 다르므로 사용 가능한 etcdctl 명령 및 동사는 달라질 수 있습니다.

Kubernetes에서의 etcd

Kubernetes 클러스터에서 이루어지는 모든 변경은 etcd 서버가 업데이트된 후에야 완전한 것으로 간주됩니다. Kubernetes는 데이터를 계층적 디렉터리 구조에 저장하며, 루트 레지스트리 디렉터리 아래에 각 객체 유형별 서브디렉터리가 존재합니다.

배포 옵션

  • 수동 설치: 클러스터를 처음부터 구축할 때는 etcd 바이너리를 다운로드하고 마스터/컨트롤‑플레인 노드에서 실행해야 합니다.
  • kubeadm: kubeadm을 사용하면 kube-system 네임스페이스에 pod 형태로 etcd가 자동으로 배포됩니다.

고가용성(HA) 설정

고가용성(HA) 환경에서는 여러 마스터/컨트롤‑플레인 노드가 각각 자체 etcd 인스턴스를 실행합니다. 이 인스턴스들은 서로를 인식해야 하며, 이는 etcd.service 파일의 --initial-cluster 플래그를 통해 설정됩니다. 예시:

--initial-cluster controller1=https://10.0.0.1:2380,controller2=https://10.0.0.2:2380,controller3=https://10.0.0.3:2380

CNCF 졸업

etcd는 2018년에 CNCF 인큐베이션에 진입했으며, 2020년 11월에 최상위 프로젝트로 졸업했습니다.

Back to Blog

관련 글

더 보기 »

AI 기반 개발 플랫폼

🤔 밤새도록 나를 괴롭힌 문제 상상해 보세요: GitHub에서 멋진 오픈‑소스 프로젝트를 발견합니다. 이 프로젝트는 10,000개가 넘는 issues와 수백 명의 contributors를 가지고 있습니다, …