14.2. taint と toleration を使用したロギング Pod の配置制御
taint および toleration により、ノードはノード上でスケジュールする必要のある (またはスケジュールすべきでない) Pod を制御できます。
14.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 は以下のいずれかにすることができます。
| ||||||
|
|
NoSchedule
taint をコントロールプレーンノードに追加すると、ノードには、デフォルトで追加されるnode-role.kubernetes.io/master=:NoSchedule
taint が必要です。以下に例を示します。
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
は設定されません。
14.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
出力例
14.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:NoExecute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、taint をキー
collector
、値node
、および taint effectNoExecute
のあるnode1
に配置します。NoExecute
taint 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
にスケジュールできます。
14.2.4. リソースの設定とロギングコレクターのスケジュール設定 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、サポートされている ClusterLogForwarder
CR と同じ namespace 内に、同じ名前の ClusterLogging
カスタムリソース (CR) を作成することで、コレクターのリソースまたはスケジュールを変更できます。
デプロイメントで複数のログフォワーダーを使用する場合に ClusterLogging
CR に適用できるスタンザは、managementState
と collection
です。他のスタンザはすべて無視されます。
前提条件
- 管理者権限がある。
- Red Hat OpenShift Logging Operator バージョン 5.8 以降がインストールされている。
-
ClusterLogForwarder
CR が作成されている。
手順
既存の
ClusterLogForwarder
CR をサポートするClusterLogging
CR を作成します。ClusterLogging
CR YAML の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ClusterLogging
CR を適用します。oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.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