0Pricing
Kubernetes Basics · 강의

리소스 요청 및 제한

효율적인 리소스 할당을 보장하고 리소스 고갈을 방지하도록 파드의 CPU와 메모리 요청량 및 제한을 정의하세요.

리소스 요청 및 제한은(는) CoddyKit의 무료 Kubernetes Basics 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kubernetes Basics 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

Kubernetes의 리소스 요구 사항

다른 애플리케이션과 마찬가지로 Pod도 실행하려면 리소스가 필요합니다. Kubernetes는 리소스 요청과 리소스 제한을 사용해 이러한 리소스를 효율적으로 관리합니다.

이 설정은 Pod에 필요한 CPU와 메모리의 양, 그리고 Pod가 사용할 수 있는 최대량을 Kubernetes에 알려 주어 리소스를 공정하게 분배하도록 합니다.

CPU 요청: CPU 보장

CPU 요청은 Pod가 안정적으로 실행되는 데 필요한 CPU의 최소량을 Kubernetes에 알려 줍니다. 즉, 보장되는 양입니다!

  • Kubernetes는 요청을 바탕으로 사용 가능한 리소스가 충분한 노드에 Pod를 배치합니다.
  • 노드에 요청한 만큼의 CPU가 부족하면 해당 노드에 Pod를 배치하지 않습니다.
  • 이를 통해 중요한 애플리케이션의 리소스 고갈을 방지할 수 있습니다.

CPU 단위 및 요청 예시

CPU는 '코어' 또는 '밀리코어'(m) 단위로 측정합니다. 1000m은 CPU 코어 1개와 같습니다. 따라서 500m은 코어의 절반입니다.

다음은 Pod 정의에서 CPU 코어 0.5개를 요청하는 방법입니다.

apiVersion: v1
kind: Pod
metadata:
  name: cpu-request-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        cpu: "500m"

CPU 제한: 과도한 사용 방지

CPU 제한은 Pod가 사용할 수 있는 CPU의 최대량을 설정합니다. 일종의 상한선입니다.

  • Pod가 제한보다 많은 CPU를 사용하려고 하면 Kubernetes가 사용량을 제한합니다.
  • 즉, Pod의 CPU 사용량이 제한되어 같은 노드의 다른 Pod 리소스를 독점하지 못하게 됩니다.

CPU 제한 적용 예시

다음은 CPU 제한을 설정하는 예시입니다. 이 Pod가 CPU 코어 1개보다 많이 사용하려고 하면 사용량이 제한되어 성능이 저하됩니다.

apiVersion: v1
kind: Pod
metadata:
  name: cpu-limit-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      limits:
        cpu: "1"

메모리 요청: RAM 보장

CPU와 마찬가지로 메모리 요청은 Pod가 작동하는 데 필요한 RAM의 최소량을 지정합니다.

  • Kubernetes는 Pod에 필요한 여유 메모리가 충분한 노드를 찾는 데 이 값을 사용합니다.
  • 노드의 메모리가 부족해지면 요청을 지정하지 않은 Pod가 공간을 확보하기 위해 가장 먼저 종료(축출)되는 경우가 많습니다.

메모리 단위 및 요청 예시

메모리는 바이트 단위로 측정합니다. 일반적으로 Mi(메비바이트)와 Gi(기비바이트)를 사용합니다.

100Mi는 100메비바이트입니다. 메모리 256MiB를 요청하는 방법은 다음과 같습니다.

apiVersion: v1
kind: Pod
metadata:
  name: mem-request-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        memory: "256Mi"

메모리 제한: OOM 방지

메모리 제한은 파드가 사용할 수 있는 최대 메모리를 정의합니다.

  • 파드가 메모리 제한을 초과하면 운영 체제가 '메모리 부족' (OOM) 오류와 함께 즉시 종료합니다. 이 상태는 흔히 'OOMKilled'로 표시됩니다.
  • 이를 통해 하나의 폭주하는 파드가 노드의 전체 메모리를 사용하여 노드 전체를 중단시키는 것을 방지합니다.

메모리 제한 적용

이 파드의 메모리 제한은 512MiB입니다. 이보다 더 많이 사용하려고 하면 다른 작업과 노드를 보호하기 위해 종료됩니다(OOMKilled).

apiVersion: v1
kind: Pod
metadata:
  name: mem-limit-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      limits:
        memory: "512Mi"

모범 사례: 요청 및 제한

모든 파드에 요청과 제한을 모두 정의하는 것이 모범 사례입니다. 이렇게 하면 클러스터의 안정성과 예측 가능성이 높아집니다.

  • 요청은 파드가 스케줄링에 필요한 최소 리소스를 확보하도록 합니다.
  • 제한은 다른 파드와 노드 자체의 리소스 고갈을 방지합니다.

전체 예시는 다음과 같습니다.

apiVersion: v1
kind: Pod
metadata:
  name: full-resource-pod
spec:
  containers:
  - name: my-app
    image: my-registry/my-app:1.0
    resources:
      requests:
        cpu: "200m"
        memory: "128Mi"
      limits:
        cpu: "500m"
        memory: "256Mi"

리소스 확인

CPU 요청이 200m이고 CPU 제한이 1(1000m에 해당)인 파드가 정의되어 있습니다.

이 파드가 CPU 코어 1.5개를 사용하려고 하면 어떻게 될까요?

복습: 리소스 관리

이 단원에서는 쿠버네티스의 리소스 요청과 리소스 제한에 대해 배웠습니다.

  • 요청(CPU 및 메모리)은 파드 스케줄링에 필요한 최소 리소스를 보장합니다.
  • 제한(CPU 및 메모리)은 리소스 경합을 방지하기 위해 최대 사용량을 제한합니다.
  • CPU 제한을 초과하면 사용량이 제한되고, 메모리 제한을 초과하면 종료됩니다(OOMKilled).
  • 안정적이고 예측 가능한 애플리케이션 성능을 위해 항상 요청과 제한을 모두 정의하세요.

자주 묻는 질문

“리소스 요청 및 제한” 강의는 무료인가요?

네 — “리소스 요청 및 제한” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kubernetes Basics 강의 전체를 잠금 해제할 수 있습니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

“리소스 요청 및 제한”에서 뭘 배우나요?

효율적인 리소스 할당을 보장하고 리소스 고갈을 방지하도록 파드의 CPU와 메모리 요청량 및 제한을 정의하세요. 브라우저에서 직접 실행하는 실습 코드로 Kubernetes Basics을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kubernetes Basics을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kubernetes Basics은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“리소스 요청 및 제한” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kubernetes Basics 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kubernetes Basics 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 리소스 요청 및 제한
  2. 노드 선택기 및 어피니티
  3. 테인트 및 톨러레이션
  4. 파드 우선순위와 선점
← Kubernetes Basics(으)로 돌아가기