簡體   English   中英

為什么kube.netes中沒有nodepool的概念?

[英]Why there is no concept of nodepool in Kubernetes?

我可以看到 GKE、AKS、EKS 都內置了節點池概念,但 Kube.netes 本身不提供這種支持。 這背后的原因可能是什么?

我們通常需要不同的節點類型來滿足不同的要求,例如:

一些 pod 需要 CPU 或 Memory 密集和優化的節點。 一些 pod 正在處理 ML/AI 算法並且需要支持 GPU 的節點。 這些啟用 GPU 的節點應該僅由某些 pod 使用,因為它們很昂貴。 一些 pod/jobs 希望利用 spot/preemptible 節點來降低成本。

Kube.netes 沒有內置這種支持背后有什么具體原因嗎?

節點池是雲提供商特定的技術/分組。

Kube.netes 旨在部署在各種基礎設施上,包括本地/裸機。 在這種情況下,節點池沒有任何意義。

節點池通常是一種為 Kube.netes 提供一組相同配置的節點以在集群中使用的方法。

您可以使用節點選擇器和/或污點/容忍度來指定您想要的節點。

因此,您可以使用 GPU 污染節點,然后要求 Pod 具有匹配的容忍度,以便調度到這些節點上。 節點池在這里不會有什么不同。 您可以將物理服務器加入集群並以完全相同的方式污染該節點——Kube.netes 認為這與同樣注冊到集群的基於 Google、Amazon 或 Azure 的節點沒有任何不同,除了一些節點上的不同注釋。

正如 Blender Fox 提到的,節點組更具體到雲提供商分組/目標選項。

在 AWS 中,我們有節點組或目標組,而在 GKE 托管/非托管節點組中。

您設置 Cluster Autoscaler,它會增加和減少節點池或節點組中的計數。

如果您在On-prem上運行Kube.netes ,則可能沒有節點池選項,因為節點組主要是雲中的一組虛擬機。 在本地裸機上,也可以用作工作節點。

為了向上和向下擴展,K8s 中有集群自動縮放器(CA 通過創建/刪除虛擬機從集群中添加或刪除節點),它使用雲提供商節點組 API,而在裸機上它可能無法簡單地工作。

每個提供者都有自己的實現和邏輯,這些實現和邏輯由K8s通過標志--cloud-provider 代碼鏈接確定

因此,如果您在本地私有雲上,請編寫自己的雲客戶端和界面。

節點組不是必需的,但更多的是雲提供商端的實現。

對於場景

一些 pod 需要 CPU 或 Memory 密集和優化的節點。 一些 pod 正在處理 ML/AI 算法並且需要支持 GPU 的節點。 這些啟用 GPU 的節點應該僅由某些 pod 使用,因為它們很昂貴。 一些 pod/jobs 希望利用 spot/preemptible 節點來降低成本。

您可以根據需要使用Taints-tolerationAffinityNode 選擇器在特定類型的節點上安排 POD。

暫無
暫無

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

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