[쿠버네티스 기초 02] etcd
in Kubernetes
이 포스팅은 Udemy
의 Certified Kubernetes Administrator with Practice Tests
강의를 정리한 내용입니다.
etcd에 대해 알아봅시다.
ETCD?
etcd
는 빠르고 안전하고 간편한 분산 키 밸류 저장소이다.
Key-value store
- 보통 데이터베이스는 테이블 형태로 되어 있음 (e.g. 엑셀)
- 키 밸류 저장은 키와 밸류 형식으로 데이터를 저장함
key | value |
---|---|
Name | John |
Age | 45 |
- 키를 통해서 원하는 값을 조회할 수 있음 (중복 키 X)
- RDB를 완전 대체할 순 없지만, config 데이터 같이 빠르게 읽고 쓰기가 요구되는 작은 청크 단위의 데이터를 저장하기 적합
Install etcd
바이너리를 통해서 간단하게 설치할 수 있음 (구글링 ㄱㄱ)
실행
./etcd
Usage
etcdctl
을 통해 정보를 저장할 수 있음
저장
./etcdctl set key1 value1
조회
./etcdctl get key1
etcd in kubernetes
역할
- 쿠버네티스 클러스터에 대한 정보를 저장함 (nodes, pods, configs, secrets, accounts, roles, etc.)
kubectl
을 통해 얻는 모든 정보는 etcd로부터 오는 것임- 클러스터에 가하는 모든 행위도 etcd에 업데이트 됨
설치
직접 설치
kubeadm
을 통해서 k8s를 설치하지 않을 경우 etcd 도 마스터 노드에 직접 설치해야 함- 이 경우에 많은 certificate 정보들을 config 로 넘겨주게 됨
- 지금 섹션에서는
advertise-client
옵션만 기억하면 됨 - 이 옵션에 url을 통해 etcd가 listen하게 됨
...
--advertise-client-urls https://$(INTERNAL_IP):2379 \\
...
kube api server
는 이 URL을 통해 etcd에 접근함
kubeadm
을 통한 설치
kubeadm
이 etcd를 kube-system 네임스페이스에 pod로 띄워줌- HA 로 클러스터를 구성할 경우, 마스터 노드들이 여러 개이고 그에 따라 etcd도 마스터 노드들에 분산되어 배포됨
- 이 때 etcd config 를 제대로 설정해서 각 인스턴스가 서로의 존재를 알아야 함.
initial-cluster
옵션을 통해. - kubectl exec 으로 etcdctl 명령어를 사용하기 위해서는 etcdctl version과 certificate path 정보를 같이 넘겨줘야 함
kubectl exec etcd-master -n kube-system -- sh -c "ETCDCTL_API=3 etcdctl get / --prefix --keys-only --limit=10 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key"