쿠버네티스, 이것만 알면 된다! - #4 쿠버네티스 설치
이제부터는 이론과 함께 실습을 통해서 쿠버네티스를 학습해보도록 하겠습니다.
실습을 위해서 우선 쿠버네티스 설치부터 시작합니다!
먼저, 설치에 앞서 Master Node와 Worker Node로 사용할 2개의 가상머신(Virtual Machine)을 준비합니다.
사전 작업
쿠버네티스를 설치하기 위해서는 2가지의 사전 작업이 필요합니다.
- Swap 메모리 비활성화
쿠버네티스는 Pod를 생성할 때, 필요한 만큼의 리소스를 할당 받아서 사용하는 구조입니다. 따라서 메모리 Swap을 고려하지 않고 설계되었기 때문에, 쿠버네티스 클러스터 Node들은 모두 Swap 메모리를 비활성화 해줘야 합니다.
다음 명령어를 통해서 Swap 메모리를 비활성화 시켜줍니다.
- Docker 설치
쿠버네티스의 밑바탕이 되는 Container Engine을 설치해야 합니다. 여러가지 Container Engine 중, Docker를 설치하였습니다.
다음 명령어를 통해서 Docker Engine을 설치할 수 있습니다.
클러스터 구축을 위한 설치 작업
사전 작업이 완료되었다면, 쿠버네티스 클러스터를 구축하기 위해 모든 노드에 kubeadm, kubelet, kubectl을 설치하겠습니다!
각각의 SW를 설치하는 이유는 다음과 같습니다.
- kubeadm을 사용하면 손쉽게 클러스터를 구축할 수 있고, 쿠버네티스의 구성요소인 etcd, kube-apiserver, kube-controller-manager, kube-scheduler를 설치해줍니다.
- kubelet은 클러스터의 모든 Node에서 실행되어야 하고, Pod 및 컨테이너 시작 등의 작업을 수행하는 구성요소입니다.
- kubectl은 클러스터와 통신하는 CLI(Command Line Interface)입니다.
다음 명령어를 통해서 kubeadm, kubelet, kubectl을 각각 설치할 수 있습니다.
설치가 완료되면, kubectl을 사용할 수 있도록 설정을 해야합니다.
- root 사용자일 경우
- root 사용자가 아닐 경우
Master Node 설정
쿠버네티스 클러스터를 위한 도구가 모두 설치되었다면, 지금 부터는 본격적으로 클러스터 노드에 대한 설정을 해보도록 하겠습니다.
우선 하나의 Node를 Master Node로 설정하기 위해서 kubeadm의 init 명령어를 통해 설정을 진행합니다.
init 명령어를 통해 Master Node로 초기화 시키고, 옵션으로는 Pod의 네트워크를 위해 CNI를 설정하고 마스터 노드의 API Server 주소를 설정할 수 있습니다.
다음 명령어를 통해서 Master Node 설정이 가능합니다.
Master Node 초기화가 완료되면, Pod 끼리의 통신을 도와주는 CNI를 배포해야 합니다. 위에서는 여러가지 CNI 종류 중 Flannel에 대한 Pod Network를 사용하였으므로, Flannel을 배포합니다.
다음 명령어를 통해 Flannel을 배포할 수 있습니다.
Worker Node 설정
이제 Worker Node를 설정할 텐데요, 이를 위해서는 먼저 토큰에 대한 확인이 필요합니다.
하나의 Master Node가 설정이 완료되면, Master Node에 join할 수 있는 토큰이 부여됩니다. 해당 명령어를 복사하여 Worker Node에 붙여넣으면, Worker Node 설정이 완료됩니다.
마무리
드디어 쿠버네티스를 설치하는 작업은 끝이 났습니다!
하지만, 지금은 가상머신(Virtual Machine)에 Master Node와 Worker Node를 설치하는 작업만 완료했습니다.
다음 시간부터는 쿠버네티스를 실제로 사용하는 방법에 대해 설명드리도록 하겠습니다!
관련글
1.쿠버네티스란 무엇일까? - https://ktcloudplatform.tistory.com/67
2.Desired State - https://tech.ktcloud.com/68
3.쿠버네티스 구성요소 - https://tech.ktcloud.com/70