首页 > 解决方案 > Kubernetes 缩小特定 pod

问题描述

我有一个可以有多个副本 pod 的 Kubernetes 部署。我希望根据我的 python 应用程序中的一些逻辑(而不是 hpa 中的自定义指标)水平地增加和减少 pod。

我有两种方法:

  1. 使用 Horizo​​ntal Pod Autoscalar 并使用 kubernetes API 在我的应用程序中更改 minReplicas、maxReplicas
  2. 使用 API 直接更新我的部署中的“/spec/replicas”字段

以上两件事都适用于高档和低档。

但是,当我缩小时,我想删除一个特定的 Pod,而不是任何其他 Pod。

如果我在 HPA 中更新 minReplicas maxReplicas,那么它会随机删除一个 pod。当我更新部署中的 /spec/replicas 字段时也是如此。

如何在缩小时删除特定的 pod?

标签: kubernetesgoogle-cloud-platformgoogle-kubernetes-enginekubernetes-podkubernetes-hpa

解决方案


我不知道有任何方法可以确保在缩减期间删除 ReplicaSet 中的特定 pod。您可以使用 StatefulSet 来实现此行为,它始终会在缩减时删除最后一个 pod。

例如,如果我们有一个缩放到 3 的 StatefulSet foo,我们将拥有 pod:

  • foo-0
  • foo-1
  • foo-2

如果我们将 StatefulSet 缩放到 2,控制器将删除 foo-2。但请注意,StatefulSet 还有其他一些限制需要注意。


推荐阅读