Search

ETCD

Created
2023/08/01 14:07
Tags
k8s
CKA
Mumshad Mannambeth
Core Concept

1) About

ETCD는 분산시스템에서 이용되는 Key-Value 형태의 간단하고, 안전하며, 빠른 데이터베이스
기존의 데이터베이스처럼 컬럼이 존재하는 경우, 새로운 컬럼의 추가가 테이블 전체에 영향을 끼침
ETCD는 마치 각각의 주체가 하나의 파일을 갖고, 각 파일마다 각자의 속성을 Key-Value로 가짐
이에 따라 각 주체의 속성 변화가 다른 주체의 속성 변화로 이어지지 않음
ETCD의 기본 포트 값은 2379
ETCD의 설치 시 etcdctl 이라는 제어 CLI를 함께 설치하게 되고, 이를 이용하여 ETCD를 조작할 수 있음

2) History

2013/08 v0.1
2014/12 v0.5
2015/02 v2.0
2017/01 v3.1
2018/11 CNCF Incubation
13 ~ 14년의 기간동안 0버전을 유지하다가, 15년에 2.0으로 Stable로 릴리즈
2.0 버전에서 Consensus Algorithm을 재설계하여 초당 1만건의 요청을 처리
3.1 버전에서는 더 많은 성능 개선과 함께 ETCD 이용 API가 바뀜
주로 바뀐 점은 개념적인 부분인데, 버전 2.0에서는 옵션의 형태를 띄고 버전 3.0에서는 명령어의 형태를 띔
예를 들어, etcd의 버전을 확인할 때 API 2.0을 기준으로 —version으로 동작하며, API 3.0을 기준으론 version으로 동작
이 외에도 여러 명령어가 바뀌었는데, 주로 차이는 위와 같음
*API 버전의 별도 설정이 없는 경우엔 2.0으로 동작

3) Role

ETCD는 쿠버네티스에서 사용하는 요소들의 정보를 저장
예를 들면, Nodes, Pods, Configs, Secrets, Accounts, Roles, Bindings…
kubectl이라는 명령어를 이용할 때 쿠버네티스의 어떤 정보가 필요하다면, 해당 정보들은 모두 ETCD에서 얻음
그리고 kubectl의 명령어로 쿠버네티스의 클러스터에 변화를 주는 경우, ETCD의 정보도 갱신
ETCD는 쿠버네티스의 설정에 따라 크게 2가지의 형태로 배포 (Manual, Kubeadm)
ETCD를 Manual로 배포하는 경우는 쿠버네티스를 스크래치로 직접 배포하는 경우인데, 말 그대로 ETCD를 직접 다운로드 받아서 설치하고 설정 값을 통해 서비스로 구성하는 것
쿠버네티스의 클러스터를 Kubeadm을 통해 설정하게 되면 ETCD 역시 함께 설정되면서 자동으로 배포되는데, kubectl을 이용하여 pod를 확인해보면 ETCD는 kube-system 네임스페이스에 위치하는 것을 확인할 수 있음