ops/kubernetes
kubernetes 설정 - 1 (컨트롤 플레인)
by seohan1010
2025. 11. 26.
#!/bin/bash
set -e
echo "===== [STEP 1] Kernel / cgroup / swap 설정 ====="
# swap 비활성화
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
# 커널 모듈 로드
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 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
echo "===== [STEP 2] containerd + Kubernetes 설치 ====="
# 패키지 업데이트
sudo apt update -y
sudo apt upgrade -y
# 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 "=============================================="