Kubernetes 缩减特定 pod

问题描述 投票:0回答:2

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

我有两种方法:

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

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

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

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

如何在缩小规模的同时删除特定的 Pod?

kubernetes google-cloud-platform google-kubernetes-engine kubernetes-pod kubernetes-hpa
2个回答
0
投票

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

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

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

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


0
投票

实现此目的的一种方法是向您的 pod 发送消息(或使用其他标准,例如让 POD 在 x 小时后或基于某些条件响应未就绪),以便 pod 在某个时间段内返回未就绪消息活性健康检查。这将阻止请求发送到您的 Pod。它也将在缩小规模的选择列表中名列前茅,HPA 决定是时候缩小规模或者是否诱导缩小规模。

© www.soinside.com 2019 - 2024. All rights reserved.