Kubernetes 리소스 쿼터

신민창·2021년 5월 10일
0

kubernetes

목록 보기
10/13

리소스 쿼터

여러 사용자나 팀이 정해진 수의 노드로 클러스터를 공유할 때 한 팀이 공정하게 분배된 리소스보다 많은 리소스를 사용할 수 있다는 우려가 있다. 이러한 문제를 해결하기 위한 도구로 리소스 쿼터가 있다.

ResourceQuota 오브젝트로 정의된 리소스쿼터는 네임스페이스별 총 리소스 사용을 제한하는 제약 조건을 제공한다. 유형별로 네임스페이스에서 만들 수 있는 오브젝트 수와 해당 네임스페이스의 리소스가 사용할 수 있는 총 컴퓨트 리소스의 양을 제한할 수 있다.

리소스 쿼터 지원 유형

limits.cpu	터미널이 아닌 상태의 모든 파드에서 CPU 제한의 합은 이 값을 초과할 수 없음.
limits.memory	터미널이 아닌 상태의 모든 파드에서 메모리 제한의 합은 이 값을 초과할 수 없음.
requests.cpu	터미널이 아닌 상태의 모든 파드에서 CPU 요청의 합은 이 값을 초과할 수 없음.
requests.memory	터미널이 아닌 상태의 모든 파드에서 메모리 요청의 합은 이 값을 초과할 수 없음.
hugepages-<size>	터미널 상태가 아닌 모든 파드에 걸쳐서, 지정된 사이즈의 휴즈 페이지 요청은 이 값을 초과하지 못함.
cpu	requests.cpu 와 같음.
memory	requests.memory 와 같음.

리소스 쿼터 yaml 파일

apiVersion: v1
kind: ResourceQuota
metadata:
  name: rq
spec:
  hard:
    pods: 10       # 해당 네임스페이스에서 최대 파드 10개로 제한
    services: 5    # 서비스 최대 5개로 제한
    services.loadbalancers: 1 # 로드밸런서 최대 1개로 제한
    services.nodeports: 2 # 노드 포트 최대 2개로 제한
    configmaps: 5 # 컨피그맵 최대 5개로 제한
    secrets: 5 # 시크릿 최대 5개로 제한

이를 테스트하기 위해서 간단한 rs를 만들어 scale up을 시켜보자

$ cat rs.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
        resources:
          limits:
            cpu: 100m
            
$ kubectl create -f quota.yaml -f rs.yaml

# 파드 제한 최대 10개

$ kubectl scale rs rs1 --replicas=15


보는 것처럼 파드를 15개로 증가시키는 명령어를 입력하였으나 파드의 개수가 10개인 것을 볼 수 있다.

이런 식으로 Resource Quota를 간단하게 쓰는 법을 알아보았다.

0개의 댓글

관련 채용 정보