R&D/OS

Jetson Xavier 에서 minikube로 웹 서비스하기 (1/3)

sunshout1 2026. 3. 14. 09:03
반응형

작은 보드 컴퓨터 위에 작은 클라우드를 올리는 일은 꽤 묘한 경험이다. 책상 위에 놓인 손바닥 크기의 장비가 Kubernetes를 돌리고 웹 서비스를 내보낸다. 거대한 데이터센터의 축소판이 바로 눈앞에 있는 셈이다. 이번에는 NVIDIA Jetson Xavier에서 Minikube를 사용해 웹 서비스를 띄우는 과정을 정리해 본다. Jetson은 ARM64 아키텍처라 일반 x86 PC와 몇 가지 차이가 있지만 구조는 거의 동일하다.

Jetson Xavier에서 Kubernetes를 돌리는 이유

Jetson 계열 장비는 원래 AI Edge 컴퓨팅을 위해 만들어졌다. 하지만 GPU가 있는 작은 서버이기도 하다. 그래서 다음 같은 실험이 가능하다.

  • Edge AI 서비스
  • Edge Kubernetes
  • 로컬 AI inference 서비스
  • IoT Gateway

즉 Jetson 하나가 Edge Cloud Node가 되는 셈이다.

1. 환경 준비

Jetson Xavier는 보통 Ubuntu 기반 JetPack OS를 사용한다.
먼저 패키지를 업데이트한다.

sudo apt update
sudo apt upgrade -y
 
 

필요한 도구 설치

sudo apt install -y curl apt-transport-https
 

2. Docker 설치

Minikube의 가장 간단한 드라이버는 Docker다.

sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
 

현재 사용자에게 docker 권한을 준다.

sudo usermod -aG docker $USER
 

로그아웃 후 다시 로그인해야 적용된다.

3. kubectl 설치 (ARM64)

curl -LO https://dl.k8s.io/release/stable.txt
VERSION=$(cat stable.txt)

curl -LO https://dl.k8s.io/release/$VERSION/bin/linux/arm64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
 
 

확인

(base) sunshout@xavier:~/k8s$ kubectl version --client
Client Version: v1.35.2
Kustomize Version: v5.7.1
 

4. Minikube 설치 (ARM64)

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
sudo install minikube-linux-arm64 /usr/local/bin/minikube
 
 

확인

(base) sunshout@xavier:~/k8s$ minikube version
minikube version: v1.38.1
commit: c93a4cb9311efc66b90d33ea03f75f2c4120e9b0
 

5. Minikube 클러스터 시작

Jetson Xavier는 CPU와 메모리가 제한적이기 때문에 적당한 설정이 필요하다.

예시:

minikube start \
  --driver=docker \
  --cpus=4 \
  --memory=4096
 
 

Jetson Xavier AGX라면 6 CPU / 8GB도 충분히 가능하다.

클러스터 상태 확인

(base) sunshout@xavier:~/k8s$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
 

노드 확인

(base) sunshout@xavier:~/k8s$ kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   21m   v1.35.1
 

 

Jetson 같은 장비에서 Kubernetes를 쓸 때 가장 깔끔한 방법은 Minikube를 하나의 시스템 서비스처럼 다루는 것이다. 부팅하면 자동으로 클러스터가 올라오고, systemctl로 시작/정지할 수 있다. 작은 Edge 서버를 운영하는 느낌이 난다.

systemd 서비스 파일 생성

서비스 파일을 만든다.

sudo vi /etc/systemd/system/minikube.service
 
 
내용은 다음과 같이 작성한다.
[Unit]
Description=Minikube Kubernetes Cluster
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
User=sunshout
Environment=HOME=/home/sunshout
ExecStart=/usr/local/bin/minikube start --driver=docker --cpus=6 --memory=6144
ExecStop=/usr/local/bin/minikube stop
TimeoutStartSec=900

[Install]
WantedBy=multi-user.target
 

설명:

  • Type=oneshot
    Minikube는 데몬이 아니라 실행 후 종료되는 방식이라 이 옵션을 사용한다.
  • RemainAfterExit=yes
    start 명령이 끝나도 서비스가 활성 상태로 유지된다.
  • User
    Minikube를 실행할 Linux 사용자
  • ExecStart
    클러스터 시작
  • ExecStop
    클러스터 종료

systemd reload

새 서비스 등록

sudo systemctl daemon-reload
 
 

서비스 실행

Minikube 시작

sudo systemctl start minikube
 

상태 확인

systemctl status minikube


(base) sunshout@xavier:~/k8s$ systemctl status minikube
● minikube.service - Minikube Kubernetes Cluster
     Loaded: loaded (/etc/systemd/system/minikube.service; disabled; vendor preset: enabled)
     Active: active (exited) since Sat 2026-03-14 09:12:58 KST; 10s ago
    Process: 1971019 ExecStart=/usr/local/bin/minikube start --driver=docker --cpus=6 --memory=6144 (code=exited, status=0/SUCCESS)
   Main PID: 1971019 (code=exited, status=0/SUCCESS)

 3월 14 09:11:14 xavier minikube[1971019]: ! Starting v1.39.0, minikube will default to "containerd" container runtime. See #21973 for more info.
 3월 14 09:11:14 xavier minikube[1971019]: * Using Docker driver with root privileges
 3월 14 09:11:14 xavier minikube[1971019]: * Starting "minikube" primary control-plane node in "minikube" cluster
 3월 14 09:11:14 xavier minikube[1971019]: * Pulling base image v0.0.50 ...
 3월 14 09:12:52 xavier minikube[1971019]: * Configuring bridge CNI (Container Networking Interface) ...
 3월 14 09:12:53 xavier minikube[1971019]: * Verifying Kubernetes components...
 3월 14 09:12:53 xavier minikube[1971019]:   - Using image gcr.io/k8s-minikube/storage-provisioner:v5
 3월 14 09:12:57 xavier minikube[1971019]: * Enabled addons: default-storageclass, storage-provisioner
 3월 14 09:12:58 xavier minikube[1971019]: * Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
 3월 14 09:12:58 xavier systemd[1]: Finished Minikube Kubernetes Cluster.
 

부팅 시 자동 시작

sudo systemctl enable minikube
 
 
 

이제 Jetson이 부팅하면 자동으로 Kubernetes가 올라온다.

 
728x90
반응형