3.10. 사용자 정의 메트릭 자동 확장기를 추가하는 방법 이해


사용자 정의 메트릭 자동 확장기를 추가하려면 배포, 상태 집합 또는 사용자 정의 리소스에 대한 ScaledObject 사용자 정의 리소스를 만듭니다. 작업에 대한 ScaledJob 사용자 정의 리소스를 만듭니다.

확장하려는 각 작업 부하에 대해 확장된 객체를 하나만 만들 수 있습니다. 또한, 동일한 작업 부하에서 확장된 객체와 수평 포드 자동 확장기(HPA)를 함께 사용할 수 없습니다.

3.10.1. 워크로드에 사용자 정의 메트릭 자동 확장기 추가

배포 , StatefulSet 또는 사용자 지정 리소스 개체에 의해 생성된 작업 부하에 대한 사용자 지정 메트릭 자동 확장기를 만들 수 있습니다.

사전 요구 사항

  • Custom Metrics Autoscaler Operator를 설치해야 합니다.
  • CPU 또는 메모리를 기반으로 확장하기 위해 사용자 지정 메트릭 자동 확장기를 사용하는 경우:

    • 클러스터 관리자는 클러스터 메트릭을 올바르게 구성해야 합니다. oc describe PodMetrics <pod-name> 명령을 사용하여 메트릭이 구성되어 있는지 확인할 수 있습니다. 메트릭이 구성된 경우 출력은 다음과 비슷하게 나타나고 사용량 아래에 CPU와 메모리가 표시됩니다.

      $ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
      Copy to Clipboard Toggle word wrap

      출력 예

      Name:         openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
      Namespace:    openshift-kube-scheduler
      Labels:       <none>
      Annotations:  <none>
      API Version:  metrics.k8s.io/v1beta1
      Containers:
        Name:  wait-for-host-port
        Usage:
          Memory:  0
        Name:      scheduler
        Usage:
          Cpu:     8m
          Memory:  45440Ki
      Kind:        PodMetrics
      Metadata:
        Creation Timestamp:  2019-05-23T18:47:56Z
        Self Link:           /apis/metrics.k8s.io/v1beta1/namespaces/openshift-kube-scheduler/pods/openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
      Timestamp:             2019-05-23T18:47:56Z
      Window:                1m0s
      Events:                <none>
      Copy to Clipboard Toggle word wrap

    • 확장하려는 객체와 연결된 포드에는 지정된 메모리 및 CPU 제한이 포함되어야 합니다. 예를 들면 다음과 같습니다.

      포드 사양 예시

      apiVersion: v1
      kind: Pod
      # ...
      spec:
        containers:
        - name: app
          image: images.my-company.example/app:v4
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
      # ...
      Copy to Clipboard Toggle word wrap

프로세스

  1. 다음과 유사한 YAML 파일을 만듭니다. 이름 <2> , 객체 이름 <4> , 객체 종류 <5> 만 필요합니다.

    크기가 조정된 객체의 예

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      annotations:
        autoscaling.keda.sh/paused-replicas: "0" 
    1
    
      name: scaledobject 
    2
    
      namespace: my-namespace
    spec:
      scaleTargetRef:
        apiVersion: apps/v1 
    3
    
        name: example-deployment 
    4
    
        kind: Deployment 
    5
    
        envSourceContainerName: .spec.template.spec.containers[0] 
    6
    
      cooldownPeriod:  200 
    7
    
      maxReplicaCount: 100 
    8
    
      minReplicaCount: 0 
    9
    
      metricsServer: 
    10
    
        auditConfig:
          logFormat: "json"
          logOutputVolumeClaim: "persistentVolumeClaimName"
          policy:
            rules:
            - level: Metadata
            omitStages: "RequestReceived"
            omitManagedFields: false
          lifetime:
            maxAge: "2"
            maxBackup: "1"
            maxSize: "50"
      fallback: 
    11
    
        failureThreshold: 3
        replicas: 6
      pollingInterval: 30 
    12
    
      advanced:
        restoreToOriginalReplicaCount: false 
    13
    
        horizontalPodAutoscalerConfig:
          name: keda-hpa-scale-down 
    14
    
          behavior: 
    15
    
            scaleDown:
              stabilizationWindowSeconds: 300
              policies:
              - type: Percent
                value: 100
                periodSeconds: 15
      triggers:
      - type: prometheus 
    16
    
        metadata:
          serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9092
          namespace: kedatest
          metricName: http_requests_total
          threshold: '5'
          query: sum(rate(http_requests_total{job="test-app"}[1m]))
          authModes: basic
        authenticationRef: 
    17
    
          name: prom-triggerauthentication
          kind: TriggerAuthentication
    Copy to Clipboard Toggle word wrap

    1
    선택 사항: 사용자 지정 메트릭 자동 확장기 연산자가 "워크로드에 대한 사용자 지정 메트릭 자동 확장기 일시 중지" 섹션에 설명된 대로 복제본을 지정된 값으로 확장하고 자동 확장을 중지하도록 지정합니다.
    2
    이 사용자 지정 메트릭 자동 확장기의 이름을 지정합니다.
    3
    선택 사항: 대상 리소스의 API 버전을 지정합니다. 기본값은 apps/v1 입니다.
    4
    크기를 조정하려는 개체의 이름을 지정합니다.
    5
    종류를 Deployment , StatefulSet 또는 CustomResource 로 지정합니다.
    6
    선택 사항: 사용자 정의 메트릭 자동 확장기가 비밀 등을 보관하는 환경 변수를 가져오는 대상 리소스의 컨테이너 이름을 지정합니다. 기본값은 .spec.template.spec.containers[0] 입니다.
    7
    선택 사항: minReplicaCount가 0 으로 설정된 경우 마지막 트리거가 보고된 후 배포 규모를 0 으로 줄이기 전에 기다려야 하는 기간(초)을 지정합니다. 기본값은 300 입니다.
    8
    선택 사항: 확장 시 최대 복제본 수를 지정합니다. 기본값은 100입니다.
    9
    선택 사항: 축소할 때 최소 복제본 수를 지정합니다.
    10
    선택 사항: "감사 로깅 구성" 섹션에 설명된 대로 감사 로그에 대한 매개변수를 지정합니다.
    11
    선택 사항: 스케일러가 failureThreshold 매개변수에서 정의한 횟수만큼 소스에서 메트릭을 가져오지 못할 경우 대체할 복제본 수를 지정합니다. 폴백 동작에 대한 자세한 내용은 KEDA 문서를 참조하세요.
    12
    선택 사항: 각 트리거를 확인할 간격을 초 단위로 지정합니다. 기본값은 30 입니다.
    13
    선택 사항: 확장된 개체가 삭제된 후 대상 리소스를 원래 복제본 수로 축소할지 여부를 지정합니다. 기본값은 false 이며, 확장된 객체가 삭제될 때 복제본 수는 그대로 유지됩니다.
    14
    선택 사항: 수평 포드 자동 확장기의 이름을 지정합니다. 기본값은 keda-hpa-{scaled-object-name} 입니다.
    15
    선택 사항: "크기 조정 정책" 섹션에 설명된 대로 포드의 크기를 늘리거나 줄이는 속도를 제어하는 데 사용할 크기 조정 정책을 지정합니다.
    16
    "사용자 정의 메트릭 자동 확장기 트리거 이해" 섹션에 설명된 대로 확장의 기준으로 사용할 트리거를 지정합니다. 이 예제에서는 OpenShift Container Platform 모니터링을 사용합니다.
    17
    선택 사항: 트리거 인증 또는 클러스터 트리거 인증을 지정합니다. 자세한 내용은 추가 리소스 섹션에서 사용자 정의 메트릭 자동 확장기 트리거 인증 이해를 참조하세요.
    • 트리거 인증을 사용하려면 TriggerAuthentication을 입력하세요. 이는 기본값입니다.
    • 클러스터 트리거 인증을 사용하려면 ClusterTriggerAuthentication을 입력하세요.
  2. 다음 명령을 실행하여 사용자 지정 메트릭 자동 확장기를 만듭니다.

    $ oc create -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

검증

  • 사용자 지정 메트릭 자동 확장기가 생성되었는지 확인하려면 명령 출력을 확인하세요.

    $ oc get scaledobject <scaled_object_name>
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME            SCALETARGETKIND      SCALETARGETNAME        MIN   MAX   TRIGGERS     AUTHENTICATION               READY   ACTIVE   FALLBACK   AGE
    scaledobject    apps/v1.Deployment   example-deployment     0     50    prometheus   prom-triggerauthentication   True    True     True       17s
    Copy to Clipboard Toggle word wrap

    출력에서 다음 필드를 확인하세요.

    • 트리거 : 사용 중인 트리거 또는 스케일러를 나타냅니다.
    • 인증 : 사용되는 트리거 인증의 이름을 나타냅니다.
    • READY : 크기가 조정된 객체가 크기 조정을 시작할 준비가 되었는지 여부를 나타냅니다.

      • True 이면 크기 조정된 객체가 준비됩니다.
      • False인 경우, 생성한 하나 이상의 객체에 문제가 있어 크기 조정된 객체가 준비되지 않은 것입니다.
    • ACTIVE : 스케일링이 진행 중인지 여부를 나타냅니다.

      • True 이면 크기 조정이 진행됩니다.
      • False인 경우 메트릭이 없거나 생성한 하나 이상의 개체에 문제가 있어 크기 조정이 이루어지지 않습니다.
    • FALLBACK : 사용자 정의 메트릭 자동 확장기가 소스에서 메트릭을 가져올 수 있는지 여부를 나타냅니다.

      • False인 경우 사용자 정의 메트릭 자동 확장기가 메트릭을 가져옵니다.
      • True 인 경우 사용자 지정 메트릭 자동 확장기는 메트릭이 없거나 사용자가 만든 개체 중 하나 이상에 문제가 있기 때문에 메트릭을 가져오고 있습니다.

3.10.2. 작업에 사용자 정의 메트릭 자동 확장기 추가

모든 Job 객체에 대해 사용자 정의 메트릭 자동 확장기를 만들 수 있습니다.

중요

확장된 작업을 사용하여 확장하는 것은 기술 미리 보기 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • Custom Metrics Autoscaler Operator를 설치해야 합니다.

프로세스

  1. 다음과 유사한 YAML 파일을 생성합니다.

    kind: ScaledJob
    apiVersion: keda.sh/v1alpha1
    metadata:
      name: scaledjob
      namespace: my-namespace
    spec:
      failedJobsHistoryLimit: 5
      jobTargetRef:
        activeDeadlineSeconds: 600 
    1
    
        backoffLimit: 6 
    2
    
        parallelism: 1 
    3
    
        completions: 1 
    4
    
        template:  
    5
    
          metadata:
            name: pi
          spec:
            containers:
            - name: pi
              image: perl
              command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      maxReplicaCount: 100 
    6
    
      pollingInterval: 30 
    7
    
      successfulJobsHistoryLimit: 5 
    8
    
      failedJobsHistoryLimit: 5 
    9
    
      envSourceContainerName: 
    10
    
      rolloutStrategy: gradual 
    11
    
      scalingStrategy: 
    12
    
        strategy: "custom"
        customScalingQueueLengthDeduction: 1
        customScalingRunningJobPercentage: "0.5"
        pendingPodConditions:
          - "Ready"
          - "PodScheduled"
          - "AnyOtherCustomPodCondition"
        multipleScalersCalculation : "max"
      triggers:
      - type: prometheus 
    13
    
        metadata:
          serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9092
          namespace: kedatest
          metricName: http_requests_total
          threshold: '5'
          query: sum(rate(http_requests_total{job="test-app"}[1m]))
          authModes: "bearer"
        authenticationRef: 
    14
    
          name: prom-cluster-triggerauthentication
    Copy to Clipboard Toggle word wrap
    1
    작업을 실행할 수 있는 최대 기간을 지정합니다.
    2
    작업에 대한 재시도 횟수를 지정합니다. 기본값은 6 입니다.
    3
    선택 사항: 작업이 병렬로 실행해야 하는 Pod 복제본의 수를 지정합니다. 기본값은 1 입니다.
    • 비병렬 작업의 경우 설정되지 않은 상태로 둡니다. 설정하지 않으면 기본값은 1 입니다.
    4
    선택 사항: 작업을 완료로 표시하는 데 필요한 성공적인 포드 완료 횟수를 지정합니다.
    • 비병렬 작업의 경우 설정되지 않은 상태로 둡니다. 설정하지 않으면 기본값은 1 입니다.
    • 완료 횟수가 고정된 병렬 작업의 경우 완료 횟수를 지정합니다.
    • 작업 큐가 있는 병렬 작업의 경우 설정되지 않은 상태로 둡니다. 설정하지 않으면 기본값은 parallelism 매개변수의 값입니다.
    5
    컨트롤러가 생성하는 포드에 대한 템플릿을 지정합니다.
    6
    선택 사항: 확장 시 최대 복제본 수를 지정합니다. 기본값은 100입니다.
    7
    선택 사항: 각 트리거를 확인할 간격을 초 단위로 지정합니다. 기본값은 30 입니다.
    8
    선택 사항: 성공적으로 완료된 작업의 수를 보관합니다. 기본값은 100입니다.
    9
    선택 사항: 실패한 작업 중 몇 개를 보관할지 지정합니다. 기본값은 100입니다.
    10
    선택 사항: 사용자 정의 자동 확장기가 비밀 등을 보관하는 환경 변수를 가져오는 대상 리소스의 컨테이너 이름을 지정합니다. 기본값은 .spec.template.spec.containers[0] 입니다.
    11
    선택 사항: 확장된 작업이 업데이트될 때마다 기존 작업이 종료되는지 여부를 지정합니다.
    • 기본값 : 자동 확장기는 연관된 확장 작업이 업데이트되면 기존 작업을 종료합니다. 자동 크기 조정기는 최신 사양으로 작업을 다시 생성합니다.
    • 점진적 : 자동 확장기는 연관된 확장 작업이 업데이트되더라도 기존 작업을 종료하지 않습니다. 자동 확장기는 최신 사양으로 새로운 작업을 생성합니다.
    12
    선택 사항: 확장 전략을 지정합니다: default , custom , 또는 precise . 기본값은 default 입니다. 자세한 내용은 다음의 "추가 자료" 섹션에 있는 링크를 참조하세요.
    13
    "사용자 정의 메트릭 자동 확장기 트리거 이해" 섹션에 설명된 대로 확장의 기준으로 사용할 트리거를 지정합니다.
    14
    선택 사항: 트리거 인증 또는 클러스터 트리거 인증을 지정합니다. 자세한 내용은 추가 리소스 섹션에서 사용자 정의 메트릭 자동 확장기 트리거 인증 이해를 참조하세요.
    • 트리거 인증을 사용하려면 TriggerAuthentication을 입력하세요. 이는 기본값입니다.
    • 클러스터 트리거 인증을 사용하려면 ClusterTriggerAuthentication을 입력하세요.
  2. 다음 명령을 실행하여 사용자 지정 메트릭 자동 확장기를 만듭니다.

    $ oc create -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

검증

  • 사용자 지정 메트릭 자동 확장기가 생성되었는지 확인하려면 명령 출력을 확인하세요.

    $ oc get scaledjob <scaled_job_name>
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME        MAX   TRIGGERS     AUTHENTICATION              READY   ACTIVE    AGE
    scaledjob   100   prometheus   prom-triggerauthentication  True    True      8s
    Copy to Clipboard Toggle word wrap

    출력에서 다음 필드를 확인하세요.

    • 트리거 : 사용 중인 트리거 또는 스케일러를 나타냅니다.
    • 인증 : 사용되는 트리거 인증의 이름을 나타냅니다.
    • READY : 크기가 조정된 객체가 크기 조정을 시작할 준비가 되었는지 여부를 나타냅니다.

      • True 이면 크기 조정된 객체가 준비됩니다.
      • False인 경우, 생성한 하나 이상의 객체에 문제가 있어 크기 조정된 객체가 준비되지 않은 것입니다.
    • ACTIVE : 스케일링이 진행 중인지 여부를 나타냅니다.

      • True 이면 크기 조정이 진행됩니다.
      • False인 경우 메트릭이 없거나 생성한 하나 이상의 개체에 문제가 있어 크기 조정이 이루어지지 않습니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat