如何在 Google Cloud 中启用自动缩放/v2beta2

如何在 Google Cloud 中启用自动缩放/v2beta2

在按照教程操作时发现这里我发现我需要 autoscaling/v2beta2 来为水平 Pod 自动缩放器提供自定义指标,但不知道如何启用它。

环境详情:

  • Google Cloud 平台
  • Kubernetes 版本 1.13.7-gke.8(最新)

我尝试了什么:

  • 使用“kubectl api-versions”,我检查了为自动缩放启用了哪些 API 组,并且只有以下内容:autoscaling/v1 autoscaling/v2beta1

  • 我发现以下内容文档上面写着“某些资源和 API 组默认处于启用状态。可以通过在 apiserver 上设置 --runtime-config 来启用或禁用它们。--runtime-config 接受逗号分隔的值。”。看一下kube-apiserver 命令文档,我可以找到一种方法来为 gcloud 使用此命令

答案1

如果你在 GKE 上遇到启用 API 的问题

autoscaling/v1
autoscaling/v2beta1

虽然 GKE 版本已经发布,但1.12 to 1.14你无法应用清单,autoscaling/v2beta2但是你可以应用类似的东西

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: core-deployment
  namespace: default
spec:
  maxReplicas: 9
  minReplicas: 5
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: core-deployment
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageValue: 500m

如果你想根据利用率

    apiVersion: autoscaling/v2beta1
    kind: HorizontalPodAutoscaler
    metadata:
      name: core-deployment
      namespace: default
    spec:
      maxReplicas: 9
      minReplicas: 5
      scaleTargetRef:
        apiVersion: extensions/v1beta1
        kind: Deployment
        name: core-deployment
      metrics:
      - type: Resource
        resource:
          name: cpu
          targetAverageUtilization: 80

答案2

关于您的 API 版本:没问题,使用 autoscaling/v2beta1 您甚至可以根据外部指标(例如 Stackdriver)进行自动缩放。

关于您的问题:我不确定您说的“我无法启用它”是什么意思。从您链接的同一页面,您可以找到所需清单的 80%:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

此清单表示“拥有 1 到 10 个副本,基于 CPU 利用率扩展 scaleTargetRef 中描述的内容”。您还可以添加基于内存的指标,它将以“或”方式工作(如果两个指标中的一个超过阈值,则会发生扩展)。最后,您还可以添加一个指标,该指标type: External将成为您的 Stackdriver 源(例如 HTTP 请求数、队列中的消息数......)。通常建议这样做,因为基于 CPU 的扩展是无效的。

一旦您有了清单,只需使用 kubectl apply -f hpa.yaml 即可启用它。

这就是为什么我说我没有完全理解你的问题,你的意思是你找不到合适的清单?(我在这里写的那个也不是“合适的”)

我找不到来源(这是一篇关于带有外部指标的 HPA 的文章),但这是我的 HPA 的清单:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
  namespace: myapp
spec:
  minReplicas: 3
  maxReplicas: 15
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: myapp
  metrics:
    - type: Resource
      resource:
        name: memory
        targetAverageUtilization: 60
    - type: External
      external:
        metricName: loadbalancing.googleapis.com|https|request_count
        metricSelector:
          matchLabels:
            resource.labels.url_map_name: k8s-um-myapp-myapp-ingress--64658eaf6b9dce0
        targetAverageValue: 100

我根据 RAM 和请求进行扩展。

高血压

相关内容