day1: etcd 소개
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월에 최상위 프로젝트로 졸업했습니다.