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