:: Dev/Etc

K3S - 로컬에서 K8S를 가볍게

jETA 2025. 4. 29. 14:00
반응형

지금이라도 Kubernetes를 사용해보긴 해야겠다는 생각은 들지만

막상 클러스터를 구성해보기엔 홈 서버도 없고

클라우드에서 체험하자니 금액이 걱정이 된다면.

 

K8S를 경량화 한 K3S가 있습니다.

 

오늘은 Multipass를 이용해 Ubuntu를 가상으로 설치하고 K3S를 구성하는 방법을 기록해봅니다.

 

 

Multipass 설치

먼저 Ubuntu를 가상 환경에서 구동하기 위해 Multipass를 설치합니다.

MacOS에서는 GUI 프로그램을 다운로드 받아서 설치하거나, homebrew를 이용해 설치할 수 있습니다.

 

원하는 방법으로 설치합니다.

GUI 버전을 설치하면 CLI 명령어도 함께 설치되기 때문에 GUI 버전을 권장합니다.

 

1. GUI 설치: https://canonical.com/multipass/docs/install-multipass

2. CLI 설치

$ brew --cask multipass

 

 

인스턴스 셋팅

아래 명령어를 순서대로 입력하여 인스턴스를 생성합니다.

Master 인스턴스는 리소스를 조금 넉넉히 셋팅하겠습니다.

$ multipass launch --name master --cpus 2 --memory 2G --disk 10G noble
$ multipass launch --name worker1 --cpus 1 --memory 1G --disk 6G noble
$ multipass launch --name worker2 --cpus 1 --memory 1G --disk 6G noble
$ multipass list

 

CLI 환경에서도 간단하게 실행 상태를 조회할 수 있습니다.
GUI 환경에서는 실행 상황을 더 간편하게 조회할 수 있습니다.

 

 

K3S 설치

이제 본격적인 K3S를 설치 과정입니다.

 

아래 명령어를 입력하여 master 인스턴스에 K3S를 설치합니다.

$ multipass exec master -- /bin/bash -c "curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -"

 

아래 명령어를 입력하여 필요한 정보를 변수로 저장하고, 각 worker에 agent를 설치합니다.

$ K3S_URL=https://$(multipass info master | grep IPv4 | cut -f2 -w):6443
$ K3S_TOKEN=$(multipass exec master -- sh -c "sudo cat /var/lib/rancher/k3s/server/node-token")
$ multipass exec worker1 -- sh -c "curl -sfL https://get.k3s.io | K3S_TOKEN=$K3S_TOKEN K3S_URL=$K3S_URL sh -"
$ multipass exec worker2 -- sh -c "curl -sfL https://get.k3s.io | K3S_TOKEN=$K3S_TOKEN K3S_URL=$K3S_URL sh -"

 

[INFO] systemd: Starting k3s-agent가 출력되면 설치가 완료된 것입니다.

 

명령어 몇 줄로 간단하게 설치가 완료되었습니다.

 

 

kubectl 설정

이제 k3s를 제어할 수 있도록 kubectl을 설정하겠습니다.

아래 명령어를 입력하여 k3s.yaml 파일을 로컬로 가져옵니다.

$ mkdir -p ~/.k3s
$ multipass copy-files master:/etc/rancher/k3s/k3s.yaml ~/.k3s

 

가져온 파일을 편집기로 열어서 IP를 master 인스턴스의 ID로 변경합니다.

 

저장 후 아래 명령어를 실행해서 정상 조회되는지 확인합니다.

$ kubectl --kubeconfig ~/.k3s/k3s.yaml get node

 

master, worker1, worker2가 정상 조회되면 성공입니다.

 

 

테스트

마지막으로 테스트 Pod를 실행하여 정상 작동하는지 확인하겠습니다.

아래 명령어를 실행하여 테스트 Pod를 배포합니다.

$ kubectl --kubeconfig ~/.k3s/k3s.yaml apply -f https://k8s.io/examples/application/deployment.yaml
$ kubectl --kubeconfig ~/.k3s/k3s.yaml expose deployment nginx-deployment --type=NodePort --name=n-service

 

아래 명령어로 외부로 노출된 포트를 확인합니다.

$ kubectl --kubeconfig ~/.k3s/k3s.yaml describe services

위 이미지에서는 32242 포트입니다.

 

웹브라우저에서 master 인스턴스의 IP와 위 포트로 접속하여 Welcome 페이지가 표시되는지 확인합니다.

 

 

참고 문서

- 빠른 시작 가이드 - k3s -https://docs.k3s.io/kr/quick-start

- [Mac] Kubernetes K3S 설치 with multipass - h13m0n.dev - https://velog.io/@h13m0n/1

- K3s를 활용한 로컬 쿠버네티스 개발 환경 만들기 - 눈뜨고코베인 개발 로그 - https://cobain.me/2020/07/14/K3s-On-Mac.html

- 실리콘 Mac에서 Local K8S 구축하기 #K3S #Multipass - Coding Groot - https://coding-groot.tistory.com/236

반응형