Kf 應用程式可部署在叢集中的專屬節點。如果您需要在應用程式 Pod 降落的節點上進一步控管,就必須使用這項功能。例如:
- 如果您要為不同應用程式共用同一個叢集,但希望為特定應用程式提供專屬節點。
- 如要為特定機構 (Kf 聊天室) 建立專屬節點。
- 如果您想指定特定作業系統 (例如 Windows)。
- 如果您想將兩個經常通訊的不同服務 Pod 放置在同一位置。
為了啟用運算分隔,Kf 會使用 Kubernetes nodeSelector。如要使用這項功能,請先在您希望應用程式 Pod 降落的節點或節點集區中新增標籤,然後在 Kf 空間中新增相同的符合條件標籤。然後,在這個空間中安裝的所有應用程式都會連至標籤相符的節點。
Kf 會建立 Kubernetes Pod 來執行每個 Kf 版本,您可以使用 buildNodeSelector 功能隔離運算資源,只執行建構 Pod。其中一個用途是將 Build 容器隔離,以便在配備 SSD 的節點上執行,同時在其他節點上執行應用程式容器。BuildNodeSelectors 功能可在叢集中提供運算資源最佳化和彈性。請參閱本頁的「設定 BuildNodeSelector 和建構節點集區」一節。
在 Kf 叢集中設定 nodeSelector
根據預設,運算分隔功能會停用。請按照下列程序設定標籤和 nodeSelector。
在您要應用程式 Pod 降落的節點上新增標籤 (
distype=ssd
)。kubectl label nodes nodeid disktype=ssd
在 Kf 空間中新增相同的標籤。此時,在這個空間中部署的所有應用程式都會登入符合資格的節點。
kf configure-space set-nodeselector space-name disktype ssd
您可以再次執行相同指令,新增多個標籤。
檢查標籤是否已設定。
kf configure-space get-nodeselector space-name
從聊天室中刪除標籤。
kf configure-space unset-nodeselector space-name disktype
覆寫 Kf 堆疊的 nodeSelector
您可以根據用於建構及封裝應用程式的堆疊 (Buildpack),進一步指定 Kf 應用程式的部署目標。舉例來說,如果您希望使用 spaceStacksV2
建構的應用程式,可在 Linux 核心 4.4.1 的節點上執行,堆疊上的 nodeSelector
值會覆寫在空間上設定的值。
如何設定堆疊上的 nodeSelector
:
編輯 Kf 叢集的
config-defaults
,並新增標籤。$ kubectl -n kf edit configmaps config-defaults
將
nodeSelector
新增至堆疊定義。..... ..... spaceStacksV2: | - name: cflinuxfs3 image: cloudfoundry/cflinuxfs3 nodeSelector: OS_KERNEL: LINUX_4.4.1 ..... .....
設定 BuildNodeSelector 和 Build 節點集區
建構節點選取器只會覆寫建構 Pod 的節點選取器,不會影響應用程式 Pod。舉例來說,如果您在 Kfsystem 中同時指定 Space 和 Build 的節點選取器,App Pod 就會使用 Space 的節點選取器,而 Build Pod 則會使用 Kfsystem 的 Build 節點選取器;如果您只在 Space 中指定節點選取器,App 和 Build Pod 都會使用 Space 的節點選取器。
在要指派建構 Pod 的節點上新增標籤 (例如
disktype:ssd
)。kubectl label nodes nodeid disktype=ssd
透過修補 KfSystem CR,新增/更新 Build 節點選取器 (以
key:value
組合的格式)。kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'
舉例來說,如要將
disktype=ssd
新增為建構節點選取器,請按照下列步驟操作:kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'