Profile picture

[k8s/vagrant] 쿠버네티스 클러스터 VMware로 구축하기

JaehyoJJAng2023년 02월 03일

◾️ Utility 설치


◾️ VDDK 설치


◾️ 구성도

image


◾️ 설치

Vagrant 설치 진행 후 grafana Pod 생성 시 pending 이후 해당 파드의 describtion을 살펴보면
"Warning InvalidDiskCapacity 39m kubelet invalid capacity 0 on image filesystem" 이런 에러가 발생하는데 이건 VM의 disk partion size가 10G으로 고정되어있어 발생하는 이슈이다.


VMWare Development kit으로 스크립트를 사용하여 vmdk의 사이즈를 수동으로 조정해줄 수 있다.
vmwware_desktop은 virtualbox 처럼 vagrant option을 통해 disk 사이즈 조정이 불가능하다.

아래 스크립트를 실행시켜 vmdk 사이즈를 임의로 조절하고 Vagrantfile 내에서 $install_partion_update SHELL을 실행시키게 끔 수정해주면 된다.


▪️ diskSizeUpdate.sh

$ vagrant init
$ vmware-vdiskmanager -x 50Gb $(find . -type f -name "vmdk$")
$ vagrant up

▪️ Vagrantfile

  • config.trigger.after :up 추가
  • trigger에서 돌아가는 $install_partition_update추가
  • provider virtualbox -> vmware_desktop으로 변경
  • cf.customize주석 처리
  • disk 사이즈 관련 내용 주석처리

위 내용을 제외하고 기존 Vagrantfile 코드과 동일하다.


Vagrantfile

# VAGRANT_EXPERIMENTAL을 사용하면
# config.vm.disk :disk, size: "50GB", primary: true 와 같이 디스크 사이즈를 조절 할 수 있다고 나왔지만 vmware_desktop에서는 
# 동작하지 않음. 
# VirtualBox만 동작
# ENV["VAGRANT_EXPERIMENTAL"] = "disks"

Vagrant.configure("2") do |config|
  config.vm.box = "rockylinux/8"
  # Disk 확장 설정 추가
  # 아래 내용은 vmware_desktop에서는 동작하지 않는다.
  # 항상 10GB로 partion 크기가 잡히게 됨.
  # config.disksize.size = "50GB"
  # config.vm.disk :disk, size: "50GB", primary: true

  config.vbguest.installer_options = { allow_kernel_upgrade: true }
  config.vbguest.auto_update = false

  # trigger가 추가됐습니다
  # vagrant up 하고 나서 partion_size를 업데이트 해주기 위해서 사용했습니다.
  # remote에서 $install_partion_update가 실행됩니다.
  config.trigger.after :up do |trigger|
    trigger.info = "*** Running after up ***"
    trigger.run_remote = {inline: $install_partition_update}
  end

  # 모든 node에 실행될 스크립트
  config.vm.provision "shell", path: "config.sh", args: [N, Ver]

  #==================
  #   Master Node
  #==================
  config.vm.define "master-node" do |master|
    master.vm.hostname = "k8s-master"
    master.vm.network "private_network", ip: "192.168.57.30"
    master.vm.network "forwarded_port", guest: 22,  host: 20010, auto_correct: true, id: "mac-ssh", host_ip: "192.168.219.171"

    # master.vm.provider :vmware_desktop do |vb| virtualbox -> vmware_desktop로 변경됐음.
    master.vm.provider :vmware_desktop do |vm|
      vm.memory = 6144
      vm.cpus = 4
      # vmware_desktop은 아래 customize 설정시 오류가 발생합니다.
      # vm.customize ["modifyvm", :id, "--firmware", "efi"]
    end
    master.vm.provision "shell", path: "master_node.sh"
  end

  #==================
  #   Worker Nodes
  #==================
  (1..N).each do |i|
    config.vm.define "k8s-node#{i}" do |node|
      node.vm.hostname = "k8s-node#{i}"
      node.vm.network "private_network", ip: "192.168.56.10#{i}"
      node.vm.network "forwarded_port", guest: 22,  host: "2010#{i}", auto_correct: true, id: "mac-ssh", host_ip: "192.168.219.171"
      node.vm.provider :vmware_desktop do |vm|
        vm.memory = 4096
        vm.cpus   = 1
      end
    end
  end
end

# 추가된 install_partion_update
$install_partition_update = <<-SHELL
echo '======== [*] Disk 확장 / Bug: soft lockup 설정 추가========'
yum install -y cloud-utils-growpart
growpart /dev/sda 4
xfs_growfs /dev/sda4
SHELL

config.sh 파일과 master-node.sh 파일의 내용은 [k8s] 쿠버네티스 무게감 있게 설치하기 (Virtual Box)#config.sh을 참고하면 된다.


📕 Ref

[인프런] 쿠버네티스 어나더 클래스 (지상편)


Loading script...