새해를 맞이하여 그동안 생소했던 쿠버네티스를 학습하며 블로그에 정리해보려고 한다.
우선 해당 블로그를 참고하여 학습 환경을 세팅하며 시작하였다.
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 서비스의 다른 인스턴스를 지정해야 한다.