Page 40 -
P. 40
19.2 etcd K ubernetes P erfect G uide
etcd는 코어OS(CoreOS)사가 주체가 되어 개발하고 있는 오픈 소스 소프트웨어의 분산 KVS(Key-
Value Store)다. etcd는 가용성을 확보하기 위해 클러스터 구성이 가능하고, 클러스터를 구성할 때
분산 합의 알고리즘(래프트(Raft))을 사용한다. etcd 클러스터는 단일 리더(leader)가 있고, 리더가
어떤 이유에서 동작하지 않으면 자동으로 새로운 리더가 선출되어 서비스를 지속한다.
etcd에는 쿠버네티스 클러스터에 등록된 모든 정보가 저장되어 있어 etcd의 데이터를 보호하는
것이 가장 중요하다. 따라서 단일 장애점(SPoF)이 되지 않도록 etcd는 클러스터를 구성하여 가
1
용성을 확보해야 한다. 클러스터링 알고리즘 래프트 의 특성상 etcd 클러스터 구성은 세 대/다섯
대/일곱 대와 같이 홀수로 구성하는 것을 추천한다.
또 etcdctl snapshot 명령어 등을 사용하여 etcd 클러스터 상태를 정기적으로 백업해 두면 좋을
것이다.
19.3 kube-apiserver K ubernetes P erfect G uide
kube-apiserver는 쿠버네티스 API를 제공하는 구성 요소다. kubectl은 kube-apiserver에
요청을 보내어 디플로이먼트나 서비스와 같은 리소스 생성/삭제 등의 작업을 한다. 또 kube-
scheduler/kube-controller-manager/kubelet 등의 구성 요소도 kube-apiserver에 요청을
보내 처리하게 된다. kube-apiserver는 요청을 받는 API 서버로, 로드 밸런스 아래에 여러 대를
나열함으로써 이중화할 수 있다.
예를 들어, kubectl 등을 사용하여 파드 리소스를 등록할 때 kube-apiserver는 파드 리소스 정
보를 etcd에 저장한다. 그때까지는 아직 기동할 노드가 결정되지 않기 때문에 노드 정보(spec.
nodeName)는 등록되지 않고 파드는 노드가 할당되지 않은 상태다(그림 19-2).
1 https://raft.github.io/
794
쿠버네티스_04.indd 794 2021-07-20 오후 1:34:55