[Kubernetes] 클러스터의 이해와 k8s 구조 및 역할

SangDosa·2025년 9월 6일

Kubernetes

목록 보기
2/2
post-thumbnail

들어가기 앞서서..

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 (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 클러스터 생성

* 생성
kind create cluster --name my-cluster

* 확인
kubectl cluster-info --context kind-my-cluster
kubectl get nodes

이미지

클러스터에 nginx 배포

  1. delpoyment.yaml 작성
# 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
  1. 배포 실행
실행
kubectl apply -f nginx-deployment.yaml

확인
kubectl get deployments
kubectl get pods

profile
조용한 개발자

0개의 댓글