我正在创建一个自主重新调度器,它能够根据资源使用情况、网络指标等随时随地重新调度 Pod。我的 Kubernetes 集群目前只有 5 个部署作为测试设置,每个部署只有一个 Pod 实例(副本:1)。我能够在我的系统中生成一个新的调度,并通过执行以下补丁将其应用于集群;
kubectl patch deployment fake-microservice-1 -p "{\"spec\":{\"template\":{\"spec\":{\"nodeSelector\":{\"kubernetes.io/hostname\":\"node1\"}}}}}"
此补丁成功将 fake-microservice-1
部署中的 Pod 移至 node1
。
接下来我要实现的是,如果部署中有多个 Pod 副本,我可以将部署中的每个单独 Pod 移动到特定节点。例如,假设 fake-microservice-1
部署有 2 个副本(2 个 Pod)。例如,我如何将 Pod 中的一个移动到 node1
,另一个移动到 node4
。
我曾尝试修补单个 Pod 的 nodeAffinity
,但这是不可能的,因为 Kubernetes 不允许在 Pod 运行时更新此值。
是否可以通过修补某些值、添加标签或通过其他方式将部署中的单个 Pod 移动到特定节点?
并不是说它太重要,而是所有这些都是在 Go 中开发的。