리눅스

Kubernetes Cluster 구축하는 방법

변군이글루 2025. 8. 25. 13:13
반응형

Kubernetes Cluster 구축하는 방법

우분투 24.04 LTS 환경에서 1 컨트롤 플레인과 3 워커 노드로 구성하는 Kubernetes 클러스터 구축 방법입니다.

쿠버네티스 클러스터 구성 요소

Kubernetes Diagram

Kubernetes Cluster Architecture

Kubernetes Cluster Architecture

1. 시스템 준비(모든 노드)

필수 패키지 설치

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gpg

Swap 비활성화

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.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system

2. Container Runtime 설치(모든 노드)

containerd 권장

더보기

---

Docker 설치

curl -fsSL https://get.docker.com -o get-docker.sh
sudo bash get-docker.sh
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
newgrp docker

도커 데몬 systemd cgroup 설정

sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl restart docker

---

설치

sudo apt install -y containerd
sudo systemctl enable --now containerd

기본 설정 생성

sudo mkdir -p /etc/containerd
sudo sh -c "containerd config default | sudo tee /etc/containerd/config.toml"

systemd cgroup 사용하도록 수정

sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

재시작

sudo systemctl restart containerd

3. Kubernetes 설치(모든 노드)

KUBERNETES_VERSION=v1.33

GPG 키 추가

sudo mkdir -p -m 755 /etc/apt/keyrings
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/${KUBERNETES_VERSION}/deb/Release.key \
  | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

apt repo 추가

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/${KUBERNETES_VERSION}/deb/ /" \
  | sudo tee /etc/apt/sources.list.d/kubernetes.list

kubeadm, kubelet, kubectl 설치

sudo apt update

Control Plane Node

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

Worker Node

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

설치 확인

kubelet --version
kubeadm version --output short
kubectl version --client

4. Control Plane 초기화 (kc-controlplane-223)

sudo kubeadm init --pod-network-cidr=10.10.0.0/16

kubeadm join 명령어는 Worker 노드에서 사용

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

5. CNI 플러그인 설치 (Calico 예시)

CALICO_VERSION=v3.30.2
curl -fsSL https://raw.githubusercontent.com/projectcalico/calico/${CALICO_VERSION}/manifests/calico.yaml -O calico.yaml
sed -i 's/cidr: 192\.168\.0\.0\/16/cidr: 10.10.0.0\/16/g' calico.yaml
kubectl apply -f calico.yaml

6. Worker 노드 조인 (kc-node-225, 226, 227)

sudo kubeadm join 192.168.50.223:6443 --token <TOKEN> \
    --discovery-token-ca-cert-hash sha256:<HASH>

7. 클러스터 확인 (Control Plane)

kubectl get nodes -o wide

KubernetesCluster

KubernetesCluster

KubernetesCluster

 

 

728x90
반응형