Kubernetes 集群自动缩放器和水平吊舱自动缩放器协同工作

Kubernetes 集群自动缩放器和水平吊舱自动缩放器协同工作,kubernetes,autoscaling,horizontal-pod-autoscaling,Kubernetes,Autoscaling,Horizontal Pod Autoscaling,我有一个激活了cluster Autoscaler的群集,我的一个部署有HPA 这是HPA的定义: kind: HorizontalPodAutoscaler metadata: name: hpa-resource-metrics-cpu spec: scaleTargetRef: apiVersion: apps/v1 kind: ReplicationController name: hello-hpa-cpu minReplicas: 1

我有一个激活了cluster Autoscaler的群集,我的一个部署有HPA

这是HPA的定义:

kind: HorizontalPodAutoscaler
metadata:
  name: hpa-resource-metrics-cpu 
spec:
  scaleTargetRef:
    apiVersion: apps/v1 
    kind: ReplicationController 
    name: hello-hpa-cpu 
  minReplicas: 1 
  maxReplicas: 10 
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50
现在,在我的集群很少使用的情况下,这意味着此部署将只有1个可用副本

而且,由于集群的使用率不高,可能是包含该副本的节点计划删除(缩小规模)

在这种情况下,这将使我的部署有一个停机时间(当集群节点被删除时,部署的唯一副本也会被删除,因此需要在新的pod中重新安排)。我不希望这种情况发生(停机)

从这个问题来看,Pod中断预算似乎不适用于只有一个副本的部署

所以我的问题的唯一解决方案是将
minReplicas
设置为2


或者我还可以做些什么来防止停机,并且仍然让
minReplicas
as 1?

Kubernetes有一个。群集自动缩放器(或管理员)使节点脱机是一种“自愿”中断(与节点断电不同),因此您可以对其进行一些控制。如果你:

apiVersion:policy/v1beta1 种类:POD预算 元数据: 姓名:你好,pdb 规格: 可利用量:1 选择器: 火柴标签: 应用程序:你好 您已指定,当群集尝试执行自愿中断时,不应少于一个带有标签的pod
app:hello


这样做可以防止群集自动缩放器实际删除节点。PDB文档中的示例通常有多个副本,并且可以容忍其中一些副本处于脱机状态,因此可以删除3个副本中的1个副本,然后在其他节点上重新创建。有一个扩展示例,集群中没有能力启动重新调度的pod,这会阻止破坏节点。您可以将HPA设置为
minReplicas:3
,以避免出现这种情况,即使这意味着您的系统将在最安静的时间过度配置。

HA和部署的一个副本似乎相互矛盾。如果需要HA,则需要多个副本,否则会出现停机,这可能是由于节点的磁盘故障、版本升级导致的节点升级等原因造成的。