ubunbu 신규 K8S Cluster 구성(AI가 알려준거 작동안함)
2025. 8. 3. 18:15ㆍk8s
IP 대역 충돌이 원인인 듯..
사용 포트
6443 (API Server)
2379–2380 (etcd)
10250 (kubelet)
10251 (scheduler)
10252 (controller-manager)
30000–32767 (NodePort)
시스템 설정
# 스왑 비활성화
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
# 필요한 모듈 로드
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
sudo modprobe br_netfilter
# sysctl 설정
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
containerd 설치
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
kubeadm, kubelet, kubectl 설치
# 기존 키링, 리스트 제거((선택)
sudo rm -f /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo rm -f /etc/apt/sources.list.d/kubernetes.list
# 1. GPG 키 저장
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 2. APT 저장소 등록
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" \
| sudo tee /etc/apt/sources.list.d/kubernetes.list
# 3. 패키지 업데이트 및 설치
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
# 4. 설치 확인
kubectl version --client
kubeadm version
kubelet --version
kubeadm으로 Control Plane (마스터 노드) 초기화
# --pod-network-cidr는 Calico, Flannel 등 CNI에 맞게 설정. 위는 Calico 기준.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
# 오류
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
# 오류 조치
# IP Forwarding 설정
# 즉시 적용
sudo sysctl -w net.ipv4.ip_forward=1
# 부팅 시에도 유지되도록 설정
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 마스터에서 출력된 조인 명령 예시
sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
일반 사용자용 kubectl 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
CNI 설치 (예: Calico)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
클러스터 정상 확인
kubectl get nodes
kubectl get pods -A