본문 바로가기

Cloud/Kubernetes

ETCD

새해를 맞이하여 그동안 생소했던 쿠버네티스를 학습하며 블로그에 정리해보려고 한다.

 

우선 해당 블로그를 참고하여 학습 환경을 세팅하며 시작하였다.

https://smoothiecoding.kr/wsl2-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%9C%EC%9E%91/

 

WSL2 리눅스 시작하기 (윈도우 11) - 리눅스 기초 2 - 스무디코딩

WSL2 리눅스 시작하기 / 리눅스 배포판 설치

smoothiecoding.kr

 

설치한 ubuntu-20.04를 이용하여 실습해본다.

 

curl -L https://github.com/etcd-io/etcd/releases/download/v3.3.11/etcd-v3.3.11-linux-amd64.tar.gz -o etcd-v3.3.11-linux-amd64.tar.gz

 

* 서버 링크가 다시 다른 URL로 re-direct되어 있는 경우 -L 옵션을 사용

 

예를 들어 https://exmaple.com/url_org이 http://example.com/url_redirect로 연결되어 있다면 url_redirect까지 접속하는 명령어(location Follow redirects)

$ curl -L https://exmaple.com/url_org
 https://exmaple.com/url_org가 가르키는 redirect URL(https://exmaple.com/url_redirect) 까지 접속

 

 

tar xzvf etcd-v3.3.11-linux-amd64.tar.gz

* tar.gz 압축 풀기

$ tar -xzvf {압축 파일명}.tar.gz 

 

 

./etcd

etcd를 실행한다.

 

./etcdctl set testKey 1
./etcdctl get testKey

결과 1

 

 

./etcdctl --version


etcdctl version: 3.3.11
API version: 2

 

기본적으로 버전은 2로 세팅되어있고 

 

export ETCDCTL_API=3

위 명령어로 3으로 세팅 가능하다.

 

버전 2와 3은 많은 차이가 있다고 한다.(ex - 위의 set  put / --version  version ...)

 

 

ETCD 데이터 저장소는 클러스터에 관한 정보를 저장(Nodes, PODs, Configs, Secrets, Accounts, Roles, Bindings...) 

 

클러스터를 설정하는 방법에 따라 etcd는 다르게 배포되는데,

 

위의 예는 etcd 바이너리를 직접 다운로드하여 설치 및 구성, 마스터 노드에서 직접 서비스에 전달되는 많은 옵션이 있고,

그 중 다수가 인증서와 관련이 있음 그 중 하나 보아야 하는 것은 --advertise-client-urls의 서버IP, 포트2379이다.

 

다른 방법으로는 kubeadm을 사용하는 것이다. Pod로 etcd 서버를 배포하고

kubectl get pods -n kube-system

 명령어를 통해 kube system namespace에서 etcd db를 탐색 할 수 있다. 

이 pod 내에서 etcd 제어 유틸리티를 사용한다.

 

etcdctl get / --prefix -keys-only

예를 들어 위 명령어로 모든 키를 나열할 수 있다.

 

쿠버네티스는 특정 디렉터리 구조에 데이터를 저장한다.

루트 디렉토리는 /registry 이며 그 아래 다양한 구성이 있다. (minions, pods, replicasets, deployments, roles, secrets)

 

고가용성 환경엔 클러스터에 여러 마스터 노드가 있고 여러 etcd 인스턴스를 갖게되고 마스터 노드에 분산된다.

이 경우 etcd 인스턴스가 서로 인지하고 올바른 매개 변수를 설정하여 initial cluster option은 etcd 서비스의 다른 인스턴스를 지정해야 한다.

 

728x90
반응형