01. 사전 준비
호스트 패키지 확인 및 설치
# 필수 패키지 확인
dpkg -l | grep -E "virt-install|qemu-kvm|libvirt-daemon|genisoimage|cloud-image-utils|sshpass"
# 설치 (없는 것만)
sudo apt-get install -y \
qemu-kvm \
libvirt-daemon-system \
libvirt-clients \
virt-install \
genisoimage \
cloud-image-utils \
sshpass \
python3-pip \
python3-venv
# libvirt 그룹 확인 (현재 사용자가 포함되어 있어야 함)
groups $USER | grep libvirt
# 없으면: sudo usermod -aG libvirt $USER && newgrp libvirt
SSH 키 준비
# 랩 전용 SSH 키 생성 (기존 키와 분리 권장)
ssh-keygen -t ed25519 -f ~/.ssh/k8s-lab -N "" -C "k8s-lab"
# 생성 확인
ls -la ~/.ssh/k8s-lab*
# ~/.ssh/k8s-lab ← private key
# ~/.ssh/k8s-lab.pub ← public key (cloud-init에 삽입됨)
Ubuntu 22.04 Cloud Image 다운로드
# 저장 위치: OS SSD에 여유 충분 (367GB available)
CLOUD_IMAGE_DIR="/var/lib/libvirt/images"
IMAGE_NAME="ubuntu-22.04-server-cloudimg-amd64.img"
IMAGE_URL="https://cloud-images.ubuntu.com/jammy/current/${IMAGE_NAME}"
sudo wget -O "${CLOUD_IMAGE_DIR}/${IMAGE_NAME}" "${IMAGE_URL}"
# 무결성 확인
sudo qemu-img info "${CLOUD_IMAGE_DIR}/${IMAGE_NAME}"
Python 가상환경 + kubespray 의존성 준비
cd /home/jinsoo/Documents/k8s-etcd-lab
# kubespray clone (03-setup-kubespray.sh에서 자동 처리)
git clone https://github.com/kubernetes-sigs/kubespray.git /tmp/kubespray-src
# Python venv 생성
python3 -m venv .venv
source .venv/bin/activate
# kubespray 의존성 설치
pip install -r /tmp/kubespray-src/requirements.txt
# ansible 버전 확인
ansible --version
리소스 요건 확인
| 항목 |
필요 |
현재 호스트 |
| vCPU |
12개 (4×3) |
24스레드 ✅ |
| RAM |
24GB (8×3) |
40GB ✅ |
| 디스크 |
120GB (40×3) |
SSD 367GB 여유 ✅ |
| 네트워크 |
NAT 브릿지 1개 |
libvirt 사용 ✅ |
사전 확인 체크리스트
# KVM 사용 가능 여부
kvm-ok || sudo apt-get install cpu-checker
# libvirtd 실행 상태
sudo systemctl status libvirtd
# 기존 네트워크 확인 (libvirt default network)
virsh net-list --all
# 기존 VM 목록 확인
virsh list --all