들어가며
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. 쿠버네티스에서의 실행 흐름
- 사용자가
kubectl apply
로 YAML 파일을 전달 - API Server가 요청을 수신
- Scheduler가 Pod를 배치할 Node를 선택
- kubelet이 해당 Node에서 Pod를 실행
- Service를 통해 접근 가능하게 함
정리된 흐름
YAML → kubectl → API Server → Scheduler → Node + kubelet → Pod 실행 → Service로 노출
11. 초보자를 위한 요약
용어 | 설명 | 예시 |
---|---|---|
Cluster | 쿠버네티스 전체 시스템 | 공장 |
Node | 컨테이너 실행 서버 | 직원 |
Pod | 실행 단위 | 도시락통 |
Deployment | 배포 전략 | 주문서 |
Service | 네트워크 창구 | 콜센터 |
Volume | 데이터 저장 | 외장하드 |
ConfigMap | 설정 정보 | 설명서 |
Secret | 민감 정보 | 금고 문서 |
Namespace | 논리적 구역 | 사무실 공간 |
마무리
쿠버네티스는 단순한 컨테이너 실행 도구가 아닙니다. 수십, 수백 개의 애플리케이션을 안정적으로 배포하고 운영할 수 있게 도와주는 분산 시스템 관리 도구입니다.
이번 시간에는 쿠버네티스의 구성 요소와 주요 개념을 살펴보았습니다. 다음 시간부터는 이 중 하나씩을 더 깊게 파고들 예정입니다.
3차시: Kubernetes 아키텍처에서는 실제로 클러스터 내부에서 각 요소들이 어떻게 연결되고 동작하는지를 시각적으로 설명드릴 예정입니다.
'개발 창고 > Server' 카테고리의 다른 글
Kubernetes의 장점: 왜 쿠버네티스를 써야 할까? (4) | 2025.07.15 |
---|---|
Kubernetes 아키텍처: 쿠버네티스는 어떻게 동작할까? (4) | 2025.07.14 |
Kubernetes란 무엇인가? 컨테이너 오케스트레이션의 시작 (4) | 2025.07.12 |
Kubernetes 스토리지 완전정복: Longhorn으로 데이터 걱정 끝! (3) | 2025.07.05 |
Argo CD란? 쿠버네티스 배포 자동화의 핵심, 쉽게 이해하기 (1) | 2025.06.23 |