개발 창고/Server

Kubernetes 기본개념: 쿠버네티스를 이해하는 첫걸음

Royzero 2025. 7. 13. 22:00
반응형

들어가며

1차시에서는 Kubernetes가 무엇인지, 그리고 왜 필요한지를 개괄적으로 설명했습니다. 이번 시간에는 쿠버네티스를 구성하는 핵심 개념들을 하나하나 살펴보며, 쿠버네티스의 동작 원리를 이해하는 데 필요한 토대를 마련하겠습니다.

많은 분들이 쿠버네티스를 배우면서 가장 처음 부딪히는 장벽이 바로 “용어”입니다. Pod, Node, Cluster, Deployment, Service, Namespace, Volume, ConfigMap, Secret... 처음 듣는 단어들이 마치 암호처럼 느껴질 수 있습니다.

하지만 걱정하지 마세요. 각각의 개념을 실생활 예시와 함께 쉽게 풀어 설명드릴 테니, 차근차근 따라와 보세요.


1. Kubernetes는 클러스터로 구성된다

쿠버네티스의 가장 기본적인 단위는 **클러스터(Cluster)**입니다.
클러스터는 여러 대의 컴퓨터(혹은 서버)가 모여 하나의 시스템처럼 동작하는 구조입니다.

예시로 이해하기

클러스터 = 하나의 공장
이 공장에는 여러 명의 직원(서버)이 있고, 각 직원은 맡은 역할을 수행합니다. 누가 어떤 작업을 할지는 공장 관리자(Kubernetes)가 정합니다.

클러스터는 두 가지 유형의 서버로 구성됩니다:

유형 설명
Master Node (Control Plane) 클러스터를 통제하고 명령을 내리는 두뇌
Worker Node (노드) 실제 컨테이너(Pod)를 실행하는 일꾼

2. Node란 무엇인가?

**Node(노드)**는 쿠버네티스에서 컨테이너(Pod)를 실제로 실행하는 물리적 혹은 가상 머신입니다.

예시로 이해하기

Node = 공장의 직원
각각의 직원이 특정 작업(Pod 실행)을 맡습니다. 하지만 누가 어떤 작업을 맡을지는 관리자(마스터 노드)가 결정합니다.

각 Node에는 다음과 같은 구성 요소가 존재합니다:

  • kubelet: 쿠버네티스 명령을 받아서 실행
  • 컨테이너 런타임: 예: Docker, containerd
  • kube-proxy: 네트워크 트래픽을 처리하는 구성 요소

3. Pod란 무엇인가?

Pod는 쿠버네티스의 가장 작은 배포 단위입니다. 하나의 Pod는 하나 이상의 컨테이너를 포함할 수 있습니다. 보통은 1개의 컨테이너만 포함합니다.

예시로 이해하기

Pod = 도시락 통
도시락 통 안에 밥(웹서버 컨테이너)과 반찬(로그 수집기, 사이드카)이 함께 들어 있을 수 있습니다. 이 전체가 하나의 Pod입니다.

특징

  • Pod 내 컨테이너는 같은 IP, 같은 볼륨, 같은 네트워크 공간을 공유합니다.
  • Pod는 일시적입니다. 필요하면 삭제되고 다시 만들어집니다.

4. Deployment란?

Deployment는 Pod를 어떻게 배포할지에 대한 설정을 담당합니다. Pod의 개수, 업데이트 방식, 롤백 조건 등을 정의합니다.

예시로 이해하기

Deployment = 도시락 대량 주문서
"햄버거 도시락 5개를 만들어 주세요"라는 주문을 생각해보세요. 주문 수량, 배달 타이밍, 변경 요청 등이 이 Deployment에 해당합니다.

주요 기능

  • 원하는 수의 Pod를 유지
  • 새로운 버전 배포 (Rolling Update)
  • 문제 발생 시 자동 롤백

5. Service란?

Pod는 생성과 삭제가 자유롭기 때문에 IP 주소가 계속 바뀝니다. 그래서 외부에서 Pod에 접근하기 어렵습니다.

Service는 이러한 Pod들 앞단에 고정된 IP와 DNS 이름을 제공해주는 네트워크 게이트웨이입니다.

예시로 이해하기

Service = 콜센터 전화번호
제품을 문의하고 싶은데 담당자가 계속 바뀐다면? 콜센터 전화번호 하나만 알고 있으면 언제든 연결되죠. 이처럼 Service는 Pod와의 연결을 항상 유지해줍니다.

Service의 타입

타입 설명
ClusterIP 클러스터 내부에서만 접근 가능
NodePort 외부에서 접근 가능 (고정 포트 사용)
LoadBalancer 클라우드 로드밸런서를 통해 외부 접근
ExternalName 외부 DNS로 리다이렉트

6. Volume이란?

컨테이너는 기본적으로 **휘발성(Volatile)**입니다. 재시작하면 데이터가 사라집니다.

이를 해결하기 위해 쿠버네티스는 Volume을 제공합니다.
PersistentVolume(PV), PersistentVolumeClaim(PVC) 등의 리소스를 통해 외부 저장소를 연결해 사용할 수 있습니다.

예시로 이해하기

Volume = 외장하드
도시락통(Pod)이 새로 만들어져도 외장하드(Volume)를 연결하면 기존 데이터를 그대로 사용할 수 있습니다.


7. ConfigMap과 Secret

애플리케이션을 실행할 때 설정값이 필요하죠. 예를 들어, DB 접속 주소나 외부 API 키 같은 정보입니다.

  • ConfigMap: 일반 설정값 (예: 환경 변수)
  • Secret: 민감한 정보 (예: 패스워드, API 키 등)

예시로 이해하기

ConfigMap = 설명서, Secret = 금고 속 보안 문서
일반적인 정보는 설명서에 적혀 있어도 괜찮지만, 비밀번호는 금고에 보관해야 하죠.


8. Namespace란?

Namespace는 클러스터 내 리소스를 논리적으로 구분해주는 단위입니다. 개발팀, 운영팀, 테스트 환경 등으로 리소스를 나누고 싶을 때 사용합니다.

예시로 이해하기

Namespace = 사무실 구역
같은 건물 안에서도 회계팀, 인사팀, 개발팀이 공간을 나눠 쓰는 것처럼, Namespace는 리소스를 팀 단위로 구분해 줍니다.


9. kubelet, kube-proxy, API Server?

kubelet

  • Node에서 Pod를 실행하는 책임자
  • 마스터로부터 명령을 받아 실행

kube-proxy

  • 네트워크 통신을 중계
  • Service와 Pod를 연결

API Server

  • 클러스터와의 모든 상호작용의 출발점
  • kubectl 명령이 도달하는 곳

10. 쿠버네티스에서의 실행 흐름

  1. 사용자가 kubectl apply로 YAML 파일을 전달
  2. API Server가 요청을 수신
  3. Scheduler가 Pod를 배치할 Node를 선택
  4. kubelet이 해당 Node에서 Pod를 실행
  5. Service를 통해 접근 가능하게 함

정리된 흐름

YAML → kubectl → API Server → Scheduler → Node + kubelet → Pod 실행 → Service로 노출

11. 초보자를 위한 요약

용어 설명 예시
Cluster 쿠버네티스 전체 시스템 공장
Node 컨테이너 실행 서버 직원
Pod 실행 단위 도시락통
Deployment 배포 전략 주문서
Service 네트워크 창구 콜센터
Volume 데이터 저장 외장하드
ConfigMap 설정 정보 설명서
Secret 민감 정보 금고 문서
Namespace 논리적 구역 사무실 공간

마무리

쿠버네티스는 단순한 컨테이너 실행 도구가 아닙니다. 수십, 수백 개의 애플리케이션을 안정적으로 배포하고 운영할 수 있게 도와주는 분산 시스템 관리 도구입니다.

이번 시간에는 쿠버네티스의 구성 요소와 주요 개념을 살펴보았습니다. 다음 시간부터는 이 중 하나씩을 더 깊게 파고들 예정입니다.

3차시: Kubernetes 아키텍처에서는 실제로 클러스터 내부에서 각 요소들이 어떻게 연결되고 동작하는지를 시각적으로 설명드릴 예정입니다.

반응형