[k8s] kubeadm으로 클러스터 구성(1)

2025. 7. 12. 22:32·Cloud/Kubernetes

이전에 kind를 이용하여 로컬에 클러스터를 구성하였으나 kind만 사용하면 외부와 통신이 안 됐습니다. 그래서 로드밸런서를 사용하려면 metallb를 설치해야 했습니다. 이번에는 CKA를 공부하며 알게 된 kubeadm으로 클러스터를 설치해보려고 합니다.

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.33. If

kubernetes.io

 


🎯목표 구성 환경

  • 마스터 노드 1개
  • 워커 노드 2개
  • VMware
  • Ubuntu 24.04 LTS
  • Kubernetes 1.33.0
  • CPU 코어 2 이상
  • RAM 4GB 이상

🔧VMware 설정

⚙️환경 세팅

미리 다운 받아놓은 ubuntu 24.04를 사용했습니다. ubuntu를 사용하신다면 https://ubuntu.com/download/server에 들어가서 원하는 버전의 Ubuntu를 설치하면 됩니다.

다음으로 넘겨서 디스크 용량을 설정하면 됩니다. 아래를 보면 multiple로 선택되어있는데 single로 설정했습니다. 그리고 다음 화면으로 넘어가서 finish를 눌러 생성하고 가상 머신을 실행하여 초기 설정을 하면 됩니다. 그리고 마찬가지로 2개를 더 만들면 됩니다.

⌨️모든 노드 공통 설정

init_node.sh

#!/bin/bash

# 1. Swap 비활성화
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 모듈 로드
sudo modprobe br_netfilter
sudo modprobe overlay

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

# 커널 파라미터 설정
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
EOF

# 적용
sudo sysctl --system

# 컨테이너 런타임 설치
sudo apt install -y containerd

# 설정 파일 생성
sudo mkdir -p /etc/containerd
sudo 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
sudo systemctl enable containerd

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

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/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.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
sudo apt-get install -y kubelet=1.33.0-1.1 kubeadm=1.33.0-1.1 kubectl=1.33.0-1.1
sudo apt-mark hold kubelet kubeadm kubectl

sudo systemctl enable --now kubelet

kubeadm을 설정하기 전에 swap하고 컨테이너 런타임을 설정해야 합니다. 그래서 위와 같이 스크립트를 만들어서 실행했습니다.

 

init_all_nodes.sh

#!/bin/bash

users=("worker1" "worker2")
hosts=("node01" "node02")

for ((i=0; i<3; i++))
do
        user=${users[i]}
        host=${hosts[i]}

        ssh $user@$host test -f /home/$user/init_node.sh

        if [ $? -ne 0 ]
        then
                scp ./init_node.sh $user@$host:/home/$user/init_node.sh
        fi

        ssh $user@$host "chmod +x /home/$user/init_node.sh && sudo -S bash init_node.sh"
done

원래는 마스터 노드까지 한 번에 설정하려고 했는데 master에서 하고 있다보니 user와 host에 마스터 노드 호스트를 넣으면 문제가 생기는 것 같아서 워커 노드만 했습니다.
만약 같은 방법으로 하려고 한다면 bastion 같은 것을 따로 만들어서 시도해보길 권장합니다.

그리고 sudo를 사용해서 터미널로 입력하기 위해 어쩔 수 없이 -S 옵션을 넣었다. 혹시 다른 방법을 아신다면 댓글에 남겨주세요🤗

저작자표시 비영리 변경금지 (새창열림)

'Cloud > Kubernetes' 카테고리의 다른 글

[k8s] kind 클러스터에 MetalLB 설치하기  (0) 2025.08.08
[k8s] kubeadm으로 클러스터 구성(2)  (2) 2025.07.17
[k8s] helm으로 Grafana와 Prometheus 설치하기  (0) 2025.04.01
[k8s] GKE에서 ArgoCD 설치 및 Github Repository 연결  (0) 2025.02.24
[k8s] Kubernetes Scheduling  (0) 2024.12.04
'Cloud/Kubernetes' 카테고리의 다른 글
  • [k8s] kind 클러스터에 MetalLB 설치하기
  • [k8s] kubeadm으로 클러스터 구성(2)
  • [k8s] helm으로 Grafana와 Prometheus 설치하기
  • [k8s] GKE에서 ArgoCD 설치 및 Github Repository 연결
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future💕
    The Engineer, Lucy
    • Instagram
    • GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (171) N
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (85) N
        • Algorithms (77) N
        • SQL (7)
      • ETC (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 링크

    • Lucy's Instagram
    • Lucy's GitHub
  • 인기 글

  • 태그

    쉘 스크립트
    네트워크 기초 지식
    코딩테스트 공부
    K8s
    쿠버네티스
    자바
    네트워크
    dfs
    Java
    network
    프로그래머스
    Kubernetes
    백준
    리눅스
    셸 스크립트
    오블완
    bfs
    docker
    티스토리챌린지
    다이나믹 프로그래밍
    Linux
    리눅스마스터 2급
    Shell
    programmers
    Baekjoon
    Shell Script
    cs 기초 지식 정리
    도커
    너비우선탐색
    리눅스마스터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
The Engineer, Lucy
[k8s] kubeadm으로 클러스터 구성(1)
상단으로

티스토리툴바