본문 바로가기
ops/kubernetes

qemu에 kubernetes cluster 구축하기 - 2(control-plane 설정)

by seohan1010 2025. 12. 16.
#!/bin/bash
set -e

echo "===== [STEP 2] containerd + Kubernetes 설치 ====="

# 패키지 업데이트
sudo apt update -y
sudo apt upgrade -y


# swap 비활성화
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab


# sysctl 설정
sudo tee /etc/sysctl.d/k8s.conf <<EOF
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 install -y containerd

# containerd 설정
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

sudo systemctl restart containerd
sudo systemctl enable containerd

# Kubernetes 패키지 준비
sudo apt install -y apt-transport-https ca-certificates curl gpg
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/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.34/deb/ /' \
 | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update -y
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

sudo systemctl enable --now kubelet

echo "===== kubeadm init 시작 ====="

CONTROL_PLANE_IP=$(hostname -I | awk '{print $1}')

sudo kubeadm init \
  --apiserver-advertise-address="$CONTROL_PLANE_IP" \
  --pod-network-cidr=192.168.0.0/16

echo "===== kubeconfig 설정 ====="

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

export KUBECONFIG=$HOME/.kube/config

echo "===== Calico 설치 ====="

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml

echo "=============================================="
echo "✅ Kubernetes Control Plane 설치 완료"
echo "=============================================="










#문제가 있을시 아래의 명령어를 사용하여 노드 초기화 
#sudo kubeadm reset -f
#sudo rm -rf /etc/kubernetes
#sudo rm -rf /var/lib/etcd
#sudo rm -rf ~/.kube







-실행하기
-> 위의 내용을 복사 붙여넣기한후 실행할 vm에 파일로 저장 
-> 해당 파일에 a+x로 실행권한 부여후 파일 실행 
-> 설치완료후 kubectl get pods , kubectl get nodes 명령어를 입력하여 정상 설치 여부 확인

export KUBECONFIG=$HOME/.kube/config

아직 노드를 join 하지 않았으므로 경고문이 출력 



https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

Creating a cluster with kubeadm

Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pass the Kubernetes Conformance tests. kubeadm also supports other cluster lifecycle functions, su

kubernetes.io