[따배쿠] Appendix1. 멀티마스터 쿠버네티스 클러스터(multi-master - HA Kuberenetes cluster) 운영
reliability 를 증가시키기 위해서 master node가 여러개이다.
etcd 끼리 항상 동기화되어 있다.
worker 노드들은 마스터와 직접 통신하는 것이 아니라 load balancer 와 통신하게 된다.
master 3개 load balancer 1개 worker 2개 총 컴퓨터 갯수가 7개다.
Load Balancer
docker run --name proxy -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro --restart=always -p 6443:6443 -d nginx
--restart=always == docker daemon과 함께 항상 같이 실행이 된다.
volume mount를 통해 lb 로 동작하게 한다.
-p == port forwarding
curl 10.100.0.254:6443 명령어로 잘 동작하는 지 확인
master 들이 켜져있지 않으므로 이게 정상이다.
HA cluster 구현 == master node 동기화
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
Creating Highly Available Clusters with kubeadm
This page explains two different approaches to setting up a highly available Kubernetes cluster using kubeadm: With stacked control plane nodes. This approach requires less infrastructure. The etcd members and control plane nodes are co-located. With an ex
kubernetes.io
master 1을 kubeamdin init으로 초기화 하고 LB에 등록 , master 2,3,은 master 1을 리더로 삼는다.
kubeadm init --control-plane-endpoint "lb.example.com:6443" --upload-certs
다 초기화가 완료되면 join할때 쓰는 token 을 준다. 이걸 이용해 master 2,3 을 master1 에 join한다.
연결이 끝났으니 CNI 를 master 1에설치를 한다.
control plane 에서 get pod 를 통해 연결이 되었는지 확인해준다.
이 명령어를 통해 worker node에서도 kubectl get pod 를 쓰게 해주고 확인할 수 있다.
worker node 2개도 인제 lb.example에 연결을 해준다.