yeonghoon.kim

  • 게시판
  • 갤러리

ARM Kubernetes 구축 2 - VM 생성과 클러스터 설치

김영훈 2026.02.14 10:17 조회 수 : 138

VNC / KVM 설치 후 VM 3개 만들고 Kubernetes 클러스터 설치.

macvlan은 포기.

WiFi 환경에서 VM 외부 통신이 불안정해서 libvirt default NAT 사용.

VM 구성.

k8s-master
192.168.122.10
4 core
8GB
50GB

k8s-worker1
192.168.122.11
4 core
8GB
50GB

k8s-worker2
192.168.122.12
4 core
8GB
50GB

Ubuntu Server ARM64 ISO 준비.

mkdir -p ~/iso
cd ~/iso
wget https://cdimage.ubuntu.com/releases/24.04.4/release/ubuntu-24.04.4-live-server-arm64.iso

virt-manager로 VM 생성.

Memory 8192 MB
CPU 4
Storage 50 GB
Network default NAT

인터페이스 확인.

ip link show

Ubuntu VM 기본 인터페이스는 enp1s0.

고정 IP 설정.

sudo tee /etc/netplan/99-static.yaml > /dev/null << 'EOF'
network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: false
      addresses: [192.168.122.10/24]
      routes:
        - to: default
          via: 192.168.122.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
EOF

sudo chmod 600 /etc/netplan/99-static.yaml

sudo netplan apply

worker는 주소만 변경.

192.168.122.11
192.168.122.12

SSH 키 설정.

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ''

ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]

sudo NOPASSWD 설정.

echo "ubuntu ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ubuntu
sudo chmod 440 /etc/sudoers.d/ubuntu

모든 노드 공통.

sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

커널 모듈.

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

sysctl.

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

containerd 설치.

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

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

Kubernetes 패키지 설치.

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/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:/v1.29/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

sudo systemctl enable kubelet

master 초기화.

sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=192.168.122.10 \
  --control-plane-endpoint=192.168.122.10

kubectl 설정.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Flannel 설치.

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

worker join.

sudo kubeadm join 192.168.122.10:6443 --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash>

검증.

kubectl get nodes -o wide

kubectl get pods --all-namespaces

nginx 테스트.

kubectl create deployment nginx-test --image=nginx

kubectl expose deployment nginx-test --port=80 --type=NodePort

NODEPORT=$(kubectl get svc nginx-test -o jsonpath='{.spec.ports[0].nodePort}')

curl http://192.168.122.10:$NODEPORT

문제 확인용.

kubectl describe pod <pod-name>

kubectl get events --all-namespaces --sort-by='.lastTimestamp'

sudo systemctl status containerd
sudo journalctl -u containerd -f

sudo systemctl status kubelet
sudo journalctl -u kubelet -f

초기화.

sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d
sudo rm -rf ~/.kube

worker 초기화.

sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d

  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 4119
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 3752
37 [바이브코딩 - 클로드] kospiAlarm 작업 메모 김영훈 2025.10.29 109
36 infra-base 기본 서버 설정 메모 김영훈 2026.01.20 171
35 임시 파킹 페이지 김영훈 2026.01.20 308
34 monitoring 설정 김영훈 2026.01.23 130
33 ollama-chatbot 테스트 메모 김영훈 2026.01.27 355
32 OpenVPN 구축 김영훈 2026.01.28 143
31 GitLab CI/CD 테스트 김영훈 2026.01.28 216
30 Traefik 설정 김영훈 2026.01.28 353
29 openclaw 구축 작업 노트 [2] 김영훈 2026.02.01 341
28 smtp-relay 설정 김영훈 2026.02.06 195
27 WAF honeypot 설정 김영훈 2026.02.07 104
26 OpenClaw cron regression 대응 김영훈 2026.02.08 186
25 DGX Ollama 구축 김영훈 2026.02.11 183
24 원격 LLM 챗봇 테스트 김영훈 2026.02.11 140
23 Docker Ollama 트러블슈팅 김영훈 2026.02.11 128
22 GPU 모니터링 대시보드 구축 김영훈 2026.02.11 150
21 DGX Spark LLM 벤치마크 김영훈 2026.02.11 132
20 LLM 모델 선정 김영훈 2026.02.12 141
19 OpenClaw 모델 삭제 사고 김영훈 2026.02.13 114
» ARM Kubernetes 구축 2 - VM 생성과 클러스터 설치 김영훈 2026.02.14 138
쓰기 태그
 첫 페이지 7 8 9 10 11 12 13 14 15 16 끝 페이지