2023. 9. 4. 03:58ㆍ쿠버네티스/쿠버네티스
Vagrantfile을 수정해 원하는 구성이 자동으로 CentOS에 입력되도록 연습해보기.
Vagrantfile을 새롭게 작성해 원하는 구성을 자동으로 생성해보는 연습.
코드는 루비라는 언어로 작성됨.
# 현재 루비임을 인식하게 하는 호환코드 ft는 파일 종류(file type)의 약자이며, 해당 내용은 실행에 아무런 영향을 미치지 않음.
# -*- mode: ruby -*-
# vi: set ft=ruby :
# "2"는 베이그런트에서 루비로 코드를 읽어 들여 실행할 때 작동하는 API 버전 의미, do |config|는 베이그런트 설정을 시작을 알림.
Vagrant.configure("2") do |config|
#버추얼박스에서 보이는 가상 머신을 "m-k8s"로 정의, do |cfg|를 추가해 원하는 설정으로 변경, do |이름| 으로 시작한 작업은 end로 추후 종료해줘야 함.
config.vm.define "m-k8s" do |cfg|
cfg.vm.box = "sysnet4admin/CentOS-k8s" #기본값 config.vm.box를 do |cfg| 에 적용한 내용을 받아 cfg.vm.box로 변경함.
cfg.vm.provider "virtualbox" do |vb| # 프로바이더가 버추얼박스라는 것을 정의,프로바이더는 베이그런트를 통해 제공되는 코드가 실제로가상 머신으로 배포되게 하는 소프트웨어 / do |vb| 버추얼박스 설정 시작 선언
vb.name = "m-k8s(github_SysNet4Admin)"
vb.cpus = 2
vb.memory = 2048
vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
end # 버추얼박스 설정이 끝났음을 알림
# 가상 머신 자체에 대한 설정
cfg.vm.host_name = "m-k8s"
cfg.vm.network "private_network", ip: "192.168.1.10" # 호스트 전용 네트워크 값 설정 , eth1 인터페이스를 호스트 전용 으로 구성
#ssh 통신은 호스트 60010번을 게스트 22번으로 포워딩 설정 ,중복 대비해포트가 중복되면 자동으로 변경되도록 auto_correct true설정
cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true #호스트와 게스트 사이에 디렉터리 동기화가 이뤄지지 않게 설정
end # cfg 끝났음 알림
end # config 끝났음 알림
작성이 완료되면 "vagrant up"으로 실행 후 설치완료되면 ssh로 접근 하여 ip addr show eth1로 확인 후 exit로 빠져나옴.
추가 패키지 설치하기
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "m-k8s" do |cfg|
cfg.vm.box = "sysnet4admin/CentOS-k8s"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "m-k8s(github_SysNet4Admin)"
vb.cpus = 2
vb.memory = 2048
vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
end
cfg.vm.host_name = "m-k8s"
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: "install_pkg.sh" #add provisioning script
end
end
Vagrantfile이 위치한 디렉토리에서추가 패키지를 위한 스크립트를 아래처럼 작성한다. "파일이름: install_pkg.sh"
#!/usr/bin/env bash
# install packages
yum install epel-release -y
yum install vim-enhanced -y
cmd창에서 "vagrant provision"을 실행하면 추가한 구문이 실행된다. 추가가 완료되면
vagrant ssh로 다시 접속하여 EPEL 저장소가 잘 구성됬는지 확인한다. 그리고 하이라이트가 잘 적용됬는지도
vi .bashrc를 실행해 확인해 본다.
확인이 되면 exit로 빠져나와 vagrant destroy -f 명령으로 가상 머신을 삭제해준다.
추가노드 구성하기
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "m-k8s" do |cfg|
cfg.vm.box = "sysnet4admin/CentOS-k8s"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "m-k8s(github_SysNet4Admin)"
vb.cpus = 2
vb.memory = 2048
vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
end
cfg.vm.host_name = "m-k8s"
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: "install_pkg.sh"
cfg.vm.provision "file", source: "ping_2_nds.sh", destination: "ping_2_nds.sh" # 파일을 게스트 운영 체제에 전달하기 위해 shell이 아닌 file 구문으로 변경
cfg.vm.provision "shell", path: "config.sh" # config.sh를 게스트에서 실행
end
#=============#
# Added Nodes #
#=============#
(1..3).each do |i| # 1부터 3까지 3개의 인자를 반복해 i로 입력
config.vm.define "w#{i}-k8s" do |cfg| #i값이 1,2,3 으로 차례대로 치환됨
cfg.vm.box = "sysnet4admin/CentOS-k8s"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "w#{i}-k8s(github_SysNet4Admin)"
vb.cpus = 1
vb.memory = 1024
vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
end
cfg.vm.host_name = "w#{i}-k8s"
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: "install_pkg.sh"
end
end
end
추가 노드는 처음 노드랑 거의 비슷하며 each do 구문으로 3번 반복하여 가상 머신 생성 함.
vagrant up으로 4개 노드 생성 후
vagrant ssh m-k8s로 접근하여
ping 테스트를하여 연결이 잘되는지 확인해 줍니다.
ping 테스트가 잘됬으면 exit로 빠져나와 vagrant destroy -f로 테스트 노드들을 삭제해 줍니다.
소스위치:
https://github.com/sysnet4admin/_Book_k8sinfra
GitHub - sysnet4admin/_Book_k8sInfra: < 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 >
< 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 >. Contribute to sysnet4admin/_Book_k8sInfra development by creating an account on GitHub.
github.com
'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글
kubectl 실습 (0) | 2023.09.10 |
---|---|
마스터 노드 (0) | 2023.09.04 |
컨테이너를 다루는 표준 아키텍처, 쿠버네티스 (0) | 2023.09.04 |
putty와 슈퍼 putty (0) | 2023.09.04 |
vagrant와 virtual box (0) | 2023.09.04 |