Kubernetes
節點池選擇
我有一個包含許多節點池的 Kubernetes 集群。有時部署失敗是因為 Kubernetes 選擇的選定節點池沒有足夠的可用資源。
是否有某種方法可以強制 Kubernetes 選擇一個節點池,該節點池具有整個 Pod 請求的資源量?
您可以約束 Pod,使其只能在一組特定的節點上執行。有幾種方法可以做到這一點,推薦的方法是使用標籤選擇器。
您可以使用以下任何一種方法來選擇 Kubernetes 調度特定 Pod 的位置:
- 與節點標籤匹配的nodeSelector欄位
- 親和和反親和
- 節點名稱欄位
節點選擇器指定鍵/值對的映射,這些鍵/值對使用節點上的自定義標籤和 pod 中指定的選擇器定義。
要使 pod 有資格在節點上執行,pod 必須具有與節點上的標籤相同的鍵/值節點選擇器。
注意:您不能將節點選擇器直接添加到現有的計劃 pod。
nodeSelector 是將 Pod 約束到具有特定標籤的節點的最簡單方法,而Affinity 和 anti-affinity擴展了您可以定義的約束類型。親和性特徵包括兩種類型的親和性:
- 節點親和性功能類似於 nodeSelector 欄位,但更具表現力並允許您指定軟規則。
- pod 間親和性/反親和性允許您將 Pod 限制在其他 Pod 上的標籤上。
對於節點名,您可以參考連結以獲取更多資訊。
節點親和性是 Pod 的一個屬性,它將它們吸引到一組節點,並且所述節點選擇器用於約束 pod。因此,您可以使用Taints 和 Tolerations。
污點是相反的,因為它們允許一個節點排斥一組 pod。Tolerations 應用於 Pod,並允許 Pod 調度到具有匹配 taints 的節點上。Taint 和 Tolerations 一起工作以確保 Pod 不會被調度到不適當的節點上。一個或多個污點應用於節點。這標誌著節點應該拒絕任何不容忍污點的 pod。
您可以參考連結以獲取有關污點和容差的更多資訊。