[쿠버네티스 기초 02] etcd

이 포스팅은 UdemyCertified Kubernetes Administrator with Practice Tests 강의를 정리한 내용입니다.

etcd에 대해 알아봅시다.

ETCD?

etcd는 빠르고 안전하고 간편한 분산 키 밸류 저장소이다.

Key-value store

  • 보통 데이터베이스는 테이블 형태로 되어 있음 (e.g. 엑셀)
  • 키 밸류 저장은 키와 밸류 형식으로 데이터를 저장함
keyvalue
NameJohn
Age45
  • 키를 통해서 원하는 값을 조회할 수 있음 (중복 키 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"

© 2021. All rights reserved.

Powered by Hydejack v9.1.4