[英]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.