2.2. 우선순위 클래스를 사용하여 파이프라인 리소스 할당량 지정


PriorityClass 오브젝트는 우선순위 클래스 이름을 상대 우선순위를 나타내는 정수 값에 매핑합니다. 값이 클수록 클래스의 우선 순위가 증가합니다. 우선순위 클래스를 생성한 후 사양에 우선순위 클래스 이름을 지정하는 Pod를 생성할 수 있습니다. 또한 Pod의 우선 순위에 따라 Pod의 시스템 리소스 사용을 제어할 수 있습니다.

파이프라인의 리소스 할당량을 지정하는 것은 파이프라인 실행으로 생성된 Pod 서브 세트에 대한 리소스 할당량을 설정하는 것과 유사합니다. 다음 단계에서는 우선순위 클래스를 기반으로 리소스 할당량을 지정하여 해결 방법의 예를 제공합니다.

프로세스

  1. 파이프라인의 우선순위 클래스를 생성합니다.

    예: 파이프라인의 우선 순위 클래스

    apiVersion: scheduling.k8s.io/v1
    kind: PriorityClass
    metadata:
      name: pipeline1-pc
    value: 1000000
    description: "Priority class for pipeline1"
    Copy to Clipboard Toggle word wrap

  2. 파이프라인에 대한 리소스 할당량을 생성합니다.

    예: 파이프라인의 리소스 할당량

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: pipeline1-rq
    spec:
      hard:
        cpu: "1000"
        memory: 200Gi
        pods: "10"
      scopeSelector:
        matchExpressions:
        - operator : In
          scopeName: PriorityClass
          values: ["pipeline1-pc"]
    Copy to Clipboard Toggle word wrap

  3. 파이프라인의 리소스 할당량 사용량을 확인합니다.

    예: 파이프라인의 리소스 할당량 사용 확인

    $ oc describe quota
    Copy to Clipboard Toggle word wrap

    샘플 출력

    Name:       pipeline1-rq
    Namespace:  default
    Resource    Used  Hard
    --------    ----  ----
    cpu         0     1k
    memory      0     200Gi
    pods        0     10
    Copy to Clipboard Toggle word wrap

    Pod가 실행 중이 아니므로 할당량이 사용되지 않습니다.

  4. 파이프라인 및 작업을 생성합니다.

    예: 파이프라인의 YAML

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: maven-build
    spec:
      params:
      - name: GIT_URL
      workspaces:
      - name: local-maven-repo
      - name: source
      tasks:
      - name: git-clone
        taskRef:
          kind: ClusterTask
          name: git-clone
        params:
          - name: url
            value: $(params.GIT_URL)
        workspaces:
        - name: output
          workspace: source
      - name: build
        taskRef:
          name: mvn
        runAfter: ["git-clone"]
        params:
        - name: GOALS
          value: ["package"]
        workspaces:
        - name: maven-repo
          workspace: local-maven-repo
        - name: source
          workspace: source
      - name: int-test
        taskRef:
          name: mvn
        runAfter: ["build"]
        params:
        - name: GOALS
          value: ["verify"]
        workspaces:
        - name: maven-repo
          workspace: local-maven-repo
        - name: source
          workspace: source
      - name: gen-report
        taskRef:
          name: mvn
        runAfter: ["build"]
        params:
        - name: GOALS
          value: ["site"]
        workspaces:
        - name: maven-repo
          workspace: local-maven-repo
        - name: source
          workspace: source
    Copy to Clipboard Toggle word wrap

    예: 파이프라인의 작업의 YAML

    apiVersion: tekton.dev/v1
    kind: Task
    metadata:
      name: mvn
    spec:
      workspaces:
      - name: maven-repo
      - name: source
      params:
      - name: GOALS
        description: The Maven goals to run
        type: array
        default: ["package"]
      steps:
        - name: mvn
          image: gcr.io/cloud-builders/mvn
          workingDir: $(workspaces.source.path)
          command: ["/usr/bin/mvn"]
          args:
            - -Dmaven.repo.local=$(workspaces.maven-repo.path)
            - "$(params.GOALS)"
    Copy to Clipboard Toggle word wrap

  5. 파이프라인 실행을 생성하고 시작합니다.

    예: 파이프라인 실행을 위한 YAML

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      generateName: petclinic-run-
    spec:
      pipelineRef:
        name: maven-build
      params:
      - name: GIT_URL
        value: https://github.com/spring-projects/spring-petclinic
      taskRunTemplate:
        podTemplate:
          priorityClassName: pipeline1-pc
      workspaces:
      - name: local-maven-repo
        emptyDir: {}
      - name: source
        volumeClaimTemplate:
          spec:
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 200M
    Copy to Clipboard Toggle word wrap

    참고

    파이프라인 실행이 실패한 할당량으로 실패할 수 있습니다. <quota name>은 cpu, memory를 지정해야 합니다.

    이 오류를 방지하려면 네임스페이스의 제한 범위를 설정합니다. 여기서 LimitRange 오브젝트의 기본값이 빌드 프로세스 중에 생성된 Pod에 적용됩니다.

    제한 범위 설정에 대한 자세한 내용은 추가 리소스 섹션의 제한 범위를 사용하여 리소스 소비 제한을 참조하십시오.

  6. Pod가 생성되면 파이프라인 실행에 대한 리소스 할당량 사용량을 확인합니다.

    예: 파이프라인의 리소스 할당량 사용 확인

    $ oc describe quota
    Copy to Clipboard Toggle word wrap

    샘플 출력

    Name:       pipeline1-rq
    Namespace:  default
    Resource    Used  Hard
    --------    ----  ----
    cpu         500m  1k
    memory      10Gi  200Gi
    pods        1     10
    Copy to Clipboard Toggle word wrap

    출력은 우선순위 클래스당 리소스 할당량을 지정하여 우선순위 클래스에 속하는 동시 실행 중인 모든 Pod에 대해 결합된 리소스 할당량을 관리할 수 있음을 나타냅니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동