본문 바로가기
IT/k8s

[k8s] k3s vs MicroK8s: 경량 쿠버네티스 비교 분석 및 선택 가이드

by 수누다 2026. 4. 16.

경량 쿠버네티스, 왜 지금 이 선택이 중요한가요?

홈랩에 쿠버네티스를 올리려고 처음 도전했을 때가 생각나네요. 풀스택 쿠버네티스를 라즈베리파이 클러스터에 올렸다가 메모리가 터져서 노드가 죽어버리는 경험을 했거든요. 그때 처음 알게 된 게 바로 경량 쿠버네티스(Lightweight Kubernetes)라는 개념이었습니다.

요즘 엣지 컴퓨팅(Edge Computing), IoT, 홈랩, 개발 환경 구성 등 다양한 곳에서 쿠버네티스를 돌려야 하는 상황이 많아졌잖아요. 근데 풀 쿠버네티스를 그냥 때려박기엔 리소스 부담이 너무 크죠. 그래서 k3s vs MicroK8s라는 주제로 많은 분들이 고민을 하시더라고요.

저도 실제로 두 가지를 모두 운영해봤습니다. 홈랩 서버에서 k3s를 쓰고 있고, 개발 팀 환경 구성할 때 MicroK8s를 써봤거든요. 이번 글에서는 그 경험을 솔직하게 풀어드릴게요. 어떤 상황에서 뭘 선택해야 하는지, 제가 삽질했던 포인트들도 함께 공유합니다.

k3s와 MicroK8s 경량 쿠버네티스 아키텍처 비교 다이어그램

▲ k3s와 MicroK8s의 전체 아키텍처 개요 — 두 경량 쿠버네티스의 구조적 차이를 한눈에 비교한 다이어그램


k3s와 MicroK8s가 뭔지 먼저 짚고 가요

k3s — 40MB짜리 쿠버네티스

k3s는 Rancher Labs(현재 SUSE)에서 만든 경량 쿠버네티스 배포판입니다. 이름의 "k3s"는 k8s(쿠버네티스)보다 5배 가볍다는 의미에서 붙여진 이름이에요. 쉽게 말해, 꼭 필요한 것만 남기고 다 들어낸 쿠버네티스라고 보시면 됩니다.

주요 특징을 보면:

  • 단일 바이너리(Single Binary)로 배포 — 설치가 정말 간단해요
  • 메모리 사용량이 약 512MB 수준 (풀 쿠버네티스는 보통 1.5GB+)
  • 기본 스토리지로 SQLite 사용 (etcd 대신)
  • ARM 아키텍처 완벽 지원 — 라즈베리파이에서도 잘 돌아가요
  • Traefik Ingress(트래픽 진입점 컨트롤러)가 기본 포함
  • 엣지 컴퓨팅, IoT 환경에 최적화

MicroK8s — Canonical이 만든 스냅 패키지 쿠버네티스

MicroK8s는 Ubuntu를 만든 Canonical에서 개발한 경량 쿠버네티스입니다. snap 패키지로 설치되는 게 특징이에요. 처음엔 이게 뭔가 싶었는데, 써보니까 개발 환경이나 Ubuntu 기반 시스템에서 정말 편하더라고요.

  • snap 패키지로 설치 — Ubuntu/Debian 계열에서 매우 간편
  • 애드온(Addon) 시스템으로 기능 확장 — 필요한 것만 켜고 끄는 구조
  • 기본적으로 단일 노드 최적화, 멀티노드도 지원
  • 대시보드, DNS, 스토리지 등을 애드온으로 간단히 활성화
  • CNCF 인증 쿠버네티스 — 표준 호환성 높음
  • 개발 환경, CI/CD 파이프라인에 적합

k3s vs MicroK8s 핵심 스펙 비교표

말로만 설명하면 헷갈리니까 표로 정리해봤습니다. 저도 처음에 이 두 개를 비교할 때 여기저기 찾아다녔는데, 한눈에 보이는 비교표가 없어서 직접 만들었어요.

항목 k3s MicroK8s
개발사 Rancher Labs (SUSE) Canonical
설치 방식 curl 스크립트 / 단일 바이너리 snap 패키지
최소 메모리 ~512MB ~540MB
기본 스토리지 백엔드 SQLite (소규모) / etcd (대규모) etcd
기본 컨테이너 런타임 containerd containerd
기본 Ingress Traefik 없음 (애드온으로 추가)
ARM 지원 ✅ 완벽 지원 ✅ 지원 (snap 필요)
멀티노드 클러스터 ✅ 용이 ✅ 지원 (설정 필요)
애드온 시스템 Helm Chart 기반 microk8s enable 명령어
주요 사용 환경 엣지, IoT, 프로덕션 경량화 개발 환경, Ubuntu 기반 서버
CNCF 인증
업스트림 쿠버네티스 버전 추적 약간 느림 빠름

💡 포인트: 메모리 차이는 사실 크지 않아요. 진짜 차이는 설치 방식운영 철학에 있습니다.


실전 설치 및 구성 — 직접 해봤습니다

k3s와 MicroK8s 터미널 설치 과정 단계별 화면

▲ k3s와 MicroK8s 실제 설치 과정 — 터미널에서 진행되는 단계별 설치 명령어 실행 화면

k3s 설치 — 진짜 이렇게 쉬울 수가

처음 k3s 설치했을 때 진짜 당황했어요. 너무 간단해서요. 명령어 하나면 됩니다.

서버(마스터 노드) 설치

# k3s 서버(마스터) 설치
curl -sfL https://get.k3s.io | sh -

# 설치 확인
sudo k3s kubectl get nodes

# 노드 토큰 확인 (워커 노드 추가할 때 필요)
sudo cat /var/lib/rancher/k3s/server/node-token

워커 노드 추가

# 워커 노드에서 실행 (K3S_URL과 K3S_TOKEN을 서버 정보로 교체)
curl -sfL https://get.k3s.io | K3S_URL=https://마스터IP:6443 K3S_TOKEN=서버토큰값 sh -

kubeconfig 설정 (로컬에서 kubectl로 접근하기)

# k3s의 kubeconfig 파일 복사
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config

# 외부에서 접근할 경우 server 주소 변경
sed -i 's/127.0.0.1/마스터서버IP/g' ~/.kube/config

# 확인
kubectl get nodes

⚠️ 주의: k3s.yaml 파일의 권한이 600이 아니면 kubectl이 경고를 뿜어요. chmod 600 ~/.kube/config 꼭 해주세요. 저도 이거 때문에 한참 헤맸습니다 ㅎㅎ

k3s 추가 설정 — Traefik 비활성화하고 싶을 때

# Traefik 없이 설치 (Nginx Ingress 등 직접 쓸 때)
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh -

# 특정 버전 지정 설치
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.28.5+k3s1" sh -

MicroK8s 설치 — Ubuntu라면 더 편해요

# snap으로 MicroK8s 설치 (Ubuntu/Debian)
sudo snap install microk8s --classic

# 특정 버전 설치
sudo snap install microk8s --classic --channel=1.28/stable

# 현재 사용자를 microk8s 그룹에 추가 (sudo 없이 사용하려면)
sudo usermod -a -G microk8s $USER
newgrp microk8s

# 상태 확인
microk8s status --wait-ready

# kubectl 사용
microk8s kubectl get nodes

MicroK8s 핵심 애드온 활성화

# DNS 활성화 (거의 필수)
microk8s enable dns

# 대시보드 활성화
microk8s enable dashboard

# 스토리지 활성화 (hostpath-storage)
microk8s enable hostpath-storage

# Ingress 활성화
microk8s enable ingress

# MetalLB (로드밸런서) 활성화
microk8s enable metallb:192.168.1.200-192.168.1.220

# 한번에 여러 애드온 활성화
microk8s enable dns dashboard storage ingress

MicroK8s kubectl 별칭 설정 (편의성)

# ~/.bashrc 또는 ~/.zshrc에 추가
alias kubectl='microk8s kubectl'
alias k='microk8s kubectl'

# kubeconfig 내보내기 (기존 kubectl과 통합)
microk8s config > ~/.kube/microk8s-config
export KUBECONFIG=~/.kube/config:~/.kube/microk8s-config

MicroK8s 멀티노드 클러스터 구성

# 마스터 노드에서 조인 토큰 생성
microk8s add-node

# 출력된 명령어를 워커 노드에서 실행 (예시)
microk8s join 마스터IP:25000/토큰값/해시값

# 클러스터 노드 확인
microk8s kubectl get nodes

⚠️ 실제 삽질 포인트와 트러블슈팅

이 섹션이 사실 제일 중요할 수 있어요. 공식 문서엔 잘 안 나오는 것들이거든요.

k3s 트러블슈팅

문제 1: 방화벽 때문에 워커 노드가 조인이 안 돼요

가장 많이 겪는 문제입니다. k3s는 특정 포트가 열려있어야 해요.

# 필요한 포트 오픈 (UFW 기준)
sudo ufw allow 6443/tcp   # API 서버
sudo ufw allow 10250/tcp  # kubelet
sudo ufw allow 8472/udp   # Flannel VXLAN
sudo ufw allow 51820/udp  # WireGuard (사용 시)

# 노드 상태 확인
sudo k3s kubectl get nodes -o wide

# k3s 서비스 로그 확인
sudo journalctl -u k3s -f

문제 2: SQLite에서 etcd로 마이그레이션

초기엔 SQLite로 쓰다가 노드가 3개 이상 되면 etcd나 외부 DB로 전환하는 게 좋아요. 저도 이걸 너무 늦게 알아서 나중에 클러스터 재구성을 했습니다...

# etcd 백엔드로 k3s 설치
curl -sfL https://get.k3s.io | sh -s - server \
  --cluster-init \
  --datastore-endpoint="etcd"

문제 3: 이미지 pull 속도가 너무 느려요 (사설 레지스트리 설정)

# /etc/rancher/k3s/registries.yaml 생성
mirrors:
  docker.io:
    endpoint:
      - "https://mirror.gcr.io"
  "내부레지스트리주소:5000":
    endpoint:
      - "http://내부레지스트리주소:5000"
configs:
  "내부레지스트리주소:5000":
    auth:
      username: admin
      password: password
    tls:
      insecure_skip_verify: true
# 설정 후 k3s 재시작
sudo systemctl restart k3s

MicroK8s 트러블슈팅

문제 1: snap 버전 충돌 — 커널이 너무 구버전이에요

Ubuntu 18.04에서 MicroK8s 1.27+ 올리려다가 커널 버전 때문에 막힌 적 있어요. 이건 솔직히 MicroK8s의 단점이에요.

# 현재 커널 확인
uname -r

# MicroK8s 상태에서 오류 확인
microk8s inspect

# 낮은 버전으로 다운그레이드
sudo snap refresh microk8s --channel=1.26/stable

문제 2: 대시보드 접근이 안 돼요

# 대시보드 토큰 확인
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token

# 프록시로 접근
microk8s dashboard-proxy

문제 3: snap 자동 업데이트로 갑자기 버전이 올라가버려요

이거 진짜 당황스러웠어요. 자동 업데이트 때문에 갑자기 쿠버네티스 버전이 바뀌어버리는 거예요. 프로덕션에서는 반드시 고정해야 합니다.

# snap 자동 업데이트 비활성화
sudo snap refresh --hold microk8s

# 또는 특정 날짜까지만 hold
sudo snap refresh --hold=forever microk8s

✅ 실제 운영 결과 및 성능 비교

k3s와 MicroK8s 리소스 사용량 성능 모니터링 대시보드 비교

▲ k3s와 MicroK8s 리소스 사용량 모니터링 대시보드 — CPU, 메모리 사용량 실시간 비교 차트

제가 동일한 스펙(4코어, 8GB RAM, Ubuntu 22.04)의 VM 두 대에 각각 설치해서 비교해봤습니다. 단순 참고용으로 봐주세요.

유휴 상태(Idle) 리소스 사용량

측정 항목 k3s MicroK8s
메모리 사용량 (서버 컴포넌트) ~480MB ~560MB
CPU 사용률 (유휴) 0.5% 이하 1~2%
부팅 후 준비까지 소요 시간 약 15~20초 약 30~45초
디스크 사용량 (설치 후) ~250MB ~500MB (snap 포함)

k3s가 전반적으로 더 가볍긴 한데, 차이가 드라마틱하진 않아요. 라즈베리파이 같은 정말 리소스가 빠듯한 환경에서는 차이가 느껴지지만, 일반 서버에서는 크게 신경 쓸 수준은 아닙니다.

Pod 배포 속도 테스트

# 간단한 nginx 배포 테스트
time kubectl create deployment nginx-test --image=nginx --replicas=5
kubectl rollout status deployment/nginx-test

결과적으로 두 환경 모두 비슷한 수준이었어요. 차이는 이미지 pull 시간에 더 좌우되더라고요.


어떤 걸 선택해야 할까요? — 상황별 가이드

이게 핵심이죠. "어느 게 더 좋아요?"라는 질문을 정말 많이 받는데, 솔직히 말씀드리면 상황에 따라 다릅니다. 진부한 답변 같지만 진짜 그래요.

k3s를 선택해야 하는 경우

  • ✅ 라즈베리파이, 임베디드 시스템 등 ARM 기반 엣지 환경
  • 멀티노드 클러스터를 간단하게 구성하고 싶을 때
  • ✅ Ubuntu 외 다른 Linux 배포판(CentOS, Fedora 등) 사용 시
  • 프로덕션 엣지 배포가 목적일 때
  • ✅ 인터넷 연결이 불안정한 환경 (오프라인 설치 용이)
  • ✅ CI/CD에서 빠른 클러스터 스핀업/다운이 필요할 때

MicroK8s를 선택해야 하는 경우

  • Ubuntu 기반 개발 환경에서 빠르게 쿠버네티스 셋업
  • ✅ 애드온 시스템으로 간편하게 기능 확장하고 싶을 때
  • ✅ Canonical/Ubuntu 생태계를 이미 사용 중일 때
  • ✅ 개발자가 로컬에서 쿠버네티스 환경이 필요할 때
  • ✅ 최신 쿠버네티스 버전을 빠르게 따라가고 싶을 때
  • ✅ GPU 워크로드 (CUDA 애드온 지원)

둘 다 아닌 경우도 있어요

혹시 이런 경험 있으신가요? 개발 환경에서 쿠버네티스가 필요한데 설치도 귀찮고 리소스도 아끼고 싶은... 그럼 kind(Kubernetes in Docker)minikube도 고려해보세요. 다음 글에서 로컬 개발 환경용 쿠버네티스 도구들을 비교해드릴 예정입니다.


자주 묻는 질문 (FAQ)

Q. k3s와 MicroK8s 중 어느 게 더 프로덕션에 적합한가요?

k3s가 엣지/프로덕션 경량화 환경에 더 많이 쓰입니다. 실제로 많은 기업이 엣지 컴퓨팅에 k3s를 사용하고 있어요. MicroK8s도 프로덕션에서 쓸 수 있지만 snap 자동 업데이트 이슈 등 관리 포인트가 있습니다.

Q. 라즈베리파이에는 뭘 써야 하나요?

k3s를 강력히 추천합니다. ARM 지원이 완벽하고, 메모리 사용량도 낮아서 라즈베리파이 4(4GB) 기준으로도 여유롭게 돌아갑니다.

Q. 기존 kubectl 명령어를 그대로 쓸 수 있나요?

둘 다 표준 쿠버네티스 API를 따르기 때문에 kubectl 명령어는 동일하게 사용 가능합니다. k3s는 kubeconfig 설정만 해주면 바로 쓸 수 있고, MicroK8s는 microk8s kubectl을 쓰거나 alias를 설정하면 됩니다.

Q. 풀 쿠버네티스에서 k3s/MicroK8s로 마이그레이션이 쉬운가요?

워크로드(Deployment, Service, ConfigMap 등) 자체는 YAML 그대로 쓸 수 있어요. 다만 스토리지 클래스나 네트워킹 설정은 환경에 따라 조정이 필요합니다. 저는 이 과정에서 PVC(Persistent Volume Claim, 영구 스토리지 요청) 관련 설정을 다시 잡느라 시간을 좀 썼어요.


🎉 마무리 — 그래서 저는 뭘 쓰냐고요?

k3s vs MicroK8s 사용 환경별 선택 가이드 의사결정 인포그래픽

▲ k3s vs MicroK8s 선택 가이드 인포그래픽 — 사용 환경별 최적 선택을 위한 의사결정 흐름도

솔직히 말씀드리면, 저는 지금 k3s를 메인으로 쓰고 있습니다. 홈랩에 라즈베리파이 3대 + 미니PC 2대로 구성한 클러스터를 k3s로 운영 중이에요. 이유는 간단해요 — 멀티노드 설정이 너무 쉽고, ARM 노드와 x86 노드를 혼용해도 문제없이 돌아가거든요.

MicroK8s는 팀 개발 환경 구성할 때 써봤는데, Ubuntu 서버에서 빠르게 쿠버네티스 환경 만들어줘야 할 때는 진짜 편했어요. microk8s enable dns dashboard ingress 한 줄이면 기본 환경이 뚝딱 완성되니까요.

결론적으로 이렇게 정리할 수 있어요:

  • 엣지/IoT/라즈베리파이/멀티 OS 환경 → k3s
  • Ubuntu 개발 환경/빠른 셋업/애드온 편의성 → MicroK8s

어떤 걸 선택하든 풀 쿠버네티스보다 훨씬 쉽게 시작할 수 있다는 건 확실합니다. 일단 하나 골라서 설치해보세요. 직접 써봐야 감이 오거든요. 저도 처음엔 둘 다 설치해보고 느낌을 비교해봤으니까요.

다음 글에서는 k3s 위에 ArgoCD(깃옵스 기반 배포 도구)Longhorn(분산 스토리지)을 올려서 실제 홈랩 프로덕션 환경을 구성하는 방법을 다뤄볼 예정입니다. 기대해주세요! 😄

궁금한 점이나 다른 경험 있으신 분들은 댓글로 남겨주세요. 저도 아직 배우는 중이라 여러분의 경험담이 큰 도움이 됩니다.