[英]Azure Kubernetes - replica vs HPA?
副本和 HPA 有什么区别?
对于示例,以下部署配置了 3 个副本
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
spec:
**replicas: 3**
以及以下具有 2-20 个副本的 HPA
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: hello
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hello
**minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 80**
这是否意味着上述 HPA 将控制副本的总数,而与“deployment.yaml”中定义的内容无关? 当 HPA 扩大规模时,它会增加一个“部署”副本还是三个“部署”副本?
是的,答案是,根据我对 AKS 的观察。
deployment.yaml 会询问所需的副本数量,而 hpa 会根据配置的指标对此进行更改。
部署对象中的所需状态或副本(当您执行 kubectl get deploy 时)将始终提供当前副本以及所需副本,并且您可以在那里看到负载的变化。
所以它将从 3 个实例开始,然后它会尝试保持最小副本始终可用(因此 hpa 中的最小副本和部署文件中的副本保持不变),然后根据提供的指标的负载计算,它将扩展向上或向下到最小或最大定义的水平。
重要的是要添加到先前的答案,即部署spec.replicas
和 HPA spec.minReplicas
可能会发生冲突。 当两者都配置时,可能会出现一些意外行为。
如果有 HPA,它会根据其设置管理副本数量。 但是,虽然部署由 HPA 控制,但如果您应用具有设定数量的副本的部署配置,它将覆盖当前所需的副本数量,并且可能会意外地扩展您的部署。
例如,如果您将部署spec.replicas
设置为 1,并且 HPA 当前将您的部署扩展到 5 个副本,那么当您应用部署配置时,它会将所需副本的数量设置为 1 并立即缩减您的部署。 然后 HPA 收回控制权,将所需的副本数量更改回 5 并再次扩大规模。 这是这个问题在我的 Grafana 仪表板上的外观,它跟踪正在运行的副本数量
有关该主题的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.