본문 바로가기

혼자하는 프로젝트/AWS_쿠버네티스_Docker

K8S Master Node HA 구성 (2개의 Worker Node 참여)

728x90
반응형

# EC2 인스턴스를 생성 (t3.samll - 2개)

1. Swap을 사용하지 않도록 설정한다. (모든 노드 공통)

swapoff -a

echo 0 > /proc/sys/vm/swappiness

sed -e '/swap/ s/^#*/#/' -i /etc/fstab

2. docker 설치 (모든 노드 공통)

sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

3. docker 데몬 교체 (모든 노드 공통)

# Docker 데몬이 사용하는 드라이버를 cgroupfs 대신 systemd를 사용하도록 설정
cat << EOF | sudo tee –a /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

# 위 명령어를 실행 후 아래의 명령어 실행
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker

4. kubernetes 설치 (모든 노드 공통)

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

5. hostname 설정 (모든 노드 공통)

# 마스터 노드나 워커노드 추가 시 설정을 변경 해줘야 한다.
sudo vi /etc/hosts
172.16.0.86          master1
172.16.0.189         master2
172.16.0.142         master3
172.16.0.117         worker1
172.16.0.83          worker2

# 각 노드 서버에서 실행
# master1
hostnamectl set-hostname master1
# master2
hostnamectl set-hostname master2
# master3
hostnamectl set-hostname master3

# worker1
hostnamectl set-hostname worker1
# worker2
hostnamectl set-hostname worker2

6. CNI 설치 (모든 노드 공통)

택 1
1. fannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2. weave
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')&env.IPALLOC_RANGE=10.244.0.0/16"

#나는 3번 설치함
3. calico
kubectl apply -f https://docs.projectcalico.org/v3.19/manifests/calico.yaml

7. Worker Node를 Master Node에 Join

- 마스터 노드 실행 시 생성되는 Join 코드에서 워커 노드에서 실행하는 코드를 복사하여 워커 노드 에서 실행

...

Then you can join any number of worker nodes by running the following on each as root:
#워커 노드에서 실행해야 하는 코드(아래의 값은 임의의 값으로 변경 함)
kubeadm join 172.16.0.86:26443 --token 28wiw3.xo************fiek33u \
        --discovery-token-ca-cert-hash sha256:f2ff******************09c7c3c3e4fadd5a120d592a8fd067f

- 실행 명령어 (예시)

sudo kubeadm join 172.16.0.86:26443 --token 28wiw3.xo************fiek33u \
        --discovery-token-ca-cert-hash sha256:f2ff******************09c7c3c3e4fadd5a120d592a8fd067f

8. 결과 (마스터 노드 3, 워커 노드 2)

root@master1:~# kubectl get nodes
NAME              STATUS   ROLES                  AGE     VERSION
ip-172-16-0-117   Ready    <none>                 3m50s   v1.23.4
ip-172-16-0-83    Ready    <none>                 15s     v1.23.4
master1           Ready    control-plane,master   53m     v1.23.4
master2           Ready    control-plane,master   52m     v1.23.4
master3           Ready    control-plane,master   52m     v1.23.4

- 끝 - 

728x90
반응형