1️⃣ Kubernetes는 어떻게 동작할까?
Kubernetes는 단순한 컨테이너 오케스트레이션 툴이 아닙니다.
Kubernetes는 컨테이너 애플리케이션을 효율적으로 관리하는 분산 시스템입니다.
“Kubernetes는 수천 개의 컨테이너를 자동으로 배포하고, 스케일링하며, 관리하는 역할을 합니다.”
Kubernetes의 구조를 이해하려면, Pod, Node, Cluster 개념을 먼저 파악해야 합니다.
이제 하나씩 살펴볼까요? 🚀
2️⃣ Kubernetes Cluster란?
Kubernetes의 기본 단위는 **클러스터(Cluster)**입니다.
📌 Kubernetes 클러스터의 개념
• **클러스터(Cluster)**는 여러 개의 **노드(Node)**가 모여 하나의 시스템처럼 동작하는 구조입니다.
• 클러스터 내부에서는 컨테이너(Pod)를 실행하고, 트래픽을 관리하며, 리소스를 조정합니다.
📌 Kubernetes 클러스터 구성 요소
+--------------------+ +--------------------+
| 🏢 Master Node | ---> | 🚀 Worker Node 1 |
| (Control Plane) | | - Pod 1 |
| - API Server | | - Pod 2 |
| - Controller | | - Pod 3 |
| - Scheduler | +--------------------+
+--------------------+
+--------------------+
| 🚀 Worker Node 2 |
| - Pod 4 |
| - Pod 5 |
| - Pod 6 |
+--------------------+
✅ 클러스터는 Master Node와 여러 개의 Worker Node로 구성됨
✅ Worker Node가 실제 애플리케이션을 실행하는 곳
✅ Master Node는 클러스터 전체를 관리하는 컨트롤 타워
3️⃣ Node란? (Master Node & Worker Node)
Kubernetes 클러스터는 Master Node와 Worker Node로 구성됩니다.
✅ 3.1 Master Node (클러스터 컨트롤 타워)
Master Node는 클러스터 전체를 관리하고, 컨테이너를 배포하는 역할을 합니다.
📌 Master Node의 핵심 컴포넌트
구성 요소역할
API Server | kubectl 명령을 받아들이고, 클러스터와 통신 |
Scheduler | 새로 생성된 Pod를 적절한 Worker Node에 배치 |
Controller Manager | 클러스터의 상태를 지속적으로 감시하고 조정 |
etcd | 클러스터의 모든 상태 데이터를 저장하는 key-value 저장소 |
📌 Master Node의 동작 예시
1) 사용자가 kubectl apply -f app.yml 명령을 실행
2) API Server가 명령을 받아 Scheduler에게 전달
3) Scheduler가 Pod를 적절한 Worker Node에 배치
4) Controller Manager가 Pod가 정상적으로 실행되는지 감시
✅ Master Node는 클러스터의 두뇌 역할을 한다.
✅ 3.2 Worker Node (컨테이너 실행)
Worker Node는 애플리케이션을 실제로 실행하는 곳입니다.
📌 Worker Node의 핵심 컴포넌트
구성 요소역할
Kubelet | Master Node와 통신하며, Pod의 상태를 관리 |
Kube-proxy | 네트워크 트래픽을 관리하고, 서비스 연결 수행 |
Container Runtime | 컨테이너를 실행하는 런타임 (예: Docker, containerd) |
📌 Worker Node의 동작 예시
1) Master Node가 “Pod 3개를 실행하라!“라고 명령
2) Worker Node의 Kubelet이 컨테이너를 실행
3) Kube-proxy가 네트워크 연결을 설정하여 서비스 제공
✅ Worker Node는 실제 애플리케이션을 실행하는 곳이다.
4️⃣ Pod란? (Kubernetes의 가장 작은 단위)
Pod는 컨테이너를 감싸는 Kubernetes의 최소 배포 단위입니다.
📌 Pod의 개념
• 하나 이상의 컨테이너가 포함될 수 있음
• 같은 Pod 내의 컨테이너들은 **같은 네트워크(IP)**를 공유함
• 컨테이너 간 데이터를 공유할 수 있도록 공유 볼륨(Shared Volume) 제공
📌 Pod 구조 예시
+-------------------------+
| 🚀 Pod (my-app) |
| ---------------------- |
| 🐳 Container 1 (Nginx) |
| 🐳 Container 2 (Redis) |
+-------------------------+
✅ Pod 내부 컨테이너끼리는 localhost로 통신 가능
✅ Pod는 필요할 때마다 생성되었다가 삭제됨 (단명성 Ephemeral)
5️⃣ Kubernetes 클러스터 배포 예제
이제 Kubernetes 클러스터에서 Pod를 배포하는 예제를 살펴보겠습니다.
📌 Pod를 실행하는 기본 YAML 파일
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
✅ kubectl apply -f pod.yml 명령어로 배포 가능
✅ Nginx 컨테이너를 실행하는 단일 Pod 생성
📌 Pod 배포 확인 명령어
kubectl get pods
kubectl describe pod my-pod
✅ Pod가 정상적으로 실행되는지 확인 가능
📌 결론: Kubernetes의 핵심 개념 요약
개념설명
Cluster | 여러 개의 Node가 모여서 구성된 시스템 |
Master Node | 클러스터를 관리하고 Pod를 배포 |
Worker Node | 실제 애플리케이션이 실행되는 곳 |
Pod | 하나 이상의 컨테이너가 실행되는 최소 배포 단위 |
🔥 Kubernetes는 클러스터 기반으로 컨테이너를 효율적으로 관리하는 시스템입니다!
'Kubernetes > Kubernetes Basics' 카테고리의 다른 글
📌 Kubernetes Service: 로드 밸런싱과 네트워크 설정 이해하기 (0) | 2025.03.03 |
---|---|
📌 Kubernetes 아키텍처 완벽 분석: Master Node와 Worker Node의 역할 (0) | 2025.03.02 |
📌 Monolithic vs. Microservices: Kubernetes가 왜 마이크로서비스와 잘 맞을까? (0) | 2025.03.02 |
📌 Kubernetes의 필요성: 컨테이너 운영 자동화가 왜 필요할까? (0) | 2025.03.02 |
📌 Kubernetes란? 컨테이너 오케스트레이션의 핵심 기술 (1) | 2025.03.02 |