2-6. Pod의 Request와 Limit

황인권·2025년 2월 9일

Kubernetes

목록 보기
13/37

Pod의 성능은 어떻게 결정되는가?

  • 기본적으로 아무런 설정을 하지 않은 경우, Pod는 Node의 사양 안에서 자기가 필요한 만큼 유동적으로 자원을 가져다 쓴다.
    • 다시 말해, 하나의 Pod가 많은 자원을 차지하면 같은 Node 안에 있는 다른 Pod의 성능에 영향을 받게 된다.

Request와 Limit을 설정하면 이런 문제를 해결 가능

  • Pod를 정의할 때는 Request와 Limit라는 걸 설정할 수 있다.
    • Pod의 CPU와 Memory 사용량을 조절하는 용도로 사용
  • Request = Pod가 가질 수 있는 최소 사양
  • Limit = Pod가 가질 수 있는 최대 사양
  • Pod가 아래와 같은 설정이라면?
    • Request -> 1 Core, 512MB
      Pod가 처음 실행되면 바로 1 Core와 512MB의 메모리를 차지하면서 비교적 빠른 속도로 앱이 동작
    • Limit -> 2 Core, 2GB
      Pod에 많은 부하가 가해지는 경우에는 최대 2 Core에 2GB까지만 사양이 확장되며 이 이상 부하가 가해지면 앱이 제대로 동작하지 않는다.
  • Request와 Limit가 잘 설정되어 있으면, 클러스터에 준비된 Node에 따라 Pod를 어느정도 가동시킬 수 있는지 미리 예측할 수 있다.
    • 4 Core, 16GB 사양의 Node가 3개 준비된 클러스터라면, Request와 Limit가 모두 1 Core, 4GB인 Pod를 12개 정도 가동시킬 수 있다.

직접 Request와 Limit을 설정

GCP를 이용하면 노드의 사양이 낮으므로, 아래와 같은 세팅으로 실습

  • CPU 300m, Memory 500Mi
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: sample-replicaset
  namespace: default
spec:
  replicas: 6
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.27.0
        resources:
          requests:
            cpu: "750m" # 1 Core == 1000m
            memory: "1Gi" # 1024Mi == 1GB
          limits:
            cpu: "750m"
            memory: "1Gi"
        ports:
          - containerPort: 80


profile
inkwon Hwang

0개의 댓글