[K8S Deploy]Kubernetes The Hard Way : 01 - Pre requisites

진웅·2026년 1월 10일

k8s deploy

목록 보기
4/20

Kubernetes The Hard Way 실습을 위한 가상 머신(VM) 환경 구축 과정을 정리

  • 로컬(실습은 MAC에서 진행)에서 Vagrant로 쉽게 띄우고 설치해볼 수 있다.
  • 이 가이드는 VirtualBoxVagrant를 이용해 로컬 PC에 4대의 리눅스(Debian 12) 서버를 띄우는 과정이다.

[KTHW] 00. 실습 랩(Lab) 구축 - Vagrant로 내 방에 데이터센터 만들기

가장 먼저 가장 기반이 되는 서버부터 다져야 한다.
VirtualBox 위에서 Vagrant를 돌려 가상 머신 4대를 띄운다.

1. 만들게 될 서버 스펙 (Target Architecture)

총 4대의 VM이 생성된다. OS는 가볍고 안정적인 Debian 12를 사용한다.

이름 (Hostname)역할CPURAMPrivate IP (Host-Only)비고
jumpbox관리용 호스트2 vCPU1.5 GB192.168.10.10밖에서 여기로 접속함
serverControl Plane2 vCPU2.0 GB192.168.10.100API 서버, Etcd 등
node-0Worker Node2 vCPU2.0 GB192.168.10.101실제 파드 뜨는 곳
node-1Worker Node2 vCPU2.0 GB192.168.10.102실제 파드 뜨는 곳

Network Note:

  • NIC1 (NAT): 10.0.2.15 - 인터넷 통신용 (패키지 설치 등)
  • NIC2 (Host-Only): 192.168.10.x - VM끼리 통신 & 호스트(내 PC)에서 접속용

2. 도구 설치 (Prerequisites)

가상화 툴(VirtualBox)과 프로비저닝 툴(Vagrant)을 설치한다.

macOS 사용자 (Homebrew)

터미널 열고 한 방에 설치.

# 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!

Windows 사용자


3. 구성 파일 준비 (IaC)

이제 어떤 서버를 어떻게 만들지 정의한 코드(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

구성 파일 뜯어보기 (Review)

상세 파일 내용 핵심만 확인한다.

1) Vagrantfile 핵심 내용

  • Box Image: bento/debian-12 사용.
  • Loop: jumpbox, server, node-0, node-1 4대를 정의.
  • Provisioning: VM이 뜨자마자 init_cfg.sh를 실행해서 초기 셋팅.

2) init_cfg.sh 핵심 내용 (매우 중요)

이 스크립트가 실행되어야 쿠버네티스를 깔 준비가 끝난다.

  1. Swap Off: 쿠버네티스는 스왑 메모리를 미사용. (swapoff -a)
  2. AppArmor Disable: 보안 모듈 끄기. (실습 중 권한 문제 방지)
  3. Packages: vim, git, jq 등 필수 도구 설치.
  4. Root PW: root:qwe123으로 설정. (편의상)
  5. SSH Config: 비밀번호 접속 허용 (PasswordAuthentication yes).
  6. Hosts File: /etc/hosts에 4대 서버 IP 다 등록해줌. (DNS 없어도 이름으로 통신 가능하게)

4. 가상머신 배포 (Deployment)

준비 끝. 이제 발사 버튼을 누른다.

# 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)

5. 접속 및 검증 (Verification)

가장 메인이 되는 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
profile
bytebliss

0개의 댓글