kubernetes - 在同一集群中使用具有不同自动扩缩器 API 的不同 pod 是否有任何陷阱
问题描述
我们有使用Autoscaling/v2beta1
API 运行的 pod。为了利用基于自定义指标的 HPA,我们希望将其Autoscaling/v2beta2
用于一些 pod。由于还有一些其他的 Pod 不急于升级,我们希望将它们留Autoscaling/v2beta1
在同一个集群的 yaml 中。我认为这应该没有问题。像这样使用它有什么陷阱吗?
解决方案
一般来说, 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 中删除。您可以在此拉取请求中检查它
推荐阅读
- reactjs - 打字稿:定义嵌套对象的接口“需要一个键”
- spring-boot - 无法为使用 maven-shaded-plugin 创建的 jar 获取条目 BOOT-INF/lib 的嵌套存档
- javascript - 从 VueJS 的父组件中引用子组件的索引
- javascript - Fetch 不发送帖子数据
- javascript - Access variable's value by Prototype in Node
- webgl - Render several graphs from single vertex buffer
- r - 计算特定元素是否在给定范围内?
- java - 如何让eclipse在打开时将依赖的maven项目部署到tomcat?
- raku - Raku(即Perl6)中是否有范围/ Num等的“钳位”方法/子?
- angular - 自定义指令 - 解析器错误:得到插值 ({{}}) 表达式应为