지난 시간에는 Minikube와 Kind를 각각 구축하고 비교하는 시간을 가져봤다. 주로 로컬에서 실습과 테스트 용도로 사용하는 대표적인 경량 쿠버네티스를 알아본 것인데 이어서 K3S를 구축하는 과정을 정리해보고자 한다.

K3S는 경량화된 Kubernetes로 리소스가 제한된 환경에서 사용하기 적합하게 설계되었으며 Kubernetes의 기능을 완전히 지원하면서도 훨씬 작은 용량과 간소화된 설치 과정을 지원한다. 필수적인 기능만 포함하고 선택적인 부분은 제거하거나 가볍게 만들어 졌다.
우선 로컬환경에서 K3S 다중 노드 클러스터를 구현하기 위한 방법으로는 베이그런트+버추얼박스가 대표적으로 보여지는데 버추얼박스의 경우 애플 실리콘칩의 지원이 중단되었기 때문에 나는 Multipass를 사용하여 간단하게 구축해보았다.
Multipass는 Ubuntu 개발사인 Canonical 에서 제공하는 가상머신 솔루션으로 여러개의 인스턴스를 MacOS 환경에서 동시에 사용할 수 있는 큰 장점이 있다.
설치와 관리가 쉬운 Multipass를 사용하여 K3S를 구축하는 과정을 한번 알아보자.

$ brew install --cask multipass
$ multipass version
multipass 1.13.1+mac
multipassd 1.13.1+mac
Multipass 설치가 완료되었다면 버전 확인을 통해 설치가 정상적으로 완료된 것인지 체크해준다.
Multipass는 명령어를 통해 가상머신을 간단하게 올릴 수 있는데 find 명령어를 통해 제공되는 Ubuntu 버전을 확인하고 사용할 버전을 선택하여 vm을 실행하면 된다.
$ multipass find
Image Aliases Version Description
20.04 focal 20240626 Ubuntu 20.04 LTS
22.04 jammy 20240701 Ubuntu 22.04 LTS
23.10 mantic 20240701 Ubuntu 23.10
24.04 noble,lts 20240702 Ubuntu 24.04 LTS
나는 20.04인 jammy를 선택해 각각 master, worker1, worker2로 구성하여 생성해주었다.
# multipass launch --name <vm 이름> --cpus <할당할 cpu 수> --mem <할당할 memory 수> --disk <할당할 디스크용량> <ubuntu alias>
$ multipass launch --name k3s-master --cpus 1 --mem 1G --disk 5G jammy
$ multipass launch --name k3s-worker1 --cpus 1 --mem 1G --disk 5G jammy
$ multipass launch --name k3s-worker2 --cpus 1 --mem 1G --disk 5G jammy
# 생성한 vm 확인
$ multipass list
Name State IPv4 Image
k3s-master Running 192.168.64.2 Ubuntu 22.04 LTS
k3s-worker1 Running 192.168.64.3 Ubuntu 22.04 LTS
k3s-worker2 Running 192.168.64.4 Ubuntu 22.04 LTS
이제 각 노드에 K3S를 설치해주면 되는데 master 노드의 경우 설치 후 토큰과 IP 정보를 미리 조회하여 알아두어야 한다. 그래야 추후 worker 노드들을 같은 클러스터에 포함시킬 수 있다.
# multipass shell <vm 이름>
$ multipass shell k3s-master
# K3S 설치 및 상태 확인
$ curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -
$ systemctl status k3s
# 토큰 정보 확인
$ sudo cat /var/lib/rancher/k3s/server/node-token
# 로컬 환경에서 multipass info 명령어 혹은 multipass list 명령어를 통해 master 노드의 IP를 확인 할 수 있음
$ multipass info k3s-master | grep IPv4
IPv4: 192.168.64.2
마스터 노드의 설치가 끝났다면 각 worker1, worker2 노드에 접속하여 설치 명령어를 실행해준다.
# K3S 설치
$ curl -sfL https://get.k3s.io | K3S_URL=https://192.168.64.2:6443 K3S_TOKEN=토큰정보 sh -
마스터 노드에서 kubectl 명령어로 노드를 조회할 수 있다.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3s-master Ready control-plane,master 27m v1.29.6+k3s1
k3s-worker1 Ready worker 5m7s v1.29.6+k3s1
k3s-worker2 Ready worker 2m29s v1.29.6+k3s1
이번 시간까지는 로컬에서 쿠버네티스를 사용할 수 있는 케이스를 다뤄보았다. 간편하게 설치하고 실습까지 해볼 수 있는 환경을 구축해보는 것만으로도 쿠버네티스의 이해도가 높아졌다.
만일 쿠버네티스를 입문하는 사람이 있다면 냅다 강의를 끊어서 시작하는 것보단 우선 경량 쿠버네티스를 로컬에 설치하고 명령어에 익숙해지는 실습해보는 게 훨씬 도움될 것이라고 생각된다.
[참고]
https://ji-yong.com/blog/kubernetes-on-mac/k3s-with-multipass
https://elsainmac.tistory.com/870
https://somaz.tistory.com/268