본문 바로가기
  • Praha
Study/kubernetes

vagrant + virtualbox 를 이용하여 가상 서버 구축하기

by Richard.J.78 2023. 8. 28.

Vagrant란 무엇?

Vagrant는 개발 환경 구축을 위한 도구로 정의 할 수 있습니다.

포터블 가상화 소프트웨어 개발 환경의 생성 및 유지보수를 위한 오픈 소스 소프트웨어 제품의 하나이며, 루비 언어로 작성되어 있지만 생태계는 몇 가지 언어로 개발을 지원합니다.

 

Vagrant는 업계 표준 기술을 기반으로 구축되고 일관된 단일 워크플로로 제어되는 구성이 쉽고 재현 가능하며 이식 가능한 작업 환경을 제공하여 개인 및 팀의 생산성과 유연성을 극대화하는 데 도움을 줍니다.

 

Vagrant는 VirtualBox, VMware, AWS또는 기타 공급자 위에 프로비저닝 되며, 셸 스크립트, Chef 또는 Puppet와 같은 업계 표준 푸로비저닝 도구를 사용하여 가상 머신에 소프트웨어를 자동으로 설치하고 구성할 수 있습니다.

 

Vagrant 설치

다운로드 URL : https://developer.hashicorp.com/vagrant/downloads

 

Install | Vagrant | HashiCorp Developer

Explore Vagrant product documentation, tutorials, and examples.

developer.hashicorp.com

지원 OS: macOS / Windows / Linux

설치마법사를 이용하여 간단하게 설치

 

Vagrant작업폴더 생성 및 Vagrantfile생성

 


$mkdir vagrantwork
$cd vagrantwork
$vagrant init
  • 적당한 위치에 작업폴더를 생성합니다.
  • 해당 폴더로 이동합니다.
  • vagrant init 명령어를 이용하여  Vagrantfile을 생성합니다.

Vagrantfile 스크립트 수정

 

Vagrant Cloud by HashiCorp

Vagrant Cloud by HashiCorp

app.vagrantup.com

  • 설치 os: ubuntu 22.04(jammy64)
  • kuberbetes 클러스터 구성을 위해 가상머신 3대로 구성 master / node01 / node03

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant_API_Version="2"
Vagrant.configure(Vagrant_API_Version) do |config|
  #Master
  config.vm.define:"k8s-master" do |cfg|
    cfg.vm.box = "ubuntu/jammy64"
    cfg.vm.provider:virtualbox do |vb|
        vb.name="k8s-master"
        vb.cpus = 2
        vb.memory = 2048
    end
    cfg.vm.hostname = "k8s-master"
    cfg.vm.synced_folder ".", "/vagrant/ubuntu"
    cfg.vm.network "private_network", ip: "192.168.56.10"
    cfg.vm.network "forwarded_port", guest: 22, host: 21022, auto_correct: false, id: "ssh"
    cfg.vm.network "forwarded_port", guest: 80, host: 10080
    cfg.vm.network "forwarded_port", guest: 8000, host: 18000
    cfg.vm.network "forwarded_port", guest: 8001, host: 18001
    cfg.vm.network "forwarded_port", guest: 8080, host: 18080
    cfg.vm.provision "shell", path: "sshd_config.sh"
  end

  #Node01
  config.vm.define:"k8s-node01" do |cfg|
    cfg.vm.box = "ubuntu/jammy64"
    cfg.vm.provider:virtualbox do |vb|
        vb.name = "k8s-kode01"
        vb.cpus = 2
        vb.memory = 2048
    end
    cfg.vm.hostname = "k8s-node01"
    cfg.vm.network "private_network", ip: "192.168.56.11"
    cfg.vm.network "forwarded_port", guest: 22, host: 24022, auto_correct: false, id: "ssh"
    cfg.vm.network "forwarded_port", guest: 80, host: 40080
    cfg.vm.network "forwarded_port", guest: 8080, host: 48080
    cfg.vm.provision "shell", path: "sshd_config.sh"
  end

  #Node02
  config.vm.define:"k8s-node02" do |cfg|
    cfg.vm.box = "ubuntu/jammy64"
    cfg.vm.provider:virtualbox do |vb|
        vb.name = "k8s-node02"
        vb.cpus = 2
        vb.memory = 2048
    end
    cfg.vm.hostname = "k8s-node02"
    cfg.vm.network "private_network", ip: "192.168.56.12"
    cfg.vm.network "forwarded_port", guest: 22, host: 23022, auto_correct: false, id: "ssh"
    cfg.vm.network "forwarded_port", guest: 80, host: 30080
    cfg.vm.network "forwarded_port", guest: 8080, host: 38080
    cfg.vm.provision "shell", path: "sshd_config.sh"
  end
end

sshd_config.sh 생성


#! /usr/bin/env bash

now=$(date +"%m_%d_%Y")
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_$now.backup
sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd

 

Vagrant 실행

  • vagrant up 명령어를 실행하면 가상머신이 구동됩니다.

$vagrant up
Bringing machine 'k8s-master' up with 'virtualbox' provider...
Bringing machine 'k8s-node01' up with 'virtualbox' provider...
Bringing machine 'k8s-node02' up with 'virtualbox' provider...
==> k8s-master: Checking if box 'ubuntu/jammy64' version '20230815.0.0' is up to date...
==> k8s-master: A newer version of the box 'ubuntu/jammy64' for provider 'virtualbox' is
==> k8s-master: available! You currently have version '20230815.0.0'. The latest is version
==> k8s-master: '20230823.0.0'. Run `vagrant box update` to update.
==> k8s-master: Clearing any previously set forwarded ports...
==> k8s-master: Clearing any previously set network interfaces...
==> k8s-master: Preparing network interfaces based on configuration...
    k8s-master: Adapter 1: nat
    k8s-master: Adapter 2: hostonly
==> k8s-master: Forwarding ports...
    k8s-master: 22 (guest) => 21022 (host) (adapter 1)
    k8s-master: 80 (guest) => 10080 (host) (adapter 1)
    k8s-master: 8000 (guest) => 18000 (host) (adapter 1)
    k8s-master: 8001 (guest) => 18001 (host) (adapter 1)
    k8s-master: 8080 (guest) => 18080 (host) (adapter 1)
==> k8s-master: Running 'pre-boot' VM customizations...
==> k8s-master: Booting VM...
==> k8s-master: Waiting for machine to boot. This may take a few minutes...
    k8s-master: SSH address: 127.0.0.1:21022
    k8s-master: SSH username: vagrant
    k8s-master: SSH auth method: private key
    k8s-master: Warning: Connection reset. Retrying...
    k8s-master: Warning: Connection aborted. Retrying...
    k8s-master: Warning: Connection aborted. Retrying...
==> k8s-master: Machine booted and ready!
==> k8s-master: Checking for guest additions in VM...
    k8s-master: The guest additions on this VM do not match the installed version of
    k8s-master: VirtualBox! In most cases this is fine, but in rare cases it can
    k8s-master: prevent things such as shared folders from working properly. If you see
    k8s-master: shared folder errors, please make sure the guest additions within the
    k8s-master: virtual machine match the version of VirtualBox you have installed on
    k8s-master: your host and reload your VM.
    k8s-master:
    k8s-master: Guest Additions Version: 6.0.0 r127566
    k8s-master: VirtualBox Version: 7.0
==> k8s-master: Setting hostname...
==> k8s-master: Configuring and enabling network interfaces...
==> k8s-master: Mounting shared folders...
    k8s-master: /vagrant/ubuntu => C:/Users/NHN/vagrant/ubuntu
==> k8s-master: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> k8s-master: flag to force provisioning. Provisioners marked to run always will still run.
==> k8s-node01: Checking if box 'ubuntu/jammy64' version '20230815.0.0' is up to date...
k8s-node01 / k8s-node02 올라옵니다. . .

 

아래와 같이 가상머신 3대가 실행됩니다.

 

지금까지 vagrant virtualbox를 이용하여 로컬 PC에 가상머신 3대를 띄워 우분투 서버를 설치해보았습니다.

다음시간에는 kubernetes 설치를 해보도록 하겠습니다.

'Study > kubernetes' 카테고리의 다른 글

ubuntu docker, docker-compose 설치  (0) 2023.09.20

댓글