我有两个节点池:NP1
和NP2
。我有一个StatefulSet
带有 pod,它们使用序数索引从外部配置源检索自己的配置。
在某些情况下,我需要将各个 Pod 重新安排为 或NP1
。NP2
关于哪个 Pod 应在哪个节点池上运行的实际信息存储在 Consul KV 对象中。
我可以编写一个 Kubernetes Operator,它订阅该对象并进行修改,StatefulSet
以便在更新 Consul KV 对象时将各个 Pod 重新安排到正确的节点池。我的问题是如何nodeAffinity
为每个 Pod 定义不同的内容?
我已经看到了一些使用topologyKey
with的示例podAntiAffinity
,但在我的例子中,应该在哪个节点池上调度 pod 的决定是基于完全来自 kubernetes 集群外部的数据。
答案1
据我所知,你可以使用变异 webhook作为丹尼尔评论中提到:
我很确定只有 Mutating Webhook 才能允许您做这样的动态技巧;我认为 OPA 对该用例做出了一些让步。
您还可以在这里找到有关动态准入控制。