ノード配置
OpenLM Platform を専用のノードで実行したい場合、たとえばほかのワークロードと分離したい場合や、データ処理ジョブに専用のノードを割り当てたい場合は、配置を有効にします。
既定では、Kubernetes は空きのある任意のノードで Pod を実行します。ほとんどのインストールではこれで問題なく、このガイドでもこの設定を使用します。つまり、配置は オフ です。
チャートの仕組み
すべてのコンポーネントは、次の 2 つのグループのいずれかに属します。
| グループ | ラベルの値 | 含まれるもの |
|---|---|---|
| サービスと UI | main | ほぼすべて(約 100 個のコンポーネント) |
| データ処理 | spark | レポートデータを準備するジョブ: sparkmongo、sparkmssql、licenseconcurency、officetimecalculation、denialsaggregation と、いくつかの任意のジョブ |
配置を有効にすると、各 Pod は、openlm.com/role ラベルが自身のグループに設定されたノードを 必須 とし、同じキーと値の taint を 許容 します。
# what the chart adds to every pod when placement is on (component in group "main")
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- { key: openlm.com/role, operator: In, values: [main] }
tolerations:
- { key: openlm.com/role, operator: Equal, value: main, effect: NoSchedule }
2 つのスイッチは互いに独立しています。
| 設定 | 動作 |
|---|---|
global.affinity.enabled: true | Pod は openlm.com/role=main(または =spark)のラベルが付いたノード でのみ 実行されます。 |
global.taints.enabled: true | Pod は openlm.com/role=main:NoSchedule(または spark)の taint が付いたノードで 実行できます。ほかのワークロードは taint によってこれらのノードから除外されます。 |
一般的な組み合わせは両方をオンにすることで、OpenLM Platform だけが使用する専用ノードになります。
global.affinity.enabled: true を設定すると、そのラベルを持つノードがない場合、Pod は Pending のまま永久に待機します。最初に、グループごとに少なくとも 1 つのノードにラベルを付けてください。main と spark の両方のグループにノードが必要です。
配置を有効にする
配置を有効にするには、次の手順を実行します。
-
ノードにラベルを付けます(専用ノードにする場合は taint も付けます)。
kubectl label node <node> openlm.com/role=mainkubectl taint node <node> openlm.com/role=main:NoSchedule # optional: keep other pods offkubectl label node <spark-node> openlm.com/role=sparkkubectl taint node <spark-node> openlm.com/role=spark:NoScheduleマネージドクラスターでは、新しいノードにも自動的に適用されるよう、ラベルと taint を ノードグループまたはノードプール に設定します。EKS と AKS を参照してください。
-
openlm-values.yamlで両方のスイッチをオンにします。global:affinity: { enabled: true }taints: { enabled: true } -
ステップ 6 と同じ
helm upgrade --installコマンドで変更を適用します。
main と spark ですmain-workload や reporting などの値は機能しません。ほかのテンプレートから作成したノードグループは、異なる値を使用していることがよくあります。kubectl get nodes -L openlm.com/role で確認してください。
データサービスと配置
配置の設定は、OpenLM Platform のコンポーネントにのみ適用されます。MongoDB、Kafka、Redis をクラスター内で実行する場合は、それぞれのチャートの設定で配置します。一般的な構成は次の表のとおりです。
| ノードグループ | ラベル | 実行するもの |
|---|---|---|
| プラットフォーム | openlm.com/role=main | OpenLM のサービスと UI、API ゲートウェイ |
| データ処理 | openlm.com/role=spark | レポートデータのジョブ |
| インフラストラクチャ | 独自のラベル | MongoDB、Kafka、Redis、Ingress コントローラー |
ノードにラベルを付けられない場合
一部のマネージドクラスターや共有クラスター(たとえば共有 OpenShift クラスター上の namespace)では、ノードにラベルを付ける権限がありません。その場合は両方の設定を false のままにしてください。OpenLM Platform は配置なしでも問題なく動作します。
ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。