(!) mac OS 기준으로 작성합니다.
베이그런트(vagrant)는 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요할 때 시스템을 사용할 수 있는 상태로 만들어준다. 이를 프로비저닝(provisioning)이라고 하는데, 프로비저닝을 하면 필요할 때 환경을 매우 쉽고 간단하게 구현할 수 있다. 베이그런트는 독립적으로 사용되는 도구가 아니며, 가상 머신을 생성하거나 조작하는 기능을 직접 제공하지는 않고 프로바이더라는 개념이 있어서 가상머신을 관리하는 도구(버추얼박스, 도커 등)와 조합해서 사용한다.
버추얼박스(virtualbox)는 이노테크(InnoTek)에서 개발한 가상화 소프트웨어로 오라클에서 배포한다. 버추얼박스는 현존하는 대부분의 운영 체제를 게스트 운영 체제로 사용할 수 있으며, 확장팩을 제외하면 아무런 제한 없이 소프트웨어의 모든 기능을 무료로 이용할 수 있다.
베이그런트와 버추얼박스 설치하기
$ brew install --cask virtualbox vagrant vagrant-manager
(vagrant와 virtualbox는 공식홈페이지에서 다운로드하여 설치도 가능하다. 본인은 brew로 설치)
베이그런트의 기본명령어
명령어 | 설명 |
vagrant init | 프로비저닝을 위한 기초 파일을 생성 |
vagrant box list | 현재 시스템에 설치된 베이그런트 박스 목록 확인 |
vagrabt box add | 현재 시스템에 새로운 박스를 설치 |
vagrant up | Vagrantfile을 읽어 들여 프로비저닝을 진행 |
vagrant status | 베이그런트에서 실행된 가상 머신의 상태를 확인 |
vagrant halt | 베이그런트에서 다루는 가상 머신을 종료 |
vagrant destroy -f : 강제종료 |
베이그런트에서 관리하는 가상 머신을 삭제 |
vagrant reload | 베이그런트에서 관리하는 가상 머신을 재실행 (Vagrantfile의 내용을 반영) |
vagrant ssh | 베이그런트에서 관리하는 가상 머신에 ssh로 접속 |
vagrant provision | 베이그런트에서 관리하는 가상 머신에 변경된 설정을 적용 |
vagrant package | 베이그런트의 가상 머신을 박스 파일로 패키징 |
vagrant suspend | 베이그런트의 가상 머신을 중지 |
vagrant resume | 베이그런트의 가상 머신을 재개 |
vagrant global-status | 베이그런트에서 실행된 모든 가상 머신들의 상태를 확인 |
베이그런트 실행
= vagrant 폴더 지정 및 VagrantFile 생성하기
# vagrant 폴더 생성할 경로로 이동 (본인은 /project)
$ cd project
# VagrantFile 생성할 폴더 생성
$ mkdir vagrant
# VagrantFile 초기화, 생성
$ vagrant init
# ......
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
VagrantFile에 들어가보면 [config.vm.box = "base"] 라는내용이 작성되어있는데, 이곳에 설치할 운영 체제 이미지를 넣어주면 된다.
이미지 검색은 https://app.vagrantup.com/boxes/search 에서 가능하다. 참고 서적에서 제공해주는 이미지를 적용해보자.
= 사용할 이미지적용
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "sysnet4admin/CentOS-k8s"
# .....
(!) 이미지를 생성하는 방법은 공식문서를 참고하자. => https://www.vagrantup.com/docs/boxes/base
$ vagrant up
# default: Mounting shared folders...
# 아래에 나오는 에러는 Virtualbox의 게스트 에디션이 설치 되지 않아서 발생하는 오류라고 한다. 참고하자
=> virtualBox에서 잘 떴는지 확인해보자. 그리고 위의 명령어를 참고하여 삭제, 종료, 시작, 접속 등 테스트해보자
= VagrantFile 설정 알아보기
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
N = 4 # 워커노드 수
Ver = '1.18.4' # k8s version to install
# Master 노드
config.vm.define "master-k8s-ys-config" do |cfg|
cfg.vm.box = "sysnet4admin/CentOS-k8s"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "master-k8s-ys"
vb.cpus = 2
vb.memory = 3072
vb.customize ["modifyvm", :id, "--groups", "/k8s-SgMST-1.13.1(github_SysNet4Admin)"]
end
cfg.vm.host_name = "m-k8s-ys"
cfg.vm.network "private_network", ip: "192.168.1.10"
cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", path: "./config/config.sh", args: N
cfg.vm.provision "shell", path: "./config/install_pkg.sh", args: [ Ver, "Main" ]
cfg.vm.provision "shell", path: "./config/master_node.sh"
end
# Worker 노드
(1..N).each do |i|
config.vm.define "w#{i}-k8s-ys-config" do |cfg|
cfg.vm.box = "sysnet4admin/CentOS-k8s"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "w#{i}-k8s-ys"
vb.cpus = 1
vb.memory = 2560
vb.customize ["modifyvm", :id, "--groups", "/k8s-SgMST-1.13.1(github_SysNet4Admin)"]
end
cfg.vm.host_name = "w#{i}-k8s-ys"
cfg.vm.network "private_network", ip: "192.168.1.10#{i}"
cfg.vm.network "forwarded_port", guest: 22, host: "6010#{i}", auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", path: "./config/config.sh", args: N
cfg.vm.provision "shell", path: "./config/install_pkg.sh", args: Ver
cfg.vm.provision "shell", path: "./config/work_nodes.sh"
end
end
end
- cfg.vm.network "private_network"m ip: "192.168.1.10" 으로 설정하는경우, 발생하는 오류 해결방법 참고
=> https://mungmange.tistory.com/136
- ssh 통신 설정을 하는 이유는, 설정하지않으면 자동으로 2222, 60010 2개의 포트를 22번 게스트로 포워딩하는데, 설정 낭비를 줄이고자 작성한 것.
- cfg.vm.provision의 path에 정의된 .sh파일의 내용은 아래의 깃저장소 참고
=> https://gitlab.com/nodo3482/ys-k8s/-/tree/main/config
참고자료
= 서적 - 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커, 길벗 - 제 2장
'Docker & Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes) - 오브젝트 (0) | 2022.03.27 |
---|---|
쿠버네티스(Kubernetes) - 인그레스와 로드밸런서(Load Balancer) (0) | 2022.02.27 |
쿠버네티스(Kubernetes) - 기본적인 사용방법 (0) | 2022.01.29 |
쿠버네티스(Kubernetes) - 이해하기 (0) | 2022.01.22 |
인프라 환경 관련 개념정리 (0) | 2022.01.20 |