지금이라도 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
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 -"
명령어 몇 줄로 간단하게 설치가 완료되었습니다.
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
테스트
마지막으로 테스트 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
웹브라우저에서 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