簡體   English   中英

Azure Kubernetes 服務:如何將 Pod 從 Spot 節點池自動移動到常規節點池?

[英]Azure Kubernetes Service: How to move pod from Spot node pool to Regular node pool automatically?

我的 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換成你找到的label)

對於您希望繼續調度到現場節點的所有 pod(例如系統 pod),添加以下容忍度以允許它們繼續:

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

對於您在問題中提到的 Pod,您不想在它出現故障后將它們重新安排回 Spot 節點,因此不要在它們上添加容忍度。

假設您的 pod 由部署或有狀態集(或任何其他 controller 在丟失 pod 時注意重新安排)控制,當您的 pod 將被從一個點節點驅逐出它時,將替換的 pod它將無法再被安排到現場節點,並且鑒於唯一的其他選擇是常規節點,它們將被安排在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM