
k8s에 대한 완전히 무지한 상황에서 업무에 투입이 되다 보니 이해력이 없이 무작정 가이드대로만 진행한 상황이다. 그렇기에 기본적인 서비스에 대한 이해, 구조 파악을 위해서 해당 내용을 작성합니다.
✅ 클러스터(Cluster)란?
여러 대의 컴퓨터(노드)를 하나로 묶어, 하나의 시스템처럼 동작하게 만든 집합체.
Kubernetes에서는 클러스터가 기본 단위.
이 클러스터 안에서 앱을 배포, 실행, 스케일링, 관리 가능
✅ 클러스터의 구조
Kubernetes Cluster
├── Control Plane (1개 이상) -- 클러스터를 관리하고 조율하는 역할
│ ├── API Server
│ ├── Scheduler
│ └── Controller Manager
│
└── Worker Nodes (1개 이상) -- 실제 프로그램을 실행하는 컴퓨터들
├── kubelet
├── Container Runtime (예: containerd, Docker)
└── Pods (앱 실행) -- 실제 실행되는 프로그램들
✅ Kubernetes(k8s)란?
설정을 통해 클러스터 위에서 어떤 앱을 실행할지 어떻게 설정할지에 대한 것들을 자동으로 관리해주는 오케스트레이션
Kubernetes (k8s)
────────────────
- 클러스터 상태 감시
- 앱 자동 배포/복구
- 스케일링 제어
- 로드밸런싱
↓
┌────────────────────┐
│ Kubernetes │
│ Cluster │
│ │
│ ┌──────────────┐ │
│ │ Control Plane│ │ ← 매니저
│ └──────────────┘ │
│ ┌──────────────┐ │
│ │ Worker Node 1│ │ ← 일꾼
│ │ └─ Pod │ │
│ └──────────────┘ │
│ ┌──────────────┐ │
│ │ Worker Node 2│ │ ← 일꾼
│ │ └─ Pod │ │
│ └──────────────┘ │
└────────────────────┘
Kind를 활용하여 cluster를 생성하고 그 클러스에 nginx 배포
실습 구조
┌────────────────────────────────────────────┐
│ Local Machine │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ kind Cluster │ │
│ │ (Docker container-based) │ │
│ │ │ │
│ │ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Control │ │ Worker │ │ │
│ │ │ Plane │ │ Node │ │ │
│ │ └────┬───────┘ └────┬───────┘ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────────────┐ │ │
│ │ └──▶│ nginx Pod │ │ │
│ │ │ (container) │ │ │
│ │ └─────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────┘ │
└────────────────────────────────────────────┘
Docker, kind, kubectl
* 생성
kind create cluster --name my-cluster
* 확인
kubectl cluster-info --context kind-my-cluster
kubectl get nodes

# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
실행
kubectl apply -f nginx-deployment.yaml
확인
kubectl get deployments
kubectl get pods
