hello world

쿠버네티스 환경 구축하기 본문

네트워크/쿠버네티스

쿠버네티스 환경 구축하기

sohyun_92 2025. 4. 13. 19:37

1.Virtualbox 설치 (7.1.6 버전)  VM provider로 VirtualBox 사용 

- Download : https://download.virtualbox.org/virtualbox/7.1.6/VirtualBox-7.1.6-167084-Win.exe

- Site : https://www.virtualbox.org/wiki/Downloads

 

2. Vagrant 설치 (2.4.3 버전)

Vagrant란 ? 

쉽게 말해 vagrant를 이용하면 vm 이미지를 받아서 설치하고 virtualbox에 환경까지 자동으로 잡아주며, 동일 세팅을 다른사람과 공유할 수 있다. 일련의 과정을 매우 간소화 시킴, VirtualBox를 이용하는 환경에서 매우 강력하게 활용 될 수 있는 Iac 도구 

- Download : https://releases.hashicorp.com/vagrant/2.4.3/vagrant_2.4.3_windows_amd64.msi

- Site : https://developer.hashicorp.com/vagrant/downloads?product_intent=vagrant

 

Install | Vagrant | HashiCorp Developer

Explore Vagrant product documentation, tutorials, and examples.

developer.hashicorp.com

 

k8s 폴더를 생성하고, 이 폴더에 vagrant 스크립트를 다운로드 및 rocky linux repo를 세팅하는 과정

# Vagrant 폴더 생성
C:\Users\사용자> mkdir k8s && cd k8s

# Vagrant 스크립트 다운로드
curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.4.3/Vagrantfile

# Rocky Linux Repo 세팅
curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.4.3/rockylinux-repo.json
vagrant box add rockylinux-repo.json

# Vagrant Disk 설정 Plugin 설치 
vagrant plugin install vagrant-vbguest vagrant-disksize

# Vagrant 실행 (VM생성)
vagrant up

 

 

repo 세팅을 위한 json파일 내용

(https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.4.3/rockylinux-repo.json)

 

config.vm.box = "rockylinux/8" vagrant가 실행함

 

vagrant up 실행
Vagrantfile에서 config.vm.box = "rockylinux/8" 설정을 확인
Vagrant는 rockylinux/8의 메타데이터(JSON 파일)를 찾아서 읽음
JSON에서 최신 버전의 VirtualBox 이미지 URL을 확인 이미지가 다운로드되지 않은 경우, URL에서 .box 파일을 다운로드
다운로드한 .box 파일을 기반으로 가상머신 생성

 

vagrant 스크립트 내용

#os를 rocky8 버전으로 설치
  config.vm.box = "rockylinux/8"   

  
  # Disk 확장설정 추가
  config.disksize.size = "50GB"

# 밑쪽 $install_default 설정 부분
config.vm.provision :shell, privileged: true, inline: $install_default

  #virtualBox에서 생성된 vm의 이름 지정 "master-node"
  config.vm.define "master-node" do |master|
    #리눅스에 들어갔을 때 나오는 호스트의 이름 설정 "k8s-master"
    master.vm.hostname = *"k8s-master"
    # vb에서 (*"private_network") *Hos-Only Network 내 pc에서만 사용할 수 있는 프라이빗네트워크 설정
    #* ip: "192.168.56.30" 내 리눅스에 그 ip가 할당 ssh:192.168.56.30:22 , https://192.168.56.30:30000/#/login로 접속
    master.vm.network "private_network", ip: "192.168.56.30"
	master.vm.provider :virtualbox do |vb|
	
	# 자원 할당 메모리,cpu
	# 메모리는 할당된 공간을 침범하지 않지만 cpu는 필요한 순간에 나누어 사용
      vb.memory = 6144
      vb.cpus = 4
		  vb.customize ["modifyvm", :id, "--firmware", "efi"]
		end
		# $install_master 설정 부분
	    master.vm.provision :shell, privileged: true, inline: $install_master
	  end
	
	end

#쿠버네티스 설치

# node별 기본 설치 명령어
$install_default = <<-SHELL
~~~~~
SHELL

#Master Node 전용 설치 명령어
$install_master = <<-SHELL
~~~
SHELL

 


kubeadm란?

k8s의 마스터 노드와 워커노드

kubeadm이 무엇인지를 알려면 먼저 쿠버네티스가 기본적으로 마스터 노드와 워커 노드로 구성된다는 것을 알아야 한다.
마스터 노드는 워커 노드에 Pod를 할당하고 Pod 안에 컨테이너를 띄우게 하는 역할을 한다.
또한 쿠버네티스의 상태를 관리하고 여러 Pod 들의 스케줄링도 하는 등 쿠버네티스에서 중추적인 역할을 한다.
워커 노드는 마스터 노드와 통신하면서 Pod를 할당 받고 그 안에 컨테이너를 띄워 유지 및 관리하는 역할을 한다. 또한 네트워크나 볼륨에 대한 기능도 컨트롤한다.

 

kubeadm의 역할

쿠버네티스를 사용하려면 위에서 살펴보았듯 기본적으로 클러스터를 구성해야 한다.
kubeadm은 쿠버네티스에서 제공하는 기본적인 도구로, 이러한 클러스터를 빠르고 쉽게 구축하기 위한 다양한 기능을 제공한다.


쿠버네티스 설치

$install_default = <<-SHELL 부분 (node별 기본 설치 명령어)

1.rocky linux 기본설정 : 패키지 업데이트, 타임존 설정

2.kubeadm 설치 전 사전작업 : 방화벽 해제 , 스왑  비활성화 

   ( Kubeadm은 쿠버네티스 클러스터 생성을 위한 "빠른 경로"의 모범 사례로 kubeadm init 및 kubeadm join 을 제공하도록       만들어진 도구이다. )

3.컨테이너 런타임 설치  

   1) 컨테이너 런타임 설치 전 사전작업 : iptables 세팅

   2) 컨테이너 런타임( contatinerd 설치)

       2-1) containerd 패키지 설치 (option2)

       2-1-1) docker engine 설치 : repon 설정, contatinerd 설치 

   3) 컨테너 런타임 : cri 활성화

 4.kubeadm 설치 : repo 설정, SELinux 설정, kubelet, kubectl 패키지 설치

 

$install_master = <<-SHELL  (Master Node 전용 설치 명령어)

5.kubeadm으로 클러스터 생성

  1) 클러스터 초기화 (Pod Network 세팅)

  2) kubectl 사용설정

  3) CNI Plugin 설치 (calico) CNI : 컨테이너간의 통신을 위한 설치 

  4) Master에 pod를 생성할 수 있도록 설정

6.쿠버네시트 편의 기능 설치

  1) kubectl 자동완성 기능

  2) dashboard 설치

  3) metrics server 설치

 


 

 

 

참조 : 인프런  쿠버네티스 어나더 클래스 (지상편) - sprint 1,2 강의

 

 

'네트워크 > 쿠버네티스' 카테고리의 다른 글

Container, Container Orchestration  (0) 2025.04.13
Comments