K3s와 MicroK8s

inuit·2026년 3월 14일

All about 쿠버네티스

목록 보기
24/26
post-thumbnail

최근 업데이트일 2025-01-10

K3s: K3s 공식 사이트

MicroK8s: Getting started

쿠버네티스 표준인 kubeadm대신 로컬 개발이나 엣지 디바이스(IoT) 환경에 최적화된 경량화 쿠버네티스 배포판인 K3sMicroK8s에 대해 알아보자.


K3s

SUSE Rancher에서 개발한 K3s는 이름에서 알 수 있듯 K8s에서 Memory Footprint를 절반으로 줄인 초경량 쿠버네티스 배포판이다.

주요 특징

  • 단일 바이너리: 쿠버네티스의 복잡한 구성 요소를 100MB 이하의 단일 바이너리 파일 하나로 압축하여 구동한다.
    • 실행에 필요한 모든 라이브러리를 하나의 실행 파일로 묶는 정적 컴파일을 지원하는 Go 언어로 작성되었다.
    • Linux의 busybox처럼, 실행할 때 주는 명령어에 따라 다르게 동작하도록 설계되어, 바이너리 하나 안에 kube-apiserver, kubelet, kube-proxy, containerd, runc 등의 코드가 모두 들어있다.
      • k3s server로 실행하면 Control-plane 컴포넌트들이 내부 프로세스 스레드로 뜬다.
      • k3s agent로 실행하면 Worker Node 컴포넌트들만 뜬다.
      • 즉, 각 컴포넌트를 별도의 프로세스로 띄우며 발생하는 오버헤드를 줄이고, 하나의 프로세스 안에서 메모리를 효율적으로 공유하게 만들었다.
  • SQLite: 무거운 etcd 대신, 기본적으로 SQLite를 사용하여 단일 노드에서 매우 가볍게 동작한다.
    • 멀티 노드 고가용성(HA) 구성 시에는 내장 etcd나 외부 DB 사용도 지원한다.
  • 기본 플러그인 내장: 설치 즉시 바로 사용할 수 있도록 Flannel(CNI), CoreDNS, Traefik(Ingress), Local Storage Provider 등이 기본으로 포함되어 있다.
  • 타겟 환경: 리소스가 극도로 제한된 Jetson과 같은 ARM 기반 엣지 디바이스나 IoT 기기에 가장 적합하다.

설치 및 삭제 명령어

  • Control-plane 설치: curl -sfL https://get.k3s.io | sh -
  • Worker Node 추가: curl -sfL https://get.k3s.io | K3S_URL=https://{myserver}:6443 K3S_TOKEN=MYNODETOKEN sh -
  • 삭제: /usr/local/bin/k3s-uninstall.sh

MicroK8s

Ubuntu의 제작사인 Canonical에서 제공하는 경량화된 쿠버네티스 배포판이다. 로컬 개발 환경, CI/CD, 그리고 워크스테이션 환경에 최적화되어 있다.

주요 특징

  • Snap 패키지 기반: Ubuntu 환경에서 가장 친숙한 snap 패키지 매니저를 통해 한 줄로 설치되고, 자동 업데이트 및 롤백 관리가 매우 쉽다.
    • Snap은 범용 패키지 관리 시스템으로 프로그램의 모든 라이브러리와 의존성을 하나의 패키지 안에 묶어서 의존성을 격리한다.
    • 설치된 앱은 호스트 OS와 분리된 샌드박스 환경에서 제한된 권한으로 실행되므로 시스템 보안을 해치지 않는다.
    • 기본적으로 백그라운드에서 자동으로 최신 버전을 확인하고 업데이트한다.
  • Zero-Ops 경험: kubeadm에 비해 설치가 빠르고 간편하며, 클러스터 관리에 들어가는 운영(Ops) 부담을 최소화한다.
    • 한 번에 런타임, API 서버, 데이터베이스(dqlite), 그리고 CNI까지 모두 이미 세팅된 상태로 통째로 배포되어, 의존성 패키지를 찾거나 인증서를 얽매일 필요 없이, 설치 즉시 완벽하게 동작하는 K8s 환경이 튀어나오기 때문에 압도적으로 빠르고 간편하다.
  • 기본 CNI: K3s가 Flannel을 쓰는 것과 달리, MicroK8s는 Calico를 기본 CNI로 채택하고 있다.
    • 최소 권장 사양: 20GB Disk, 4GB Memory
  • 가장 큰 장점은 복잡한 설정 없이 microk8s enable <addon-name> 명령어 하나로 수많은 기능을 켜고 끌 수 있다는 것이다.
    • 코어/네트워크: dns, ingress, metallb (Loadbalancer), multus
    • 모니터링/로깅: dashboard, metrics-server, prometheus, fluentd (ELK 스택)
    • 스토리지/데이터: storage, openebs
    • 서비스 메시 & 기타: istio, linkerd, gpu (CUDA 지원), kubeflow

설치 및 삭제 명령어

  • 설치: sudo snap install microk8s --classic
  • 삭제: sudo snap remove microk8s

Kubernetes 배포 도구 아키텍처 및 특성 비교 분석

배포 도구대상 환경아키텍처 및 주요 특징주요 이점제약 사항
kubeadm프로덕션 (표준 K8s)Kubernetes 공식 클러스터 프로비저닝 도구로 control-plane 및 worker node의 구성을 관리자가 세밀하게 제어하는 표준화된 방식 제공인프라 아키텍처의 유연성이 가장 높으며, 대규모 엔터프라이즈 클러스터 구축 및 확장에 최적화됨초기 구성의 복잡도가 높고, 호스트 OS 및 컨테이너 런타임에 대한 사전 종속성 해결이 요구됨
minikube / kind로컬 개발 및 테스트로컬 호스트 내의 가상 머신 또는 Docker 컨테이너 환경을 활용하여 격리된 단일 노드 클러스터를 구축함단일 호스트 환경에서 신속한 클러스터 프로비저닝 및 폐기가 용이하여, 애플리케이션 개발 주기를 단축함물리적 Multi Node 확장에 제약이 따르며, 프로덕션 수준의 운영 환경 배포에는 부적합함
K3sEdge / IoT / CI단일 바이너리 아키텍처 및 경량 데이터스토어를 채택하여 메모리 풋프린트를 최소화한 경량화 배포판리소스 오버헤드가 매우 낮아 ARM 아키텍처(Jetson 등)와 같은 엣지 디바이스 환경에서의 클러스터 구성에 최적화됨기본 데이터스토어가 표준 etcd가 아니므로, 수백 개 이상의 노드를 가진 대규모 클러스터 적용 시 아키텍처 재검토가 필요함
MicroK8s로컬 / 워크스테이션Snap 패키징 시스템을 활용하여 운영 개입을 최소화한 배포판으로, 확장형 애드온 생태계를 제공함Ubuntu 환경과의 높은 호환성을 보장하며, 단일 명령어로 다양한 클라우드 네이티브 애드온(Istio, GPU 등)의 즉각적인 활성화가 가능함Snap 패키지 관리자에 대한 강한 의존성이 존재하여, 타 리눅스 배포판(CentOS 등) 적용 시 호환성 제약 및 설치의 번거로움이 발생할 수 있음

결론적으로, 이전 포스팅에서 다루었던 Jetson(NVIDIA Orin Nano)과 같은 ARM 기반의 엣지 디바이스에 배포한다면 극단적으로 가벼운 K3s가 유리하며, 넉넉한 리소스의 Ubuntu 워크스테이션에서 다양한 애드온을 빠르게 테스트하고 싶다면 MicroK8s가 좋은 선택이 될 것이다.

profile
It’s always white night here.

0개의 댓글