Kubernetes The Hard Way 실습을 위한 가상 머신(VM) 환경 구축 과정을 정리
- 로컬(실습은 MAC에서 진행)에서 Vagrant로 쉽게 띄우고 설치해볼 수 있다.
- 이 가이드는 VirtualBox와 Vagrant를 이용해 로컬 PC에 4대의 리눅스(Debian 12) 서버를 띄우는 과정이다.
가장 먼저 가장 기반이 되는 서버부터 다져야 한다.
VirtualBox 위에서 Vagrant를 돌려 가상 머신 4대를 띄운다.
총 4대의 VM이 생성된다. OS는 가볍고 안정적인 Debian 12를 사용한다.
| 이름 (Hostname) | 역할 | CPU | RAM | Private IP (Host-Only) | 비고 |
|---|---|---|---|---|---|
| jumpbox | 관리용 호스트 | 2 vCPU | 1.5 GB | 192.168.10.10 | 밖에서 여기로 접속함 |
| server | Control Plane | 2 vCPU | 2.0 GB | 192.168.10.100 | API 서버, Etcd 등 |
| node-0 | Worker Node | 2 vCPU | 2.0 GB | 192.168.10.101 | 실제 파드 뜨는 곳 |
| node-1 | Worker Node | 2 vCPU | 2.0 GB | 192.168.10.102 | 실제 파드 뜨는 곳 |
Network Note:
NIC1 (NAT):10.0.2.15- 인터넷 통신용 (패키지 설치 등)NIC2 (Host-Only):192.168.10.x- VM끼리 통신 & 호스트(내 PC)에서 접속용
가상화 툴(VirtualBox)과 프로비저닝 툴(Vagrant)을 설치한다.
터미널 열고 한 방에 설치.
# VirtualBox 설치
brew install --cask virtualbox
# 버전 확인 (7.2.4 등 최신 버전인지 체크)
VBoxManage --version
실행 결과
7.2.4r170995
# Vagrant 설치
brew install --cask vagrant
# 버전 확인
vagrant version
실행 결과
Installed Version: 2.4.9
Latest Version: 2.4.9
You're running an up-to-date version of Vagrant!


이제 어떤 서버를 어떻게 만들지 정의한 코드(Vagrantfile)와 초기 설정 스크립트(init_cfg.sh)를 작성한다.
mkdir k8s-hardway
cd k8s-hardway
미리 준비된 파일을 받아온다.
# Vagrantfile (VM 정의서) 다운로드
curl -O https://raw.githubusercontent.com/gasida/vagrant-lab/refs/heads/main/k8s-hardway/Vagrantfile
# init_cfg.sh (초기 설정 스크립트) 다운로드
curl -O https://raw.githubusercontent.com/gasida/vagrant-lab/refs/heads/main/k8s-hardway/init_cfg.sh
상세 파일 내용 핵심만 확인한다.
Vagrantfile 핵심 내용bento/debian-12 사용.jumpbox, server, node-0, node-1 4대를 정의.init_cfg.sh를 실행해서 초기 셋팅.init_cfg.sh 핵심 내용 (매우 중요)이 스크립트가 실행되어야 쿠버네티스를 깔 준비가 끝난다.
swapoff -a)vim, git, jq 등 필수 도구 설치.root:qwe123으로 설정. (편의상)PasswordAuthentication yes)./etc/hosts에 4대 서버 IP 다 등록해줌. (DNS 없어도 이름으로 통신 가능하게)준비 끝. 이제 발사 버튼을 누른다.
# VM 생성 및 실행 (시간 좀 걸림, 커피 한 잔 타임)
vagrant up
실행 결과
Bringing machine 'jumpbox' up with 'virtualbox' provider...
Bringing machine 'server' up with 'virtualbox' provider...
Bringing machine 'node-0' up with 'virtualbox' provider...
Bringing machine 'node-1' up with 'virtualbox' provider...
==> jumpbox: Box 'bento/debian-12' could not be found. Attempting to find and install...
jumpbox: Box Provider: virtualbox
jumpbox: Box Version: 202510.26.0
==> jumpbox: Loading metadata for box 'bento/debian-12'
...
설치가 끝나면 상태를 확인한다.
# 잘 떴는지 확인
vagrant status
# 실행결과
Current machine states:
jumpbox running (virtualbox)
server running (virtualbox)
node-0 running (virtualbox)
node-1 running (virtualbox)
가장 메인이 되는 jumpbox에 접속해서 환경이 제대로 잡혔는지 확인한다.
# 점프박스로 SSH 접속
vagrant ssh jumpbox
root@jumpbox:~# 바로 root로 들어오도록 설정해놓음
접속된 터미널(점프박스 내부)에서 확인:
# 1. 내가 누구인지, 어디인지
whoami # -> root (init_cfg에서 sudo su - 해뒀음)
pwd # -> /root
# 2. OS 버전 확인 (Debian 12 Bookworm 맞는지)
cat /etc/os-release
# 3. 보안 모듈(AppArmor) 꺼졌는지 확인 (inactive 떠야 함)
systemctl is-active apparmor
# 4. 호스트 파일 확인 (다른 노드들 IP 들어있는지)
cat /etc/hosts