여러 자동 확장 메커니즘을 사용하여 K8s 클러스터 자동 확장

Aug 20 2020

최근 실험에서 KEDA와 HPA라는 두 가지 메커니즘을 사용하여 K8 클러스터를 자동 확장하려고했습니다 (아래 참조). HPA OOB 리소스 메트릭을 사용하여 포드 리소스 사용률 (메모리 및 CPU)을 기반으로 클러스터를 확장하고 KEDA를 사용하여 사용자 지정 메트릭을 기반으로 자동 확장하고 싶었습니다.

내 배포가 성공하고 클러스터가 정상이고 작동하더라도. 자동 확장이 시작되었을 때 클러스터가 무너졌습니다! 포드는 지속적으로 프로비저닝 된 다음 프로비저닝 해제되었습니다.이 상태는 클러스터에 대한 트래픽을 중지 한 후에도 계속되었습니다. 나는 다시 정상이되기 전에 쿨 다운 기간을 기다려야했다.

이 주제에 대한 공식 문서를 찾지 못했기 때문에 여기에서 요청했습니다.

내 질문 :

  • 여러 메커니즘을 사용하여 자동 확장하도록 k8s 클러스터를 구성 할 수 있습니까?
  • 그렇다면 내가 뭘 잘못 했나요?

이것은 K8s 버전 1.15.11 및 KEDA 1.4.1에있었습니다.

apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
  name: {{ $fullName }} labels: deploymentName: {{ $fullName }}
    {{- include "deployment.labels" . | nindent 4 }}
spec:
  scaleTargetRef:
    deploymentName: {{ $fullName }} pollingInterval: {{ .Values.scaleobject.pollingInterval }} cooldownPeriod: {{ .Values.scaleobject.cooldownPeriod }} minReplicaCount: {{ .Values.scaleobject.minReplicaCount }} maxReplicaCount: {{ .Values.scaleobject.maxReplicaCount }} triggers: - type: prometheus metadata: serverAddress: {{ tpl .Values.scaleobject.serverAddress . | quote }} metricName: access_frequency threshold: "{{ .Values.scaleobject.threshold }}" query: {{ tpl .Values.scaleobject.query . | quote }} --- apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: resource-utilization-scaling namespace: default spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: {{ $fullName }}
  minReplicas: {{ .Values.scaleobject.minReplicaCount }}
  maxReplicas: {{ .Values.scaleobject.maxReplicaCount }}
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: {{ .Values.scaleobject.cpuUtilization }}
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: {{ .Values.scaleobject.memUtilization }}

답변

3 Rico Aug 20 2020 at 06:26

KEDA 는 아직 직접 클러스터 자동 확장 처리를 지원하지 않으므로 예측할 수 없습니다. 본질적으로 KEDA와 클러스터 자동 확장 처리의 정보가 공유되지 않는 두 가지 정보가 있으며 그중 일부는 특정 시간에 동의하지 않을 수 있습니다.

내 의견으로는 모든 자동 확장 처리가 모든 불일치를 따라 잡을 수 있도록 전체 자동 확장 속도를 늦추는 것이 가장 좋습니다. 예를 들어, 같은 것들을 사용 할 수 있습니다 재사용 대기 시간이 일부 자원 고갈을 방지하기 위해 배율이 자동 그룹.

✌️