Kubernetes 部署缩减是如何发生的

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

我正在运行 kubernetes 部署。我们将其称为“my-spboot-deployment”。 此部署有 2 个副本在两个不同的工作节点中运行。 (我已使用节点亲和力进行配置)。这两个工作节点来自两个不同的地理位置。

pod 1 ---> node 1 
pod 2 ---> node 2 

现在我需要将此部署缩减为一个 pod,我的期望是终止在节点 2 中运行的 pod2。但是当我执行

kubectl scale deployment my-spboot-deployment --replicas=1
时,它总是终止在节点 1 中运行的 pod1。

我只需要知道当我们命令缩小规模时,kubernetes 如何决定终止哪个 pod。这只是随机的还是背后有任何算法。

我的第二个问题是,在这种情况下,我怎样才能故意关闭node2中的pod2。有什么可能的方法吗? (我无法关闭这些工作节点中的 docker 或 kubelet 服务。这会影响在这些节点上运行的其他服务)

**我不想通过添加新的节点标签来重新部署。

kubernetes
1个回答
0
投票

问题1: 根据 k8s 官方文档(link),ReplicaSet 控制器在缩小算法中考虑了以下事项。

  1. 待处理(和不可调度)的 Pod 首先缩小规模
  2. 如果设置了controller.kubernetes.io/pod-deletion-cost注解,则值较低的pod将优先出现
  3. 副本较多的节点上的 Pod 排在副本较少的节点上的 Pod 之前。
  4. 如果 Pod 的创建时间不同,则最近创建的 Pod 会排在较旧的 Pod 之前。

问题2: 要设置有关首先删除哪些 pod 的首选项,您可以使用controller.kubernetes.io/pod-deletion-cost 注释(link)。

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