Kf アプリは、クラスタ内の専用ノードにデプロイできます。アプリ Pod が存在するノードでよりきめ細かい管理が必要な場合、この機能が必要になります。例:
- 異なるアプリ間で同じクラスタを共有していても、特定のアプリで専用ノードが必要な場合。
- 特定の組織(Kf Space)に専用のノードが必要な場合。
- Windows などの特定のオペレーティング システムをターゲットにする場合。
- 頻繁に通信を行う 2 つの異なるサービスの Pod を共存させる場合。
コンピューティングの分離を実現するため、Kf は Kubernetes nodeSelector を使用します。この機能を使用するには、まず、アプリ Pod を配置するノードまたはノードプールにラベルを追加し、同じ条件ラベルを Kf Space に追加します。この Space にインストールされているすべてのアプリが、一致するラベルを持つノードに配置されます。
Kf クラスタで nodeSelector を構成する
デフォルトでは、コンピューティングの分離は無効になっています。次の手順でラベルと nodeSelector を構成します。
アプリケーション Pod を配置するノードにラベル(
distype=ssd
)を追加します。kubectl label nodes nodeid disktype=ssd
Kf Space に同じラベルを追加します。この Space にデプロイされているすべてのアプリが、該当するノードに配置されます。
kf configure-space set-nodeselector space-name disktype ssd
複数のラベルを追加するには、同じコマンドを繰り返し実行します。
ラベルが構成されていることを確認します。
kf configure-space get-nodeselector space-name
Space からラベルを削除します。
kf configure-space unset-nodeselector space-name disktype
kf Stack の nodeSelector をオーバーライドする
アプリのビルドやパッケージ化にどの Stack(ビルドパック)を使用しているのかによって、Kf アプリのデプロイ先を限定できます。たとえば、spaceStacksV2
でビルドされたアプリケーションを Linux カーネル 4.4.1 のノードに配置できます。Stack の nodeSelector
値は、Space で構成された値をオーバーライドします。
Stack で nodeSelector
を構成するには:
Kf クラスタの
config-defaults
を編集して、ラベルを追加します。$ kubectl -n kf edit configmaps config-defaults
nodeSelector
を Stack の定義に追加します。..... ..... spaceStacksV2: | - name: cflinuxfs3 image: cloudfoundry/cflinuxfs3 nodeSelector: OS_KERNEL: LINUX_4.4.1 ..... .....