GCP - 使用 HPA 根据自定义日志记录指标扩展 GKE pods

GCP - Scale GKE pods based on custom logging metric using HPA

我想在 GKE HPA 上使用自定义日志指标。 Metrics 可以在 Metrics Explorer 上查看,但无法在 HPA 上使用。我们已经安装了自定义指标适配器,并且我们能够成功使用其他自定义指标(例如 kubernetes.io|pod|network|received_bytes_count)进行缩放。下图显示了我想在 HPA

上使用的自定义指标的指标浏览器图表

此指标是根据应用程序日志创建的

使用以下 HPA yaml 来使用该指标

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name:   "similar-products-rts-hpa"
  namespace: relevancy
spec:
  behavior:
    scaleUp:
      stabilizationWindowSeconds: 120
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: similar-products
  minReplicas: 3
  maxReplicas: 6
  metrics:
    - type: Pods
      pods:
        metric:
          name: "logging.googleapis.com|user|Similar_Products(RTS)_Inbound_Request_Count"
        target:
          type: AverageValue
          averageValue: 25

请找出下面的错误

The HPA was unable to compute the replica count: unable to get metric logging.googleapis.com|user|Similar_Products(RTS)_Inbound_Request_Count: unable to fetch metrics from custom metrics API: googleapi: Error 400: The supplied filter does not specify a valid combination of metric and monitored resource descriptors. The query will not return any time series., badRequest

不幸的是,upper case letters in metric names are not supported 因为 HPA 将指标视为伪资源,这意味着它们不区分大小写。我还认为括号对于指标名称也是无效字符。

您是否可以将指标名称更改为小写并删除括号?也许像 similar_products_rts_inbound_request_count?

编辑: 我刚刚注意到的另一个问题是指标是容器指标而不是 pod 指标。在 this change, it was necessary to modify the custom metrics adapter deployment to support container metrics. You can either update your deployment with the current manifest 之前,或者您可以通过添加 --fallback-for-container-metrics=true:

来修改当前部署
spec:
      serviceAccountName: custom-metrics-stackdriver-adapter
      containers:
      - image: gcr.io/gke-release/custom-metrics-stackdriver-adapter:v0.12.0-gke.0
        imagePullPolicy: Always
        name: pod-custom-metrics-stackdriver-adapter
        command:
        - /adapter
        - --use-new-resource-model=true
        - --fallback-for-container-metrics=true
        resources:
          limits:
            cpu: 250m
            memory: 200Mi
          requests:
            cpu: 250m
            memory: 200Mi