gpt4 book ai didi

Azure Kubernetes 服务 : How to move pod from Spot node pool to Regular node pool automatically?

转载 作者:行者123 更新时间:2023-12-03 02:27:19 24 4
gpt4 key购买 nike

我的 azure kubernetes 集群中有 2 个节点池。其中一个节点池是 Spot VM 节点池,另一个是常规 VM 节点池。我在现场节点池上部署了 2 个 Pod。所以,我希望如果现场节点池被驱逐,那么同一节点池上的 Pod 将自动重新调度到常规节点池上?

我了解了节点关联性和节点选择器,它们用于在某些节点中运行 Pod。如果 kubernetes 提供此功能,以便在 Spot 节点池/Spot 实例被驱逐时自动将 Pod 迁移到另一个节点,那将会很有帮助。

有人知道我们如何在 kubernetes 中实现这一目标吗?

谢谢。

使用的 Kubernetes 版本 1.18.14

最佳答案

您可以在现场节点上使用 NoSchedule 污点。这不会从节点中驱逐任何正在运行的 Pod,但也不会为它们调度任何新的 Pod(除非您专门指定匹配的容忍度)。

您可以查看此文档页面以了解更多详细信息:https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/

但总的来说,您要做的事情如下:

点节点上应该有一个唯一的标签,如果您描述其中一个节点,您就可以找到它。使用它来使用 NoSchedule 污点来污染所有节点,如下所示

kubectl taint nodes node1 key1=value1:NoSchedule 

(将 key1=value1 替换为您找到的标签)

对于您想要继续调度到现场节点的所有 pod(例如系统 pod),请添加以下容忍以允许它们继续:

tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"

对于您在问题中提到的 Pod,您不希望在其出现故障后将它们重新安排回现场节点,因此不要在它们上添加容忍度。

假设您的 Pod 由部署或有状态集(或任何其他在丢失 Pod 时小心重新安排的 Controller )控制,当您的 Pod 因 Spot 节点消失而被逐出时,Pod将取代它的节点将无法再被调度到现货节点,并且考虑到唯一的其他选择是常规节点,它们将被调度到那里。

关于Azure Kubernetes 服务 : How to move pod from Spot node pool to Regular node pool automatically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66454918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com