【问题标题】:Is there any pitfalls to use different pods with different autoscaler APIs in the same cluster在同一集群中使用具有不同自动扩缩器 API 的不同 pod 是否有任何陷阱
【发布时间】:2021-05-20 04:42:00
【问题描述】:

我们的 pod 使用 Autoscaling/v2beta1 API 运行。为了利用基于自定义指标的 HPA,我们希望对一些 pod 使用 Autoscaling/v2beta2。由于还有一些其他的 Pod 不急于升级,我们希望将它们与 Autoscaling/v2beta1 留在同一集群的 yaml 中。我认为这应该没有问题。这样使用有没有什么坑?

【问题讨论】:

    标签: kubernetes horizontal-pod-autoscaling


    【解决方案1】:

    是的,不会有任何问题,但在同一部署上或为同一 POD 创建不同的 HPA 可能会产生判断问题。

    如果存在自定义指标要求,则使用不同 API 版本的 HPA 将起作用。

    【讨论】:

      【解决方案2】:

      一般Harsh Manvar 已经回答了您的问题。我将添加更多细节和疑虑。

      回答您的问题:是的,您可以在您的 yamls 中使用不同的 HorizontalPodAutoscaler API 版本。然而,它很有可能会以低效的支持和更高的错误机会告终。我建议将所有内容移至v2beta2(最后一点是关于弃用和将来删除v2beta1)。

      下一点是,例如,如果您错误地将不同的 HPA 应用于一个部署,它们将并行工作并以相同的方式做出反应(这是 CPU 目标设置相同时)。请看下面的例子。 (但请记住,这是一个简单的示例,如果它有很多指标,它可能会出人意料地工作)

      hpa.yaml

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

      kubectl get hpa --watch的输出:

      NAME          REFERENCE               TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
      php-apache    Deployment/php-apache   0%/50%    1         10        1          2m28s
      php-apache2   Deployment/php-apache   0%/50%    1         10        1          2m28s
      php-apache2   Deployment/php-apache   251%/50%   1         10        1          4m16s
      php-apache    Deployment/php-apache   251%/50%   1         10        4          4m16s
      php-apache2   Deployment/php-apache   251%/50%   1         10        6          4m31s
      php-apache    Deployment/php-apache   251%/50%   1         10        6          4m31s
      php-apache2   Deployment/php-apache   52%/50%    1         10        6          5m16s
      php-apache    Deployment/php-apache   52%/50%    1         10        6          5m16s
      php-apache2   Deployment/php-apache   54%/50%    1         10        6          6m16s
      php-apache    Deployment/php-apache   54%/50%    1         10        6          6m16s
      php-apache2   Deployment/php-apache   56%/50%    1         10        6          7m16s
      php-apache    Deployment/php-apache   56%/50%    1         10        7          7m16s
      php-apache2   Deployment/php-apache   56%/50%    1         10        7          7m31s
      php-apache2   Deployment/php-apache   46%/50%    1         10        7          8m16s
      php-apache    Deployment/php-apache   46%/50%    1         10        7          8m16s
      php-apache2   Deployment/php-apache   43%/50%    1         10        7          9m17s
      php-apache    Deployment/php-apache   43%/50%    1         10        7          9m17s
      php-apache2   Deployment/php-apache   36%/50%    1         10        7          10m
      php-apache    Deployment/php-apache   36%/50%    1         10        7          10m
      php-apache2   Deployment/php-apache   0%/50%     1         10        7          11m
      php-apache    Deployment/php-apache   0%/50%     1         10        7          11m
      php-apache2   Deployment/php-apache   0%/50%     1         10        7          15m
      php-apache    Deployment/php-apache   0%/50%     1         10        6          15m
      php-apache2   Deployment/php-apache   0%/50%     1         10        6          15m
      php-apache    Deployment/php-apache   0%/50%    1         10        1          17m
      php-apache2   Deployment/php-apache   0%/50%    1         10        1          17m
      

      最后一点v2beta1 计划在 1.19 中被弃用,以支持 v2beta2。现在它被重新安排在 1.25 中删除。您可以在this pull request查看它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-24
        • 1970-01-01
        • 2011-01-18
        • 2021-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多