13.2. taint と toleration を使用したロギング Pod の配置制御
taint および toleration により、ノードはノード上でスケジュールする必要のある (またはスケジュールすべきでない) Pod を制御できます。
13.2.1. taint および toleration について リンクのコピーリンクがクリップボードにコピーされました!
taint により、ノードは Pod に一致する toleration がない場合に Pod のスケジュールを拒否することができます。
taint は Node 仕様 (NodeSpec) でノードに適用され、toleration は Pod 仕様 (PodSpec) で Pod に適用されます。taint をノードに適用する場合、スケジューラーは Pod が taint を容認しない限り、Pod をそのノードに配置することができません。
ノード仕様の taint の例
Pod 仕様での toleration の例
taint および toleration は、key、value、および effect で構成されます。
| パラメーター | 説明 | ||||||
|---|---|---|---|---|---|---|---|
|
|
| ||||||
|
|
| ||||||
|
| effect は以下のいずれかにすることができます。
| ||||||
|
|
|
NoScheduletaint をコントロールプレーンノードに追加すると、ノードには、デフォルトで追加されるnode-role.kubernetes.io/master=:NoScheduletaint が必要です。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
toleration は taint と一致します。
operatorパラメーターがEqualに設定されている場合:-
keyパラメーターが同じである。 -
valueパラメーターが同じである。 -
effectパラメーターが同じである。
-
operatorパラメーターがExistsに設定されている場合:-
keyパラメーターが同じである。 -
effectパラメーターが同じである。
-
以下の taint は OpenShift Container Platform に組み込まれています。
-
node.kubernetes.io/not-ready: ノードは準備状態にありません。これはノード条件Ready=Falseに対応します。 -
node.kubernetes.io/unreachable: ノードはノードコントローラーから到達不能です。これはノード条件Ready=Unknownに対応します。 -
node.kubernetes.io/memory-pressure: ノードにはメモリー不足の問題が発生しています。これはノード条件MemoryPressure=Trueに対応します。 -
node.kubernetes.io/disk-pressure: ノードにはディスク不足の問題が発生しています。これはノード条件DiskPressure=Trueに対応します。 -
node.kubernetes.io/network-unavailable: ノードのネットワークは使用できません。 -
node.kubernetes.io/unschedulable: ノードはスケジュールが行えません。 -
node.cloudprovider.kubernetes.io/uninitialized: ノードコントローラーが外部のクラウドプロバイダーを使用して起動すると、この taint はノード上に設定され、使用不可能とマークされます。cloud-controller-manager のコントローラーがこのノードを初期化した後に、kubelet がこの taint を削除します。 node.kubernetes.io/pid-pressure: ノードが pid 不足の状態です。これはノード条件PIDPressure=Trueに対応します。重要OpenShift Container Platform では、デフォルトの pid.available
evictionHardは設定されません。
13.2.2. Loki Pod の配置 リンクのコピーリンクがクリップボードにコピーされました!
Pod の toleration またはノードセレクターを使用して、Loki Pod が実行するノードを制御し、他のワークロードがそれらのノードを使用しないようにできます。
LokiStack カスタムリソース (CR) を使用して toleration をログストア Pod に適用し、ノード仕様を使用して taint をノードに適用できます。ノードの taint は、taint を容認しないすべての Pod を拒否するようノードに指示する key:value ペアです。他の Pod にはない特定の key:value ペアを使用すると、ログストア Pod のみがそのノードで実行できるようになります。
ノードセレクターを使用する LokiStack の例
前述の設定例では、すべての Loki Pod が node-role.kubernetes.io/infra: "" ラベルを含むノードに移動されます。
ノードセレクターと toleration を使用する LokiStack CR の例
LokiStack (CR) の nodeSelector フィールドと tolerations フィールドを設定するには、oc explain コマンドを使用して、特定のリソースの説明とフィールドを表示します。
oc explain lokistack.spec.template
$ oc explain lokistack.spec.template
出力例
詳細情報用に、特定のフィールドを追加できます。
oc explain lokistack.spec.template.compactor
$ oc explain lokistack.spec.template.compactor
出力例
13.2.3. toleration を使用したログコレクター Pod 配置の制御 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、ログコレクター Pod には以下の tolerations 設定があります。
前提条件
-
Red Hat OpenShift Logging Operator および OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、ロギングコレクター Pod をスケジュールするノードに taint を追加します。
oc adm taint nodes <node_name> <key>=<value>:<effect>
$ oc adm taint nodes <node_name> <key>=<value>:<effect>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc adm taint nodes node1 collector=node:NoExecute
$ oc adm taint nodes node1 collector=node:NoExecuteCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、taint をキー
collector、値node、および taint effectNoExecuteのあるnode1に配置します。NoExecutetaint effect を使用する必要があります。NoExecuteは、taint に一致する Pod のみをスケジュールし、一致しない既存の Pod を削除します。ClusterLoggingカスタムリソース (CR) のcollectionスタンザを編集して、ロギングコレクター Pod の toleration を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
こ toleration は、oc adm taint コマンドで作成された taint と一致します。この toleration のある Pod は node1 にスケジュールできます。
13.2.4. リソースの設定とロギングコレクターのスケジュール設定 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、サポートされている ClusterLogForwarder CR と同じ namespace 内に、同じ名前の ClusterLogging カスタムリソース (CR) を作成することで、コレクターのリソースまたはスケジュールを変更できます。
デプロイメントで複数のログフォワーダーを使用する場合に ClusterLogging CR に適用できるスタンザは、managementState と collection です。他のスタンザはすべて無視されます。
前提条件
- 管理者権限がある。
- Red Hat OpenShift Logging Operator バージョン 5.8 以降がインストールされている。
-
ClusterLogForwarderCR が作成されている。
手順
既存の
ClusterLogForwarderCR をサポートするClusterLoggingCR を作成します。ClusterLoggingCR YAML の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ClusterLoggingCR を適用します。oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.5. ロギングコレクター Pod の表示 リンクのコピーリンクがクリップボードにコピーされました!
ロギングコレクター Pod と、それらが実行されている対応するノードを表示できます。
手順
プロジェクトで次のコマンドを実行して、ロギングコレクター Pod とその詳細を表示します。
oc get pods --selector component=collector -o wide -n <project_name>
$ oc get pods --selector component=collector -o wide -n <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow