3.2. 사용자 정의 메트릭 자동 확장기 연산자 개요
개발자는 Red Hat OpenShift용 Custom Metrics Autoscaler Operator를 사용하여 OpenShift Container Platform이 CPU나 메모리에만 기반하지 않는 사용자 정의 메트릭을 기반으로 배포, 상태 집합, 사용자 정의 리소스 또는 작업에 대한 포드 수를 자동으로 늘리거나 줄이는 방식을 지정할 수 있습니다.
사용자 지정 메트릭 자동 확장 연산자는 Kubernetes 이벤트 기반 자동 확장 연산자(KEDA)를 기반으로 하는 선택적 연산자로, 포드 메트릭 외의 추가 메트릭 소스를 사용하여 워크로드를 확장할 수 있습니다.
사용자 정의 메트릭 자동 확장기는 현재 Prometheus, CPU, 메모리 및 Apache Kafka 메트릭만 지원합니다.
사용자 정의 메트릭 자동 확장 연산자는 특정 애플리케이션의 사용자 정의 외부 메트릭을 기반으로 포드의 크기를 조정합니다. 다른 애플리케이션은 계속해서 다른 확장 방법을 사용합니다. 트리거 (스케일러라고도 함)를 구성합니다. 트리거는 이벤트와 메트릭의 소스이며, 사용자 정의 메트릭 자동 스케일러가 스케일링 방법을 결정하는 데 사용합니다. 사용자 정의 메트릭 자동 확장기는 메트릭 API를 사용하여 외부 메트릭을 OpenShift Container Platform에서 사용할 수 있는 형태로 변환합니다. 사용자 정의 메트릭 자동 확장기는 실제 확장을 수행하는 수평적 포드 자동 확장기(HPA)를 생성합니다.
사용자 정의 메트릭 자동 확장기를 사용하려면 워크로드에 대한 ScaledObject
또는 ScaledJob
객체를 만들어야 합니다. 이는 확장 메타데이터를 정의하는 사용자 정의 리소스(CR)입니다. 확장할 배포 또는 작업, 확장할 메트릭의 소스(트리거), 허용되는 최소 및 최대 복제본 수와 같은 기타 매개변수를 지정합니다.
확장하려는 각 작업 부하에 대해 확장된 개체나 확장된 작업을 하나만 만들 수 있습니다. 또한, 동일한 작업 부하에서 확장된 객체나 확장된 작업과 수평 포드 자동 확장기(HPA)를 함께 사용할 수 없습니다.
사용자 정의 메트릭 자동 확장기는 HPA와 달리 0까지 확장할 수 있습니다. 사용자 지정 메트릭 자동 확장기 CR에서 minReplicaCount
값을 0
으로 설정하면 사용자 지정 메트릭 자동 확장기는 작업 부하를 복제본 1개에서 0개로 축소하거나 복제본 0개에서 1개로 확대합니다. 이것을 활성화 단계 라고 합니다. 복제본이 1개까지 확장된 후에는 HPA가 확장을 제어합니다. 이것을 스케일링 단계 라고 합니다.
일부 트리거를 사용하면 클러스터 메트릭 자동 확장기에 의해 확장되는 복제본 수를 변경할 수 있습니다. 모든 경우에, 활성화 단계를 구성하는 매개변수는 항상 activation 이라는 접두사가 붙은 동일한 문구를 사용합니다. 예를 들어, 임계값
매개변수가 크기 조정을 구성하는 경우 activationThreshold는
활성화를 구성합니다. 활성화 및 확장 단계를 구성하면 확장 정책에 대한 유연성이 향상됩니다. 예를 들어, 지표가 특히 낮은 경우 확장이나 축소를 방지하기 위해 더 높은 활성화 단계를 구성할 수 있습니다.
서로 다른 결정이 내려지는 경우, 활성화 값은 스케일링 값보다 우선순위가 높습니다. 예를 들어 임계값이
10
으로 설정되고 activationThreshold
가 50
인 경우 메트릭이 40을
보고하면 스케일러가 활성화되지 않고 HPA에 4개의 인스턴스가 필요하더라도 포드가 0으로 조정됩니다.
그림 3.1. 사용자 정의 메트릭 자동 확장 워크플로
- 클러스터의 작업 부하에 맞게 확장된 개체 사용자 지정 리소스를 만들거나 수정합니다. 해당 개체에는 해당 작업 부하에 대한 확장 구성이 포함되어 있습니다. OpenShift API 서버는 새 객체를 수락하기 전에 해당 객체가 유효한지 확인하기 위해 사용자 정의 메트릭 자동 확장기 승인 웹훅 프로세스로 객체를 전송합니다. 검증에 성공하면 API 서버는 객체를 유지합니다.
- 사용자 정의 메트릭 자동 확장 컨트롤러는 새롭거나 수정된 확장된 객체를 감시합니다. OpenShift API 서버가 컨트롤러에 변경 사항을 알리면 컨트롤러는 메트릭 데이터의 변경 사항을 확인하기 위해 개체에 지정된 외부 트리거 소스(데이터 소스라고도 함)를 모니터링합니다. 하나 이상의 스케일러가 외부 트리거 소스에서 스케일링 데이터를 요청합니다. 예를 들어, Kafka 트리거 유형의 경우 컨트롤러는 Kafka 스케일러를 사용하여 Kafka 인스턴스와 통신하여 트리거에서 요청한 데이터를 얻습니다.
- 컨트롤러는 크기 조정된 객체에 대한 수평 포드 자동 크기 조정기 객체를 생성합니다. 결과적으로, 수평 포드 자동 확장기(HPA) 운영자는 트리거와 관련된 확장 데이터 모니터링을 시작합니다. HPA는 클러스터 OpenShift API 서버 엔드포인트에서 스케일링 데이터를 요청합니다.
- OpenShift API 서버 엔드포인트는 사용자 정의 메트릭 자동 확장 메트릭 어댑터에 의해 제공됩니다. 메트릭 어댑터가 사용자 지정 메트릭에 대한 요청을 받으면 컨트롤러에 대한 GRPC 연결을 사용하여 스케일러에서 수신한 최신 트리거 데이터를 요청합니다.
- HPA는 메트릭 어댑터에서 수신한 데이터를 기반으로 확장 결정을 내리고 복제본을 늘리거나 줄여 작업 부하를 늘리거나 줄입니다.
- 운영 중에 작업 부하가 확장 지표에 영향을 미칠 수 있습니다. 예를 들어, Kafka 큐에서 작업을 처리하기 위해 작업 부하가 확장되면 작업 부하가 모든 작업을 처리한 후 큐 크기가 줄어듭니다. 결과적으로 작업량이 줄어듭니다.
-
메트릭이
minReplicaCount
값으로 지정된 범위에 있는 경우 사용자 지정 메트릭 자동 확장 컨트롤러는 모든 확장을 비활성화하고 복제본 수를 고정된 수준으로 유지합니다. 메트릭이 해당 범위를 초과하면 사용자 정의 메트릭 자동 확장 컨트롤러가 확장을 활성화하고 HPA가 작업 부하를 확장할 수 있도록 합니다. 스케일링이 비활성화되어 있는 동안 HPA는 아무런 조치도 취하지 않습니다.
3.2.1. Custom Metrics Autoscaler를 위한 사용자 정의 CA 인증서 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 사용자 지정 메트릭 자동 확장 연산자는 자동 생성된 서비스 CA 인증서를 사용하여 클러스터 내 서비스에 연결합니다.
사용자 정의 CA 인증서가 필요한 오프클러스터 서비스를 사용하려면 필요한 인증서를 구성 맵에 추가할 수 있습니다. 그런 다음 사용자 정의 메트릭 자동 확장기 설치 에 설명된 대로 KedaController
사용자 정의 리소스에 구성 맵을 추가합니다. 운영자는 시작 시 해당 인증서를 로드하고 운영자가 신뢰하는 인증서로 등록합니다.
구성 맵에는 하나 이상의 PEM으로 인코딩된 CA 인증서가 포함된 하나 이상의 인증서 파일이 포함될 수 있습니다. 또는 각 인증서 파일에 대해 별도의 구성 맵을 사용할 수 있습니다.
나중에 추가 인증서를 추가하기 위해 구성 맵을 업데이트하는 경우 변경 사항을 적용하려면 keda-operator-*
포드를 다시 시작해야 합니다.