etcd를 아나요

Watermelon·2025년 11월 13일

CKA 학습 과정

목록 보기
8/35

etcd란?

simple, secure, fast한 key-value 저장소

표 데이터베이스

SQL, 관계형 DB를 말함

  • 새로운 정보 추가 시 테이블 전체가 영향받음
  • 세상에 새로운 인간D가 들어오자마자 새로운 데이터를 자기 혼자만 갖고 있다..
  • 다른 사람들에게는 없는 데이터인데 저 NULL 값이 굉장히 신경쓰인다
  • 따라서 이러한 DB는 유연성이 적고 정형 데이터에 적합한 DB이다

Document store

  • 유연성도 괜찮고, 반정형 데이터에 적합하다

key-value store

key: 나이		value: 24

key: user:john_doe
value: name=john_doe, age=24

key: user:john_doe
value: '{"name":"john_doe", "age":"224"}'
  • 매우 빠르게 동작 가능, 매우 유연, 빠른 조회가 가능

install etcd

  1. Download Binaries
curl -L https://아무튼 etcd 다운로드 링크/ -o etcd-v3.x.xx
  • 이 방법은 인트라넷에서는 사용이 불가능하기 때문에, 사전에 해당 링크에서 직접 다운로드 후 패키지를 옮겨야한다
  1. Extract
tar xzvf etcd-v3.x.xx-linux-amd64.tar.gz
  • 리눅스 버전을 잘 확인하고 파일을 가져와서 풀어야한다
  1. Run etcd service
./etcd
  • 기본적으로 port 2379에서 수신 대기
  • 그러면 해당 서버는 etcd server가 된다
  • 시스템 서비스 또는 K8s 클러스터 pod로 실행하는 것이 이상적이다
  • etcd client(etcd 명령줄 클라이언트)를 통해 ket-value 저장 및 검색 가능
./etcdctl put key1 value1
./etcdctl get key1

## 명령어 확인
./etcdctl
  • etcd version에 따라 성능 향상 및 명령어 변경이 있었음
  • 이후 CNCF의 졸업 프로젝트가 됨
  • etcd version 또는 ./etcdctl로 확인 가능

K8s에서의 etcd

관리 목록

Nodes, Pods, Configs, Secrets, Accounts, Roles, Bindings, Others

  • kubectl get 명령어의 경우 etcd server에서 가져온다
  • 추가 노드 추가, 파드 배포 등 클러스터에 대한 모든 변경 사항은 etcd 서버 업데이트 후 확인 가능
  • 클러스터 설정 방법에 따라 etcd가 다르게 배포됨
  • 처음부터 배포하는 방법
  • kube ADM 도구를 사용하여 배포하는 방법(모의고사 환경은 kube ADM 도구를 사용한다고 함)
  • 두 방법의 차이를 알고 숙지하면 좋음

etcd를 kube ADM 도구를 사용하여 배포

wget -q --https-only \
"https://github.com/coreos/etcd/releases/download/v3.x.x/etcd-v3.x.x-linux-amd64.tar.gz"

etcd.service
  • 대부분의 옵션들은 인증서와 관련됨
  • --advertise-client-urls https://${INTERNAL_IP}:2379: etcd가 수신하는 주소, etcd 서버 접속 시 kube API 서버에서 구성
kubectl get pods -n kube-system
  • kube ADM을 사용하여 클러스터 설정하는 경우 kube ADM은 atcd 서버를 kube 시스템 네임스페이스에 파드로 배포
  • etcd 제어 유틸리티를 사용하여 etcd 데이터베이스 탐색 가능
kubectl exec etcd-master -n kube-system etcdctl get / --prefix -keys-only
  • 쿠버네티스가 저장한 모든 키 나열을 위해 etcd 컨트롤 시행

  • 쿠버네티스는 특정 디렉토리 구조에 데이터 저장
  • 루트 디렉터리는 Registry, 그 아래에 minions 등 존재


--initial-cluster controller-0=https://${CONTROLLER0_IP}:2380,controller-1=https://{CONTROLLER1_IP}:2380

  • 고가용성 환경에서는 클러스터에 여러 개의 마스터 존재 가능
  • 그러면 마스터 노드에 여러 개의 etcd 인스턴스가 분산됨
  • etcd 서비스 구성에서 올바른 매개변수를 설정하여 etcd 인스턴스끼리 알 수 있게 해야함
profile
많은 경험을 해보고자 하는

0개의 댓글