控制在 Kubernetes 中的 HPA 扩展期间纵向扩展的 ReplicaSet

control which replicaset is scaled up during HPA scaling in kubernetes

提问人:Varun Mathur 提问时间:11/17/2023 更新时间:11/17/2023 访问量:22

问:

我有一个配置了 HPA 和滚动更新的部署。我的一次部署将一个糟糕的更改推送到此部署,这触发了新副本集的创建。这个新的副本集试图扩大规模,但没有一个 Pod 准备好了,所以旧的副本集仍然挂在身边,我从旧副本集中获得了准备好的 Pod。

到目前为止,一切都如预期的那样。

但是,此部署接收了大量流量,需要从 1 个副本扩展到 4 个副本。旧的副本集(好)有 1 个副本,新副本集(坏)有 2 个副本,没有一个可以启动。因此,部署最终只获得了 2 个副本和可用性损失。

HPA 规模如何选择要增加副本的副本集?如果我们有办法控制这种情况,我们本可以防止服务错误。

Kubernetes 部署 HPA

评论


答:

0赞 Ron Etch 11/21/2023 #1

根据官方文档,我认为您可以使用 HPA YAML 文件上的 spec.selector 将特定 pod 定位为根据 中的详细信息进行自动缩放。您可以在下面查看示例 YAML:scaleTargetRef

---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-hpa
spec:
  scaleTargetRef:
    kind: Deployment
    name: my-deployment
  targetAverageUtilization: 80
  selector:
    matchLabels:
      app: my-app

需要注意的是,HPA 是基于“需求”水平扩展的,因此工作负载的增加意味着要部署更多的 Pod。

此外,HPA 不会影响无法缩放的对象,例如 Daemonset。