3.7. 파이프라인의 리소스 사용량 감소

멀티 테넌트 환경에서 클러스터를 사용하는 경우 각 프로젝트 및 Kubernetes 오브젝트에 대한 CPU, 메모리 및 스토리지 리소스의 사용을 제어해야 합니다. 따라서 하나의 애플리케이션이 너무 많은 리소스를 소비하고 다른 애플리케이션에 영향을 주지 않도록 방지할 수 있습니다.

결과 pod에 설정된 최종 리소스 제한을 정의하기 위해 Red Hat OpenShift Pipelines는 리소스 할당량 제한 및 해당 Pod가 실행되는 프로젝트의 제한 범위를 사용합니다.

프로젝트의 리소스 사용을 제한하려면 다음을 수행할 수 있습니다.

3.7.1. 파이프라인에서 리소스 사용 이해

각 작업은 Task 리소스의 steps 필드에 정의된 특정 순서로 실행하는 데 필요한 여러 단계로 구성됩니다. 모든 작업은 Pod로 실행되고 각 단계는 해당 Pod 내에서 컨테이너로 실행됩니다.

단계는 한 번에 하나씩 실행됩니다. 작업을 실행하는 Pod는 한 번에 작업에서 단일 컨테이너 이미지(단계)를 실행하기에 충분한 리소스만 요청하므로 작업의 모든 단계에 대한 리소스를 저장하지 않습니다.

spec 단계의 Resources 필드는 리소스 소비에 대한 제한을 지정합니다. 기본적으로 CPU, 메모리, 임시 스토리지에 대한 리소스 요청은 BestEffort (zero) 값으로 설정되거나 해당 프로젝트에서 제한 범위를 통해 설정된 최소값으로 설정됩니다.

리소스 요청 구성 및 단계 제한의 예

spec:
  steps:
  - name: <step_name>
    resources:
      requests:
        memory: 2Gi
        cpu: 600m
      limits:
        memory: 4Gi
        cpu: 900m

LimitRange 매개변수 및 컨테이너 리소스 요청에 대한 최소 값이 Pipeline 및 작업을 실행하는 프로젝트에 지정되면 Red Hat OpenShift Pipelines는 프로젝트의 모든 LimitRange 값을 살펴보고 0 대신 최소 값을 사용합니다.

프로젝트 수준에서 제한 범위 매개변수 구성 예

apiVersion: v1
kind: LimitRange
metadata:
  name: <limit_container_resource>
spec:
  limits:
  - max:
      cpu: "600m"
      memory: "2Gi"
    min:
      cpu: "200m"
      memory: "100Mi"
    default:
      cpu: "500m"
      memory: "800Mi"
    defaultRequest:
      cpu: "100m"
      memory: "100Mi"
    type: Container
...