Skip to content

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)에서 가상머신을 실행합니다.

vagrant up --provider=libvirt

4단계: 접속 및 상태 확인

가상머신이 정상적으로 켜졌는지 확인하고 내부로 접속해 봅니다.

  • 구동 상태 확인:

    vagrant status
    
  • 특정 VM에 SSH 접속

    vagrant ssh ubuntu1804