啟用運算分隔

Kf 應用程式可部署在叢集中的專屬節點。如果您需要在應用程式 Pod 降落的節點上進一步控管,就必須使用這項功能。例如:

  • 如果您要為不同應用程式共用同一個叢集,但希望為特定應用程式提供專屬節點。
  • 如要為特定機構 (Kf 聊天室) 建立專屬節點。
  • 如果您想指定特定作業系統 (例如 Windows)。
  • 如果您想將兩個經常通訊的不同服務 Pod 放置在同一位置。

為了啟用運算分隔,Kf 會使用 Kubernetes nodeSelector。如要使用這項功能,請先在您希望應用程式 Pod 降落的節點或節點集區中新增標籤,然後在 Kf 空間中新增相同的符合條件標籤。然後,在這個空間中安裝的所有應用程式都會連至標籤相符的節點。

Kf 會建立 Kubernetes Pod 來執行每個 Kf 版本,您可以使用 buildNodeSelector 功能隔離運算資源,只執行建構 Pod。其中一個用途是將 Build 容器隔離,以便在配備 SSD 的節點上執行,同時在其他節點上執行應用程式容器。BuildNodeSelectors 功能可在叢集中提供運算資源最佳化和彈性。請參閱本頁的「設定 BuildNodeSelector 和建構節點集區」一節。

在 Kf 叢集中設定 nodeSelector

根據預設,運算分隔功能會停用。請按照下列程序設定標籤和 nodeSelector。

  1. 在您要應用程式 Pod 降落的節點上新增標籤 (distype=ssd)。

    kubectl label nodes nodeid disktype=ssd
  2. 在 Kf 空間中新增相同的標籤。此時,在這個空間中部署的所有應用程式都會登入符合資格的節點。

    kf configure-space set-nodeselector space-name disktype ssd

    您可以再次執行相同指令,新增多個標籤。

  3. 檢查標籤是否已設定。

    kf configure-space get-nodeselector space-name
  4. 從聊天室中刪除標籤。

    kf configure-space unset-nodeselector space-name disktype

覆寫 Kf 堆疊的 nodeSelector

您可以根據用於建構及封裝應用程式的堆疊 (Buildpack),進一步指定 Kf 應用程式的部署目標。舉例來說,如果您希望使用 spaceStacksV2 建構的應用程式,可在 Linux 核心 4.4.1 的節點上執行,堆疊上的 nodeSelector 值會覆寫在空間上設定的值。

如何設定堆疊上的 nodeSelector

  1. 編輯 Kf 叢集的 config-defaults,並新增標籤。

    $ kubectl -n kf edit configmaps config-defaults
    
  2. 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 的節點選取器。

  1. 在要指派建構 Pod 的節點上新增標籤 (例如 disktype:ssd)。

    kubectl label nodes nodeid disktype=ssd
  2. 透過修補 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"}}]'