[GKE] 클러스터(Clusters)와 워크로드(Workloads) 한번에 이해하기

2025. 12. 16. 14:26·Docker & Kubernetes

GKE(Google Kubernetes Engine)를 구축하면서 정리한 내용을 공유합니다.

 

처음 쿠버네티스를 접하면 수많은 용어(Node, Pod, Deployment...) 때문에 헷갈리기 쉬운데,

오늘은 GKE를 지탱하는 두 가지 핵심 인 '클러스터(Cluster)'와 '워크로드(Workload)'에 대해 정리해 보겠습니다.

 

https://docs.cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture

1.  클러스터(Cluster) 이해하기

클러스터란?

클러스터는 컨테이너화된 애플리케이션을 실행하기 위한 컴퓨팅 리소스의 집합 

 

컨트롤 플레인 (Control Plane)

컨트롤 플레인에서는 쿠버네티스 API 서버, 스케줄러, 핵심 리소스 컨트롤러 등의 주요 프로세스가 실행된다. GKE는 클러스터의 생성부터 삭제에 이르기까지 이 컨트롤 플레인의 전체 수명 주기를 알아서 관리해준다.

추가로 워크로드를 예약하고 워크로드 수명 주기, 확장, 업그레이드를 관리합니다. 컨트롤 플레인은 또한 이러한 워크로드의 네트워크 및 스토리지 리소스를 관리합니다. 컨트롤 플레인 및 노드는 Kubernetes API를 사용하여 서로 통신합니다.

 

노드 (Node)

노드는 실제로 컨테이너(Pod)가 실행되는 머신입니다. GKE에서 노드는 Google Compute Engine(GCE) VM 인스턴스로 구성된다.

 

각 노드의 세부 사항 몇가지를 아래에 기입.

  • kubelet: 컨트롤 플레인과 통신하며 Pod의 생명주기를 관리
  • kube-proxy: 네트워크 규칙을 관리하여 Pod 간 통신을 가능하게 함
  • Container Runtime: 실제 컨테이너를 실행 (containerd)

다만, GKE에서 위 역할을 하는 pod는 알아서 관리 됩니다.

 

노드 풀 (Node Pool)

노드 풀은 동일한 구성을 가진 노드들의 그룹입니다 다양한 워크로드 요구사항에 맞춰 여러 노드 풀을 구성할 수 있다.

{
  "nodePools": [
    {
      "name": "default-pool",
      "version": "1.27.3-gke.100",
      "autoscaling": {
        "enabled": true,
        "minNodeCount": 1,
        "maxNodeCount": 5
      }
    },
    {
      "name": "gpu-pool",
      "version": "1.27.3-gke.100",
      "nodeCount": 2
    }
  ]
}

 

 


 

2. 워크로드(Workload) 이해하기

워크로드는 클러스터에서 실행되는 애플리케이션.

Kubernetes는 다양한 유형의 워크로드 리소스를 제공하여 애플리케이션의 특성에 맞는 배포 전략을 선택

 

┌────────────────────────────────────────────────────────────────┐
│                      워크로드 계층 구조                            │
│                                                                │
│   Deployment / StatefulSet / DaemonSet / Job                   │
│          │                                                     │
│          ▼                                                     │
│     ReplicaSet (Deployment의 경우)                              │
│          │                                                     │
│          ▼                                                     │
│        Pod ─────► Container(s)                                 │
└────────────────────────────────────────────────────────────────┘

 

Pod - 가장 작은 배포 단위

Pod는 Kubernetes에서 생성하고 관리할 수 있는 가장 작은 배포 단위입니다. 하나 이상의 컨테이너를 포함하며, 스토리지와 네트워크를 공유한다.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
  labels:
    app: my-app
spec:
  containers:
  - name: app-container
    image: my-app:1.0
    ports:
    - containerPort: 8080
    resources:
      requests:
        memory: "128Mi"
        cpu: "250m"
      limits:
        memory: "256Mi"
        cpu: "500m"
        
 #  실제 운영에서는 Pod를 직접 생성하기보다 Deployment 같은 상위 컨트롤러를 통해 관리합니다.

 

ReplicaSet - Pod 복제 관리

ReplicaSet은 지정된 수의 Pod 복제본이 항상 실행되도록 보장한다. Pod가 삭제되거나 실패하면 자동으로 새 Pod를 생성합니다.

 

Deployment  ⭐

Deployment는 가장 많이 사용되는 워크로드 리소스.

ReplicaSet을 관리하면서 롤링 업데이트, 롤백 등 선언적 업데이트 기능을 제공한다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1

 

 

Deployment의 핵심 기능

롤링 업데이트 점진적으로 새 버전으로 교체
롤백 문제 발생 시 이전 버전으로 복원
스케일링 복제본 수 동적 조절
일시 중지/재개 업데이트 과정 제어
# Deployment 생성
kubectl apply -f nginx-deployment.yaml

# 스케일링
kubectl scale deployment/nginx-deployment --replicas=5

# 이미지 업데이트 (롤링 업데이트 발생)
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1

# 롤백
kubectl rollout undo deployment/nginx-deployment

# 업데이트 상태 확인
kubectl rollout status deployment/nginx-deployment

 

StatefulSet - 상태 있는 애플리케이션

StatefulSet은 상태를 유지해야 하는 애플리케이션을 위한 워크로드 리소스입니다. 데이터베이스, 메시지 큐 등에 적합하다.

 

StatefulSet의 특징:

  • 고정된 네트워크 ID (pod-0, pod-1, pod-2...)
  • 안정적인 영구 스토리지
  • 순서대로 생성/삭제
  • 순서대로 롤링 업데이트

DaemonSet - 모든 노드에 Pod 배포

DaemonSet은 모든(또는 일부) 노드에 Pod 복사본이 실행되도록 보장한다. 로그 수집기, 모니터링 에이전트 등에 사용된다.

 

DaemonSet 사용 사례

  • 로그 수집 (Fluentd, Filebeat)
  • 모니터링 에이전트 (Prometheus Node Exporter)
  • 네트워크 플러그인 (Calico, Cilium)

* 워크로드 유형 판단

                      애플리케이션 유형 판단
                              │
              ┌───────────────┼───────────────┐
              │               │               │
          상태 없음        상태 있음        배치 작업
              │               │               │
              ▼               ▼               ▼
         Deployment      StatefulSet      Job/CronJob
              │               │
              │               └── DB, 캐시, 메시지큐
              │
    ┌─────────┴─────────┐
    │                   │
모든 노드 필요       일부 노드
    │                   │
    ▼                   ▼
DaemonSet          Deployment

 

 

 

워크 로드 유형사용 사례 Pod 특성

Deployment 웹 서버, API 서버, 마이크로서비스 교체 가능, 무상태
StatefulSet 데이터베이스, Kafka, Redis Cluster 고유 ID, 영구 스토리지
DaemonSet 로그 수집기, 모니터링 에이전트 노드당 하나
Job 데이터 마이그레이션, 배치 처리 완료 후 종료
CronJob 백업, 리포트 생성 스케줄 실행

 

 

긴글 읽어주셔서 감사합니다!

저작자표시 비영리 변경금지 (새창열림)

'Docker & Kubernetes' 카테고리의 다른 글

[GKE] Google Kubernetes Engine (GKE) 알아보기  (0) 2025.11.26
[Docker] 도커의 이해 - 개념 정리  (1) 2024.09.15
'Docker & Kubernetes' 카테고리의 다른 글
  • [GKE] Google Kubernetes Engine (GKE) 알아보기
  • [Docker] 도커의 이해 - 개념 정리
창MIN
창MIN
  • 창MIN
    미니의 코드
    만들고 도전하는것을 좋아합니다💻
  • Guest
    Gmail
    GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (28)
      • Google Cloud (6)
      • NodeJS (3)
      • NestJS (1)
      • Python (1)
      • DB (1)
      • Docker & Kubernetes (3)
      • Server & Infra (3)
      • AI (1)
      • CS (7)
      • Algorithm (2)
        • 개념 (2)
        • 문제 (0)
      • 개발 (0)
  • 인기 글

  • 태그

    GKE
    typeScript
    cloud buckets
    claude code
    버킷 cors
    nodejs
    cors 개념
    Secret Manager
    Cors
    Cloud Storage
    쿠키와 세션의 개념
    알고리즘
    cors 작동
    google api gateway
    cloud logging
    Google Cloud
    서버 부하
    kubernetes
    서버 부하 분산
    signed url
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
창MIN
[GKE] 클러스터(Clusters)와 워크로드(Workloads) 한번에 이해하기

티스토리툴바