Kube Overview
쿠버네티스는 컨테이너로 실행되는 애플리케이션을 자동으로 배포/확장/복구/관리 해주는 플랫폼
1️⃣ 쿠버네티스(Kubernetes)는 왜 필요한가?
기존 Docker 만 사용할 때는 어떤 문제점이 있는가
컨테이너가 죽으면 -> 직접 재시작
트래픽 증가 -> 직접 컨테이너 늘림
서버 여러 대면 -> 어디에 띄웠는지 기억해야 함
장애 발생 시 -> 사람이 직접 조치
👉 운영이 힘들다
Kubenetes 가 해결하는 것
컨테이너 자동 재시작(셀프 힐링)
서버 여러 대에 자동 분산 배치(로드 벨런싱)
트래픽에 따라 자동 스케일링(스케일링)
선언만 하면 상태를 맞춰줌(Desired State)
2️⃣ 반드시 알아야 할 핵심 개념 & 용어 (⭐⭐⭐ 중요)
Pod (가장 중요한 개념)
| Pod = 쿠버네티스에서 실행되는 최소 단위
하나 이상의 컨테이너 묶음
같은 네트워크(IP), 같은 스토리지 볼륨 공유
보통 1 Pod = 1 컨테이너가 일반적
핵심 포인트
컨테이너를 직접 관리 ❌
Pod을 관리 ⭕
Node
| Node = Pod 가 실제로 실행되는 서버
물리 서버 or VM
하나의 Node 에는 여러 Pod 실행 가능
Cluster
| Cluster = 여러 Node 를 묶은 쿠버네티스 전체 환경
최소 구성
Control Plane (관리)
Worker Node (실행)
Deployment ⭐⭐⭐
| Deployment = Pod 를 어떻게, 몇 개를, 어떤 이미지로 실행할지 정의
Pod 직접 만들지 않음
Deployment -> ReplicaSet -> Pod
| 의미
Pod 가 1개 죽어도 -> 자동으로 다시 실행
이미지 버전 바꾸면 -> 롤릴 업데이트
Service ⭐⭐⭐
| Service = Pod 들의 고정된 접근 주소
Pod 문제:
Pod 는 죽고 다시 생기면 IP 가 바뀜
Service 해결:
고정 IP / DNS 제공
내부 로드벨런싱
Namespace
| Namespace = 쿠버네티스 리소스의 논리적 구분
위와 같은 클러스터에서 환경 분리 가능
리소스 충돌 방지
ConfigMap / Secret
| 설정과 비밀값을 코드와 분리
ConfigMap: 일반 설정값
Secret: 비밀번호, 토큰
Ingress
외부 트래픽을 클러스터 내부 Service로 라우팅
3️⃣ Kubernetes 전체 아키텍처 (한 눈에 보기)


4️⃣ Control Plane vs Worker Node
4.1 Control Plane (두뇌)
API Server
모든 요청의 입구
Scheduler
Pod 를 어떤 Node 에 배치할지 결정
Controller Manager
상태 유지(Pod 수 맞추기 등)
etcd
모든 상태 정보 저장(DB)
👉 “지금 상태가 원하는 상태인가?” 계속 감시
4.2 Worker Node (몸)
kubelet
Pod 실행 관리자
container runtime
Docker / containerd
kube-proxy
네트워크 & Service 처리
5️⃣ 실제 요청 흐름 (중요 ⭐⭐⭐)
6️⃣ 쿠버네티스를 이해하는 핵심 사고방식
❌ 이렇게 생각하면 헷갈림
“서버에 접속해서 뭐 실행하지?”
“컨테이너 직접 띄우면 되지 않나?”
⭕ 이렇게 생각해야 함
상태를 선언한다
쿠버네티스가 상태를 맞춘다
나는 운영자가 아니라 설계자
7️⃣ 초보자 학습 로드맵 (추천)
Docker 컨테이너 이해
Pod / Deployment / Service
ConfigMap / Secret
Ingress
HPA / 리소스 제한
실습 (minikube, kind)
🙋 질문 포인트
Q1. Node 가 실제 VM 이라면, 어떤 식으로 VM 이 생성되고 죽으며, 스펙등은 어디서 정의하는가
Node(VM, 대부분의 경우 VM)은 쿠버네티스가 직접 만들지 않고, 생성/삭제/스펙 관리는 클라우드 인프라 계층 책임
VM 생성/삭제: AWS / GCP / Azure
VM 스펙 (CPU, RAM, Disk): Auto Scaling Group / Node Pool
쿠버네티스: 생성된 VM(Node) 위에서 Pod 관리
예:
AWS EKS → EC2
GKE → Compute Engine VM
AKS → Azure VM
| 쿠버네티스 입장에서는 "Node = kubelet이 설치된 머신"
그래서 어떻게 생성? 핵심 개념: Node Group / Node Pool
관리형 Kubernetes (EKS / GKE / AKS)
AWS EKS: Node Group
GCP GKE: Node Pool
Azure AKS: Node Pool
VM 스펙은 어디서 정의? (AWS 기준 (가장 명확))
CPU / RAM: EC2 Instance Type
디스크: Launch Template
최대 Node 수: Auto Scaling Group
OS: AMI
kubelet 옵션: User Data / Bootstrap Script
VM(Node)는 언제 생성되고 언제 죽는가
생성되는 경우
클러스터 생성 시
Node Pool / Node Group 설정된 만큼 생성
오토 스케일링 (중요 ⭐️⭐️⭐️)
Pod 요청 증가
Node 공간 부족
Cluster AutoScaler 작동
새 VM 생성
새 Node 등록
삭제되는 경우
트래픽 감소
Pod 감소
Node 가 비어 있음
AutoScaler 판단
VM 종료
장애 발생
VM 장애
ASG가 감지
새 VM 생성
쿠버네티스 Node 재등록
쿠버네티스는 Node를 어떻게 인식하는가
VM 생성
kubelet 실행
API Server에 등록
Node Ready
쿠버네티스 입장에서는:
kubectl get nodes 의 결과만 중요하다
VM 생성 방식에는 관여하지 않음
등록된 Node 만 사용
Pod 리소스 vs Node 스펙 (아주 중요 ⭐⭐⭐)
Pod는 “요청”만 한다
Node는 “수용 능력”을 가진다
스케줄링 판단
정리하면
쿠버네티스가 VM을 만든다: ❌
Pod 가 부족하면 쿠버네티스가 서버를 만든다: ❌
쿠버네티스는 Node 위에서만 Pod 를 관리한다: ⭕
Q3. 운영에서 반드시 터지는 장애 포인트
ING
다음으로 이어나가기 좋은 주제
❓ Docker → Kubernetes 사고 전환
❓ FastAPI 앱을 쿠버네티스에 배포하기 (실습 YAML)
❓ Ingress vs LoadBalancer vs NodePort 차이
❓ 운영에서 반드시 터지는 장애 포인트
❓ Cluster Autoscaler 는 정확히 언제 동작하는가?
❓ Pod 스케일링(HPA) vs Node 스케일링 차이
❓ Node 하나에 Pod는 최대 몇 개까지 가능한가?
❓ Spot 인스턴스를 Node로 쓰면 어떻게 되나?
Last updated