0

我有一个正在运行的 pod (pod-1),从 k8s 部署 (deploy-1) 部署到 k8s node-1。有一天,我想修补此部署的节点关联性。例如,目标节点必须具有标签“data=allowed”。

我的步骤:

  1. 首先将标签 'data=allowed' 添加到 node-1
  2. 将节点关联定义修补到 deploy-1

我的期望是 pod-1 不应该被 k8s 重新调度,因为它已经在 node-1 上,这已经符合节点亲和性规则(步骤 1)。但结果是重新创建了 pod-1,尽管仍在 node-1 上。

如果 live pod/deployment 满足新定义的节点关联规则,是否有任何配置可以防止重新创建?谢谢。

4

1 回答 1

0

由于您想通过向部署添加新标签来更改集群的状态,这意味着您所需的状态已更改,因此,k8s 确保当前状态 === 所需状态。这是基本设计。

为了利用上述功能,我们需要使用声明式方法而不是命令式方法。

例如,在 k8s 集群中最好使用apply操作而不是create操作。现在,如果您希望更改或修改 k8s 资源中的其他字段,它确保依赖字段不会更改或重新启动容器或外部 IP。

我已经添加了进一步研究的参考。

kubectl-apply-vs-kubectl-create

对象管理/

于 2017-12-14T09:02:34.287 回答