서론

 

이전 포스팅에서 Ubuntu 설치 및 클러스터 구성을 위한 환경 설정을 진행했습니다. 이번 포스팅에서는 본격적으로 Docker 및 쿠버네티스를 설치하는 과정을 다루겠습니다.


 

1. Docker 설치

 

1. root 계정으로 접속합니다. (sudo -i)

 

 

2. Docker를 설치합니다. (apt install docker.io)

 

 

3. Docker 상태를 확인합니다. (docker ps)

 

 

4. nginx 이미지를 실행해서 정상적으로 동작하는지 확인해봅니다.

(docker run -d -p 80:80 --rm --name nginx nginx)

 

 

5.  Safari를 실행하여 nginx 도커 이미지가 정상적으로 기동되었는지 확인합니다.

 

 

6. 생성한 Docker 컨테이너를 정리합니다. (docker stop nginx)

 

 

7. nginx 이미지를 삭제합니다. (docker rmi nginx)

 

 


 

2. 쿠버네티스 설치

 

쿠버네티스 공식 홈페이지에서 제공하는 방법으로 설치를 진행합니다. 

 

설치에 앞서 공식홈페이지에서 요구하는 요구사항을 살펴봅시다.

 

  • 2 GB or more of RAM per machine (any less will leave little room for your apps)
  • 2 CPUs or more
  • Full network connectivity between all machines in the cluster (public or private network is fine)
  • Unique hostname, MAC address, and product_uuid for every node. See here for more details.
  • Certain ports are open on your machines. See here for more details.
  • Swap disabled. You MUST disable swap in order for the kubelet to work properly

 

여기서 마지막 줄을 보면, Swap을 비활성화 해야됩니다. 그 이유는 Swap 기능은 본래 가용된 메모리보다 더 큰 메모리 할당을 가능하도록 하기 위함인데, 쿠버네티스 철학은 주어진 인스턴스의 자원을 100% 가깝게 사용하는 것이 목표이기 때문에 부합되지 않습니다. 따라서 성능을 제대로 사용하기 위해서 Swap 기능을 비활성화 해야합니다.

 

 

1. Swap 중지하기 (swapoff -a)

 

 

2. 재부팅되면 초기화 되므로 완전하게 중지시킵니다. (sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab)

 

 

3. 공식 홈페이지에 있는 Kubeadm 설치 명령어를 복사합니다.

 

명령어

sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

 

4.  명령어 실행을 위하여 shell 파일을 만듭니다. (vi kubeadm-install.sh)

 

 

5. 공식 홈페이지에서 복사한 명령어를 붙여넣기 합니다.

 

 

위 명령어를 통해서 kubeadm kubelect kubectl이 설치됩니다.

 

 

6. Shell 파일을 실행합니다. (sh kubeadm-install.sh)

 

 

7. kubeadm이 정상적으로 설치되었는지 확인합니다. (kubeadm version)

 

 

8. 마스터 노드를 중지합니다. (halt)

 


3. 클러스터 구축

 

1. 쿠버네티스 VM 복사 전에 스냅샷을 찍습니다.( 나중에 문제생길 시 롤백 용도)

 

 

2. Worker 노드 복사를 위해 Master VM 선택 후 마우스 오른쪽 클릭 > 복제 버튼을 클릭합니다.

 

 

3.  복제할 가상머신의 이름과 저장 경로를 설정합니다.

 

 

4. MAC 주소 정책에서 모든 네트워크 어댑터의 새 MAC 주소 생성 버튼을 클릭합니다. 이후 다음 버튼을 클릭합니다.

 

 

 

5. 완전한 복제를 선택후 다음 버튼을 클릭합니다.

 

 

 

6. 복제 버튼을 클릭합니다.

 

 

 

7. 1~6 번과정을 동일하게 반복하여 Work2 가상 머신을 생성합니다.

 

 

8. work1 가상 머신을 기동 후 터미널을 엽니다.

 

 

 

9. root로 접속합니다. (sudo -i)

 

 

10. hostname을 변경합니다. (hostnamectl set-hostname node01)

 

 

11.  고정 IP 설정을 위해 설정 파일 위치로 이동합니다.

 

 

12.  설정 파일을 오픈합니다.

 

 

13. node01의 IP를 변경합니다. (AS-IS 192.168.72.101, TO-BE : 192.168.72.102)

 

 

14. reboot을 수행합니다. (reboot)

 

 

15. reboot 이후 hostname이 변경되었음을 확인합니다.

 

 

16. work1 가상머신과 동일한 작업을 위해 work2 머신을 기동합니다.

 

 

17.  터미널을 엽니다.

 

 

18. root로 접속합니다. (sudo -i)

 

 

19. hostname을 변경합니다. (hostnamectl set-hostname node02)

 

 

20. 고정 IP 설정을 위해 설정 파일 위치로 이동합니다.

 

 

21. 설정 파일을 오픈합니다.

 

 

22. node02의 IP를 변경합니다. (AS-IS 192.168.72.101, TO-BE : 192.168.72.103)

 

 

23. 재부팅을 수행합니다.

 

 

24. reboot 이후 hostname이 변경되었음을 확인합니다.

 

 

25. Master 가상 머신을 기동합니다.

 

 

26. Ping을 수행하여 정상적으로 수행되는지 확인합니다.

(※ Master 뿐만 아니라 Work1, Work2 가상 머신에서도 Ping을 수행하여 패킷이 정상 수신되는지 확인합니다.)

 

 

 

 

27. Master 노드에서 root 계정으로 접속합니다.

(※ 반드시 Master에서만 수행해야합니다.)

 

 

28. kubeadm init 명령어를 수행합니다.

(※ 해당 명령어를 통해 kube-apiserver, scheduler 등이 설치됩니다.)

 

 

29. 정상적으로 설치되었으면 아래와 같은 화면이 표시됩니다.

 

 

위 화면에서 두가지 작업이 추가됩니다.

먼저 mkdir 부터 시작하는 영역은 kubectl을 통해 Kube API Server와 통신하기 위한 클라이언트 설정입니다.

 

아래 kubeadm join에 해당하는 영역은 Worker 노드에서 Master 노드 클러스터에 합류하기 위한 명령어입니다.

 

 

30. 아래 영역을 드래그하여 복사합니다. 이후 터미널 상단에 위치한 새탭 버튼을 클릭합니다.

 

 

31.  새탭에서 복사한 명령어를 수행합니다.

(※ root가 아닌 admin 계정으로 kubectl을 수행할 것이므로 계정이 올바른지 확인합니다.)

 

 

32. 이전 탭에서 클러스터 조인 명령어를 복사합니다.

 

 

 

33. Work1 노드, Work2 노드에서 root 계정으로 접속합니다.

 

 

34. Work1 노드에서 복사한 명령어를 실행합니다.

 

 

35. 아래와 같은 메시지가 나오면 정상적으로 등록된 것입니다.

 

 

36. Work2 노드에서도 동일한 명령어를 수행하여 클러스터 Join을 수행합니다.

 

 

37. Work2 노드에서 Join이 정상적으로 등록되었는지 확인합니다.

 

 

38. Master 노드 kadmin 계정에서 cluster가 정상적으로 구축되었는지 확인합니다. (kubectl get nodes)

 

 

위와 같이 3개 노드와 메시지가 표시된다면 정상입니다.

다만 STATUS가 NotReady 상태인 이유는 Pod Network가 구성되지 않았기 때문입니다.

 


4. Overlay Network 설치

 

쿠버네티스 공식 홈페이지에 있는 CNI 중 Weave net을 설치하겠습니다.

 

 

1. 위 공식 문서 링크를 클릭하여 Weave Net 탭을 선택하여 명령어를 복사합니다.

 

 

2. Master 노드에서 해당 명령어를 실행시킵니다.

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

 

 

3. node 상태를 살펴보면 STATUS가 Ready로 변경된 것을 확인할 수 있습니다. (kubectl get nodes)

 

 

4. 쿠버네티스 클러스터가 정상적으로 설치되었는지 확인하기 위해 nginx Deployment를 실행해봅니다.

(kubectl create deploy nginx-deploy --image=nginx)

 

 

5. Pod 상태를 확인하여 STATUS Running으로 되어있으면 정상적으로 동작하는 것입니다.

(kubectl get pods -o wide)

 

 

6.  실행시킨 Deployment를 종료시킵니다.

(kubectl delete deploy nginx-deploy)

 


마치며

 

지금까지 VirtualBox에서 쿠버네티스 클러스터를 구축하는 방법에 대해서 살펴봤습니다. 다음 포스팅에서는 공유 디스크 환경을 구성하는 NFS를 설정하여 PersistentVolume을 구성할 수 있도록 환경을 구성하는 방법을 살펴보겠습니다.

 

+ Recent posts