| Open Source Project

Kube-Ready-Box

Kubernetes 최적화된 Ubuntu 24.04 LTS Vagrant Box

Kubernetes Vagrant Ubuntu Multi-Arch
GitHub에서 보기

프로젝트 소개

Kube-Ready-Box는 Kubernetes 배포를 위해 OS 수준에서 최적화된 Ubuntu 24.04 LTS Vagrant Box입니다.

Vagrant Cloud에서 dasomel/ubuntu-24.04로 배포되며, 컨테이너 오케스트레이션 환경에 필요한 시스템 튜닝이 사전 적용되어 있습니다.

주요 특징

멀티 아키텍처 및 프로바이더 지원

ProviderAMD64ARM64비고
VirtualBoxARM64는 VirtualBox 7.1+ 필요
VMware FusionApple Silicon 지원

Kubernetes 최적화

사전 적용된 시스템 튜닝:

커널 파라미터

# 네트워크 버퍼 최적화
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

# IP 포워딩 활성화
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1

리소스 제한

# 프로세스 및 파일 디스크립터 제한
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 1048576

디스크 I/O 스케줄러

  • SSD: none (최적 성능)
  • HDD: mq-deadline (처리량 최적화)

스왑 비활성화

  • Kubernetes 요구사항에 맞게 스왑 완전 제거

포함되지 않은 것

의도적으로 포함하지 않은 컴포넌트 (사용자 선택 설치):

  • Container Runtime (containerd, CRI-O 등)
  • Kubernetes 컴포넌트 (kubelet, kubeadm, kubectl)
  • CNI 플러그인 (Calico, Cilium 등)

시작하기

요구사항

  • Vagrant 2.3+
  • VirtualBox 7.1+ 또는 VMware Fusion

기본 사용법

# Vagrant 초기화
vagrant init dasomel/ubuntu-24.04

# VM 시작 (VirtualBox)
vagrant up

# VM 시작 (VMware)
vagrant up --provider=vmware_desktop

Vagrantfile 예제

Vagrant.configure("2") do |config|
  config.vm.box = "dasomel/ubuntu-24.04"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = 4096
    vb.cpus = 2
  end

  config.vm.provider "vmware_desktop" do |v|
    v.vmx["memsize"] = "4096"
    v.vmx["numvcpus"] = "2"
  end

  config.vm.hostname = "k8s-node"
  config.vm.network "private_network", ip: "192.168.56.10"
end

최적화 검증

# Box 정보 확인
vagrant ssh -c "cat /etc/vagrant-box/info.json"

# 튜닝 설정 검증 스크립트
vagrant ssh -c "/bin/bash /etc/vagrant-box/check-tuning.sh"

Kubernetes 설치 예제

Box 생성 후 Kubernetes 설치:

# 1. containerd 설치 및 설정
sudo apt-get update && sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd && sudo systemctl enable containerd

# 2. Kubernetes 설치 (버전 선택)
K8S_VERSION="v1.31"
curl -fsSL "https://pkgs.k8s.io/core:/stable:/${K8S_VERSION}/deb/Release.key" | \
  sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/${K8S_VERSION}/deb/ /" | \
  sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# 3. 클러스터 초기화 (마스터 노드)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

빌드 정보

이 Box는 Packer를 사용하여 빌드됩니다:

cd packer

# Packer 플러그인 초기화
./build.sh init

# 특정 Box 빌드
./build.sh vmware-arm64      # VMware ARM64
./build.sh virtualbox-arm64  # VirtualBox ARM64

# 전체 Box 빌드 (4개)
./build.sh all

AI 협업 디렉토리

이 저장소는 AI 코딩 어시스턴트를 위한 .agent/ 디렉토리를 포함합니다:

  • AGENT.md: 기술 가이드 (Packer, K8s 튜닝, 최적화)
  • SECURITY.md: 보안 가이드라인
  • skills/: AI 에이전트 스킬 (자동 리뷰)

참고 링크