ubunbu 신규 K8S Cluster 구성(AI가 알려준거 작동안함)

2025. 8. 3. 18:15k8s

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