우분투에서 쿠버네티스 클러스터 구축하기

N100 미니PC에 Ubuntu와 Kubernetes 설치하는 법을 단계별로 소개. Ubuntu 설치부터 Docker 설정, Kubernetes 설치 및 클러스터 구성, Calico 네트워크 플러그인 적용까지 따라해보기. 모든 과정은 쉽게 따라 할 수 있도록 상세하게 정리됨. 클러스터 구축에 도전해보자

kubernetes logo

혼자 진행하는 연구중 쿠버네티스를 활용한 연구가 있다. 따라서 개발환경을 구축하기 위해서 Kubernetes 클러스터를 구축하려한다.
필자의 환경은 N100 미니PC 3대에 Ubuntu Desktop(24.04)이 설치되어있다.
설치 과정을 단계별로 정리했으니 따라 하면 된다.


1. Ubuntu 설치

먼저, 각 미니 PC에 Ubuntu Desktop을 설치한다.

설치 방법은 Ubuntu Desktop 설치하기를 참고하자. 여기에서는 Ubuntu 데스크탑 이미지 다운로드부터 부팅 디스크 생성, 설치 및 설정까지 상세히 안내하고 있다.


2. Kubernetes 설치 준비

Ubuntu 설치가 완료되었으면, Kubernetes를 설치하기 위한 준비 작업을 시작한다.

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

3. Docker 설치

Kubernetes 설치 전에 Docker를 설치한다. 아래 명령어를 차례로 실행하자.

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo systemctl start docker
sudo systemctl enable docker

4. Kubernetes 설치

다음으로 Kubernetes를 설치한다. 아래 명령어를 순서대로 실행하자.

sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" > /etc/apt/sources.list.d/kubernetes.list'
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

5. 시스템 설정

5.1 메모리 스왑 비활성화

Kubernetes 설치 전에 메모리 스왑을 꺼야 한다.

sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab

5.2 네트워크 브릿지 설정

Kubernetes에서 네트워크 브릿지를 사용하도록 설정하자.

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

5.3 Containerd 설정

Containerd를 설정하고 재시작하자.

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

Kubeadm 이미지를 미리 가져오자.

sudo kubeadm config images pull

6. Kubernetes 클러스터 구성

6.1 마스터 노드 초기화

마스터 노드에서 다음 명령어를 실행하여 초기화를 진행하자. 본인IP는 마스터 노드의 IP로 바꾸어 입력하자.

sudo kubeadm init --apiserver-advertise-address=본인IP --pod-network-cidr=192.168.0.0/16

여기서 sudo kubeadm join ...하는 토큰이 뜰 것이다. 이걸 복사해놓자. 나중에 워커노드에서 연결할 때 사용된다.

초기화 후, kubectl 명령어를 사용하기 위해 클라이언트를 설정하자.

sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6.2 네트워크 플러그인 설치

Calico 네트워크 플러그인을 마스터 노드에서 설치하자.

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

6.3 워커 노드 연결

위에서 복사해놓은 kubeadm join ...으로 시작하는 명령어를 사용할 것이다. 각 워커 노드에서 해당 명령어를 실행하여 클러스터에 연결하자.(앞에 sudo 붙일것!)

sudo kubeadm join ...

7. 클러스터 상태 확인

모든 워커 노드가 정상적으로 연결되었는지 확인하려면, 마스터 노드에서 다음 명령어를 입력하자.

kubectl get nodes
kubectl get nodes

노드 상태가 모두 Ready로 출력되면 설치가 성공적으로 완료된 것이다.