티스토리 뷰

728x90

1. Request / Limit

- 파드를 어느 노드에 배포할지 스케쥴링할 때, 해당 노드에서는 충분한 자원이 파드에 할당되어야 함
- cpu/memory와 같은 컴퓨트 리소스 외에도 gpu/storage 리소스에 대한 필요한 양을 명시할 수 있음
- CPU는 ms(밀리세컨드) 단위로 지정하며 CPU 1000ms 가 1vCore(가상 CPU 코어)이며 메모리는 Mb를 사용

728x90
apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: log-aggregator
    image: images.my-company.example/log-aggregator:v6
    resources:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

# metrics-server를 이용한 노드 별 리소스 모니터링
kubectl top nodes | sort -n -k 2
# metrics-server를 이용한 노드 별 리소스 모니터링
kubectl -n kube-system top pod | sort -n -k 2

 


2. ResourceQuota

- 만약 특정 팀에서 많은 리소스를 요구할 경우, ResourceQuota 를 통해 namespace 별 사용할 수 있는 리소스의 양을 설정하거나 컨테이너마다 사용할 수 있는 양을 지정할 수 있음
- 쿼터 오브젝트를 생성하여 특정 우선순위의 파드와 일치시키며, "low, medium, high"의 세가지 우선 순위 클래스 중 하나를 가질 수 있음

 

 

3. LimitRange

- ResourceQuota를 사용하면 네임스페이스의 리소스를 제한하고, LimitRange는 네임스페이스 내 파드의 리소스를 제한
- 사용자가 컨테이너(파드) 리소스를 너무 크게 사용하면 특정 컨테이너가 많은 리소스를 점유하는 것을 방지할 수 있음

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-min-max-demo-lr
  namespace: default
spec:
  limits:
  - max:
      cpu: "800m"
    min:
      cpu: "200m"
    type: Pod

 

728x90
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크