Vagrant.configure("2") do |config| config.vm.box = "rockylinux/8" # Disk 확장설정 추가 config.disksize.size = "50GB" #https://cafe.naver.com/kubeops/26 config.vbguest.auto_update = false config.vm.synced_folder "./", "/vagrant", disabled: true config.vm.provision :shell, privileged: true, inline: $install_default config.vm.define "master-node" do |master| master.vm.hostname = "k8s-master" master.vm.network "private_network", ip: "192.168.56.30" master.vm.provider :virtualbox do |vb| vb.memory = 6144 vb.cpus = 4 vb.customize ["modifyvm", :id, "--firmware", "efi"] end master.vm.provision :shell, privileged: true, inline: $install_master end end $install_default = <<-SHELL echo '======== [4] Rocky Linux 기본 설정 ========' echo '======== [4-1] 패키지 업데이트 ========' yum -y update echo '======== [4-2] 타임존 설정 ========' timedatectl set-timezone Asia/Seoul echo '======== [4-3] Disk 확장 / Bug: soft lockup 설정 추가========' # https://cafe.naver.com/kubeops/25 yum install -y cloud-utils-growpart growpart /dev/sda 4 xfs_growfs /dev/sda4 echo 0 > /proc/sys/kernel/hung_task_timeout_secs echo "kernel.watchdog_thresh = 20" >> /etc/sysctl.conf echo '======== [4-4] [WARNING FileExisting-tc]: tc not found in system path 로그 관련 업데이트 ========' yum install -y yum-utils iproute-tc echo '======= [4-4] hosts 설정 ==========' cat << EOF >> /etc/hosts 192.168.56.30 k8s-master EOF echo '======== [5] kubeadm 설치 전 사전작업 ========' echo '======== [5] 방화벽 해제 ========' systemctl stop firewalld && systemctl disable firewalld echo '======== [5] Swap 비활성화 ========' swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab echo '======== [6] 컨테이너 런타임 설치 ========' echo '======== [6-1] 컨테이너 런타임 설치 전 사전작업 ========' echo '======== [6-1] iptable 세팅 ========' cat < /etc/containerd/config.toml sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml systemctl restart containerd echo '======== [7] kubeadm 설치 ========' echo '======== [7] repo 설정 ========' cat <> ~/.bashrc echo 'alias k=kubectl' >>~/.bashrc echo 'complete -o default -F __start_kubectl k' >>~/.bashrc echo '======== [9-2] Dashboard 설치 ========' kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/dashboard-2.7.0/dashboard.yaml echo '======== [9-3] Metrics Server 설치 ========' kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/metrics-server-0.6.3/metrics-server.yaml SHELL