[VM 환경 #0] 쿠버네티스 자동 구성 스크립트 구조 분석

도람·2025년 11월 10일
post-thumbnail

쿠버네티스 환경 자동 구성 스크립트 구조


전체 코드 구조

.
├── controlplane_node.sh        # 쿠버네티스 컨트롤 플레인 노드 구성 및 초기화
├── k8s_env_build.sh            # 쿠버네티스 환경 구성 (기초 설정)
├── k8s_pkg_cfg.sh              # 쿠버네티스 관련 패키지 설치
│
├── tabby-v1.0.207/             # 외부 유틸리티/설정 파일
│   ├── config.yaml
│   └── tabby.rb
│
├── Vagrantfile                 # 베이그런트 메인 실행 파일
│   ├── vagrant-v2.4.1/
│   │   └── vagrant.rb
│   └── virtualbox-v7.0.18/
│       └── virtualbox.rb
│
└── worker_nodes.sh             # 쿠버네티스 워커 노드 구성

k8s_env_build.sh — 쿠버네티스 환경 구성

이 스크립트는 쿠버네티스 설치를 위한 기본 시스템 환경을 설정하는 스크립트이다.

  • swap 비활성화 (swapoff -a)
  • 방화벽 설정 (필요 시 포트 열기)
  • 네트워크 구성 (br_netfilter, ip_forward 설정)
  • 필수 패키지(curl, apt-transport-https, ca-certificates) 설치

k8s_pkg_cfg.sh — 쿠버네티스 패키지 설치

이 스크립트는 쿠버네티스를 실행하기 위한 핵심 구성요소들을 설치한다.

  • containerd, kubeadm, kubelet, kubectl 설치
  • 컨테이너 런타임 설정 (/etc/containerd/config.toml 수정)
  • 서비스 자동 시작 등록

    참고
    kubeadm : 쿠버네티스 클러스터 초기화 도구
    kubelet : 노드에서 파드를 실제 실행하는 에이전트
    kubectl : 쿠버네티스 명령행 도구


controlplane_node.sh — 컨트롤 플레인 노드 구성

컨트롤 플레인(Control Plane) 노드는 클러스터의 중심으로,
API 서버와 스케줄러, 컨트롤러 매니저 등이 동작하는 곳이다.

이 스크립트는 다음 과정을 수행한다.

  • kubeadm init으로 마스터 노드 초기화
  • CNI 플러그인(예: Calico, Flannel) 설치
  • 워커 노드가 조인할 수 있는 Join Command를 생성

-> 생성된 kubeadm join ... 명령어는 워커 노드에서 실행해야 클러스터에 연결된다.


worker_nodes.sh — 워커 노드 구성

워커 노드는 실제 애플리케이션(Pod)이 배포되는 노드이다.
이 스크립트는 컨트롤 플레인에서 생성된 Join Command를 사용해
클러스터에 워커 노드를 연결(join)한다.

  • kubeadm join ... 실행
  • kubelet 서비스 정상 동작 확인

->컨트롤 플레인과 통신이 성공하면 kubectl get nodes 에서 READY 상태로 표시된다.


Vagrantfile — 가상머신(VM) 자동 생성 및 실행

이 파일은 Vagrant의 메인 실행 스크립트로,
VirtualBox 환경에서 VM을 자동 생성하고 위의 스크립트들을 실행시킨다.

주요 역할:

  • 컨트롤 플레인 및 워커 노드 VM 정의 (예: master, worker1, worker2)
  • 각 VM의 CPU/메모리, IP 설정
  • 프로비저닝(provisioning) 단계에서 .sh 스크립트 자동 실행

즉, Vagrantfile 하나로 VM 생성부터 쿠버네티스 구성까지 전부 자동화된다.


tabby-v1.0.207/ — 추가 유틸리티 설정

  • config.yaml : tabby 설정 파일 (예: 환경 변수, 버전 정보 등)
  • tabby.rb : Ruby 스크립트로, Vagrant 실행 시 보조 기능을 수행할 수 있음

-> 예를 들어, 환경 변수 자동 로드나 로그 포맷팅 등에 사용 가능하다.


본 게시글은 인프런 「그림으로 배우는 쿠버네티스」 강의를 참고하여 작성하였습니다.
강의에서 사용된 핵심 코드나 스크립트는 포함하지 않았으며,
강의 내용을 기반으로 제 환경에 맞게 디렉터리 구조와 설정을 재구성하였습니다.
👉 강의 링크: https://www.inflearn.com/course/그림으로-배우는-쿠버네티스/dashboard

profile
정도를 걷는 엔지니어

0개의 댓글