首页 > 解决方案 > 在同一集群中使用具有不同自动扩缩器 API 的不同 pod 是否有任何陷阱

问题描述

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

标签: kuberneteshorizontal-pod-autoscaling

解决方案


一般来说, Harsh Manvar已经回答了您的问题。我将添加更多细节和关注点。

回答您的问题HorizontalPodAutoscaler:是的,您可以在 yamls中使用不同的 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 中删除。您可以在此拉取请求中检查它


推荐阅读