[Kubernetes] Cluster: 내 손으로 클러스터 구성하기 - 0. Overview

3 분 소요


서종호(가시다)님의 On-Premise K8s Hands-on Study 1주차 학습 내용을 기반으로 합니다.



Kubernetes The Hard Way를 따라 직접 클러스터를 구성해 보자.

일반적으로 쿠버네티스 클러스터는 kubeadm, kubespray, Rancher 등 자동화 도구를 사용하여 설치한다. 하지만 이번 실습에서는 자동화 도구 없이 손으로 직접 설치하며 클러스터의 각 구성 요소를 이해하는 것을 목표로 한다.

kubeadm, kubespray, rancher 등 자동화 설치 도구들은 본 실습에서는 다루지 않으며, 추후 자동화된 설치 방법을 학습한 후 별도로 정리할 예정이다.


참고: 알아 두면 쓸모 있는 지식들

  • 기본 암호학 지식: 특히,
  • kind: Docker 컨테이너를 노드로 사용하여 로컬에서 Kubernetes 클러스터를 테스트할 수 있게 해주는 도구
  • minikube: 로컬에서 단일 노드 Kubernetes 클러스터를 실행할 수 있게 해주는 도구
  • virtualbox: 가상화 도구
  • vagrant: 가상 머신 환경을 구성하고 관리할 수 있게 해주는 도구


쿠버네티스 클러스터 손설치

Kubernetes The Hard Way란?

Kubernetes The Hard Way는 말 그대로 쿠버네티스 클러스터를 어렵게(수동으로) 세팅하는 가이드이다. kubeadm, kubespray 같은 자동화 도구 없이 클러스터를 구성하면서 각 구성 요소를 직접 이해하는 것을 목표로 한다.

레포 원작자(Kelsey Hightower)의 설명에 따르면, 자동화된 방법을 원하는 사람을 위한 가이드가 아니다. 학습을 위해 긴 길을 택하여 쿠버네티스 클러스터를 부트스트래핑하는 데 필요한 각 태스크를 이해하는 것을 목적으로 한다.

This tutorial walks you through setting up Kubernetes the hard way. This guide is not for someone looking for a fully automated tool to bring up a Kubernetes cluster. Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to bootstrap a Kubernetes cluster.


손설치를 하는 이유

AI가 나보다 프로그래밍도 더 잘 하는 세상에, 왜 굳이 손 설치를 하느냐면, 그만큼 얻는 것이 많기 때문이다.

  • 기초 이해: 근간이 되는 수동 설치 과정을 이해하면 클러스터 노드별 구성 요소와 각 구성 요소의 셋업 과정에 대해 알 수 있다.
  • 운영 환경 대응: 운영 환경에서 발생하는 복잡한 이슈를 디버깅할 때 도움이 된다.
  • 자동화 도구 이해: kubeadm(수동 작업 자동화), kubespray(더 높은 수준의 자동화) 등이 내부적으로 무엇을 하는지 이해할 수 있다.


손설치의 범위

무엇보다 개인적으로는 쿠버네티스 클러스터 구성뿐만 아니라, 인프라 전반에 대한 이해를 넓힐 수 있어서 좋은 학습 경험이었다.

“손설치”가 비단 쿠버네티스 클러스터 구성의 범위를 넘어, 다음과 같은 작업까지 포함하기 때문이다:

  • 가상 머신(VM) 세팅 및 구성
  • 컴퓨트 리소스 프로비저닝
  • 네트워크 설정
  • 보안 설정 (인증서, 키 관리 등)


“Kubernetes the Hard Way”를 직접 경험해보면 클라우드 프로바이더가 얼마나 많은 작업을 자동화해주는지, 그리고 온프레미스 환경에서 인프라팀이 얼마나 많은 수동 작업을 수행해야 하는지 체감할 수 있다. Jumpbox 구성, 리소스 할당, 네트워크 설정 등 모든 것을 직접 구성해야 하기 때문이다.


실습 환경 및 버전

본 실습은 GitHub의 Kubernetes The Hard Way 레포지토리 가이드를 따라 진행한다.

  • 가이드 기준 버전: Kubernetes 1.32.3 (레포가 9개월 전에 업데이트됨)
  • 현재 최신 버전: Kubernetes 1.35
  • 실습 버전: 가이드에 맞춰 Kubernetes 1.32 버전으로 설치
  • 참고 문서: Kubernetes 1.32 공식 문서


실습 환경 요구사항

실습 환경에 대한 상세한 설명은 다음 글에서 다루겠지만, 기본적으로 다음과 같은 환경이 필요하다:

  • 최소 사양: 최소 8GB 이상의 RAM
  • 가상 머신: 총 4대의 가상 머신 필요
    • Jumpbox: 관리용 호스트 (2 CPU, 1.5GB RAM)
    • Server: Kubernetes Control Plane (2 CPU, 2GB RAM)
    • Node-0, Node-1: Kubernetes Worker Nodes (각각 2 CPU, 2GB RAM)
  • 개인 실습 환경: Apple M1 Pro Macbook (32GB RAM)


구성도

실습이 끝나면 완전한 쿠버네티스 클러스터를 구성할 수 있을 것이다. 한 땀 한 땀 직접 만든 클러스터에 대한 성취감과 함께, 이 모든 과정을 자동화해주는 kubeadm, 더 높은 수준의 자동화를 제공하는 kubespray, 그리고 경량화된 k3s 같은 도구들의 가치를 새삼 느낄 수 있다.

kubernetes-the-hard-way-cluster-structure-0


특기할 만한 구성 요소를 설명하면 다음과 같다.

  • Jumpbox: 클러스터 외부에서 클러스터 내부 노드들에 접근하기 위한 베스천 호스트(Bastion Host) 역할을 한다. 관리자가 클러스터 내부의 서버들에 SSH 접속하거나 파일을 전송할 때 사용한다.
  • etcd: Kubernetes 클러스터의 모든 상태 정보를 저장하는 분산 키-값 저장소이다. 원래는 보안을 위해 HTTPS 통신을 해야 하지만, 이 가이드에서는 학습 목적으로 HTTP 통신을 사용할 수도 있다.


레포지토리 클론

실습을 시작하기 전에 Kubernetes The Hard Way 레포지토리를 클론한다.

git clone https://github.com/kelseyhightower/kubernetes-the-hard-way.git
cd kubernetes-the-hard-way


레포지토리 구조

레포지토리에는 다음과 같은 파일과 디렉토리가 포함되어 있다:

kubernetes-the-hard-way/
├── configs/              # 설정 파일들
├── docs/                 # 문서 (실습 가이드)
│   ├── 01-prerequisites.md
│   ├── 02-client-tools.md
│   ├── 03-compute-resources.md
│   ├── 04-certificate-authority.md
│   └── ...
├── units/                # 실습 단위별 가이드
├── ca.conf               # CA(인증 기관) 설정 파일
├── downloads-amd64.txt   # AMD64 아키텍처용 다운로드 링크
└── downloads-arm64.txt   # ARM64 아키텍처용 다운로드 링크

주요 디렉토리 설명:

  • docs/: 실습을 단계별로 안내하는 마크다운 문서들
  • configs/: Kubernetes 컴포넌트 설정 파일들
  • units/: 실습 단위별 상세 가이드
  • ca.conf: OpenSSL을 사용한 인증서 생성 시 필요한 CA 설정 파일


레포지토리 관련 참고사항

이 레포지토리는 약 9개월 전에 마지막으로 업데이트되었으며, 쿠버네티스 버전도 현재 최신 버전과 다르다. 또한 일부 오류가 있을 수 있다.

하지만 오픈소스로 이렇게 귀중한 학습 자료를 제공해주는 것에 감사하며, 오류가 있다면 좋은 실전 학습 기회로 생각하고 직접 수정해보자. 기회가 된다면 Issue나 PR을 제출하는 것도 좋은 기여가 될 것이다.

다행히도 가시다님의 사전 검토를 통해 잘못된 부분이 미리 수정된 상태에서 학습할 수 있었다.



hit count

댓글남기기