0. 개요 및 환경 설정¶
개요¶
이번 챕터는 김상영님이 공유해주신 쿠버네티스 딥다이브를 따라가며 학습한 내용을 정리한 것입니다.
우선 다음 챕터인 K8s hardway 실습을 위한 가상 VM (우분투 호스트) 환경 설정을 진행해보겠습니다.
환경 설정¶
1단계: 필수 패키지 및 플러그인 설치¶
가상화를 위한 도구 설치
# 패키지 목록 업데이트
sudo apt update
# KVM, Libvirt, QEMU 등 필수 도구 설치
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
sudo adduser $USER libvirt
sudo adduser $USER kvm
newgrp libvirt
newgrp kvm
virsh list --all
Libvirt와 가상화 관련 라이브러리, 그리고 Vagrant용 플러그인을 설치합니다. 터미널에 아래 명령어를 한 줄씩 실행하세요.
# 1. 패키지 목록 업데이트 및 필수 빌드 도구 설치
sudo apt update
sudo apt install -y qemu-utils libvirt-dev ruby-libvirt build-essential
# 2. vagrant-libvirt 플러그인 설치
sudo apt install vagrant
vagrant plugin install vagrant-libvirt
2단계: 작업 디렉토리 생성 및 Vagrantfile 구성¶
프로젝트를 진행할 폴더를 만들고, 가상머신의 사양과 네트워크를 정의한 설정을 작성합니다.
# 1. 가상머신용 디렉토리 생성 및 이동
mkdir -p ~/vagrant-k8s-hardway
cd ~/vagrant-k8s-hardway
# 2. Vagrantfile 파일 생성 및 편집 (nano 또는 주로 쓰시는 편집기 사용)
vim Vagrantfile
BOX_IMAGE = "generic/ubuntu1804"
HOST_NAME = "ubuntu1804"
GO_VERSION = "1.17.6"
# privileged: true (root)
$pre_install = <<-SCRIPT
export DEBIAN_FRONTEND=noninteractive
echo ">>>> pre-install <<<<<<"
apt-get -qq update
apt-get -qq -y install gcc make pkg-config libseccomp-dev jq
## yq CLI for yaml (to json)
YQ_VERSION=v4.18.1
YQ_BINARY=yq_linux_amd64
wget https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${YQ_BINARY} -O /usr/bin/yq
chmod +x /usr/bin/yq
echo ">>>> install go <<<<<<"
curl --stderr /dev/null -OL https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz
tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz
echo 'PATH=$PATH:/usr/local/go/bin' | tee -a /etc/profile
echo ">>>>> install docker <<<<<<"
apt-get -qq -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl --stderr /dev/null -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get -qq update
apt-get -qq -y install docker-ce docker-ce-cli containerd.io
SCRIPT
Vagrant.configure("2") do |config|
config.vm.define HOST_NAME do |subconfig|
subconfig.vm.box = BOX_IMAGE
subconfig.vm.hostname = HOST_NAME
subconfig.vm.network :private_network, ip: "192.168.100.2"
subconfig.vm.provider "virtualbox" do |v|
v.memory = 1536
v.cpus = 2
end
subconfig.vm.provider :libvirt do |lv|
lv.memory = 1536
lv.cpus = 2
lv.cpu_mode = "host-passthrough"
lv.cpu_model = ""
lv.nested = true
end
subconfig.vm.provision "shell", privileged: true, env: {"GO_VERSION"=>GO_VERSION}, inline: $pre_install
end
end
3단계: 가상머신 생성 및 구동¶
Vagrantfile이 있는 디렉토리(~/vagrant-k8s-hardway)에서 가상머신을 실행합니다.
4단계: 접속 및 상태 확인¶
가상머신이 정상적으로 켜졌는지 확인하고 내부로 접속해 봅니다.
-
구동 상태 확인:
-
특정 VM에 SSH 접속