본문 바로가기

리눅스

쿠버네티스 워커 노드를 설치하고 클러스터에 참여시키기

반응형

쿠버네티스 워커 노드를 설치하고 클러스터에 참여시키기

kubeadm 초기화

kubeadm reset

kubelet와 containerd 서비스 비활성화

sudo systemctl --now disable kubelet
sudo systemctl --now disable containerd

방화벽(UFW) 중지 및 비활성화

sudo systemctl stop ufw && sudo systemctl disable ufw

Swap 비활성화

sudo swapoff -a
sudo sed -i '/\s*swap\s*/ s/^/#/' /etc/fstab

커널 모듈 로드 설정 및 로드

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

커널 파라미터 네트워크 설정 및 적용

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system

시스템 리부팅

sudo reboot

NTP(Network Time Protocol) 설치 및 활성화

sudo apt-get install -y ntp
sudo systemctl --now enable ntp
ntpq -p

필수 패키지 설치

sudo apt-get update
sudo apt-get install -y gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release curl
728x90

Containerd 설치

Docker 리포지토리 설정

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add -
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

Containerd 설치 및 설정

sudo apt-get update
sudo apt-get install -y containerd.io
sudo systemctl --now enable containerd
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo systemctl restart containerd

쿠버네티스 설치

쿠버네티스 리포지토리 설정

KUBERNETES_VERSION="v1.30"
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/${KUBERNETES_VERSION}/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:/${KUBERNETES_VERSION}/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

쿠버네티스 설치 및 고정

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo systemctl --now enable kubelet
sudo apt-mark hold kubelet kubeadm kubectl

워커 노드 클러스터 구성

쿠버네티스 클러스터에 워커 노드로 참여합니다.

kubeadm join 192.168.10.110:6443 \
  --token 5do9rg.al3ah30r66t8sem8 \
  --discovery-token-ca-cert-hash sha256:d0283d0436c3737c581badda1f57550a683813ff50d0d6bb6f9f9ae600c8d630

control-plane에서 워커 노드가 클러스터에 참여하는지 확인합니다.

  • 클러스터 상태 확인
kubectl get nodes
NAME      STATUS   ROLES           AGE   VERSION
node111   Ready    control-plane   43h   v1.30.3
node112   Ready    control-plane   43h   v1.30.3
node113   Ready    control-plane   43h   v1.30.3
worker1   Ready    <none>          9s    v1.27.16

토근 확인 및 재생성

  • kubeadm 토큰은 유효 기간이 있기 때문에 만료될 수 있습니다.
  • 마스터 노드에서 새로운 토큰을 생성하고 discovery-token-ca-cert-hash를 얻을 수 있습니다.
kubeadm token create --print-join-command
$ kubeadm token create --print-join-command
kubeadm join 192.168.10.110:6443 --token 5do9rg.al3ah30r66t8sem8 --discovery-token-ca-cert-hash sha256:d0283d0436c3737c581badda1f57550a683813ff50d0d6bb6f9f9ae600c8d630
kubeadm token list
$ kubeadm token list
TOKEN                     TTL    EXPIRES                USAGES                   DESCRIPTION    EXTRA GROUPS
5do9rg.al3ah30r66t8sem8   23h    2024-08-17T10:27:09Z   authentication,signing   <none>         system:bootstrappers:kubeadm:default-node-token

 

728x90
반응형