8.8. 容認を使用した クラスターロギング Pod 配置の制御
テイントおよび容認を使用することで、クラスターロギング Pod が特定のノードで実行され、その他のワークロードがそれらのノードで実行されないようにします。
テイントおよび容認は、単純な key:value のペアです。ノードのテイントはノードに対し、テイントを容認しないすべての Pod を拒否するよう指示します。
key は最大 253 文字までの文字列で、value は最大 63 文字までの文字列になります。文字列は文字または数字で開始する必要があり、文字、数字、ハイフン、ドットおよびアンダースコアを含めることができます。
容認を使用したクラスターロギング CR のサンプル
apiVersion: "logging.openshift.io/v1"
kind: "ClusterLogging"
metadata:
name: "instance"
namespace: openshift-logging
spec:
managementState: "Managed"
logStore:
type: "elasticsearch"
elasticsearch:
nodeCount: 1
tolerations:
- key: "logging"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 6000
resources:
limits:
memory: 8Gi
requests:
cpu: 100m
memory: 1Gi
storage: {}
redundancyPolicy: "ZeroRedundancy"
visualization:
type: "kibana"
kibana:
tolerations:
- key: "logging"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 6000
resources:
limits:
memory: 2Gi
requests:
cpu: 100m
memory: 1Gi
replicas: 1
curation:
type: "curator"
curator:
tolerations:
- key: "logging"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 6000
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 100Mi
schedule: "*/5 * * * *"
collection:
logs:
type: "fluentd"
fluentd:
tolerations:
- key: "logging"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 6000
resources:
limits:
memory: 2Gi
requests:
cpu: 100m
memory: 1Gi
8.8.1. 容認を使用した Elasticsearch Pod 配置の制御 リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch Pod が実行するノードを制御し、Pod の容認を使用して他のワークロードがそれらのノードを使用しないようにすることができます。
容認をクラスターロギングのカスタムリソース (CR) で Elasticsearch Pod に適用し、テイントをノード仕様でノードに適用します。ノードのテイントは、テイントを容認しないすべての Pod を拒否するようノードに指示する key:value ペア です。他の Pod にはない特定の key:value ペアを使用することで、Elasticseach Pod のみがそのノード上で実行されるようにできます。
デフォルトで、Elasticsearch Pod には以下の容認があります。
tolerations:
- effect: "NoExecute"
key: "node.kubernetes.io/disk-pressure"
operator: "Exists"
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
以下のコマンドを使用して、クラスターロギング Pod をスケジュールするノードにテイントを追加します。
$ oc adm taint nodes <node-name> <key>=<value>:<effect>以下は例になります。
$ oc adm taint nodes node1 elasticsearch=node:NoExecuteこの例では、テイントをキー
elasticsearch、値node、およびテイントの効果NoExecuteのあるnode1に配置します。NoExecute効果のノードは、テイントに一致する Pod のみをスケジュールし、一致しない既存の Pod を削除します。クラスターロギングのカスタムリソース (CR) の
logStoreセクションを編集し、Elasticsearch Pod の容認を設定します。logStore: type: "elasticsearch" elasticsearch: nodeCount: 1 tolerations: - key: "elasticsearch"1 operator: "Exists"2 effect: "NoExecute"3 tolerationSeconds: 60004
この容認は、oc adm taint コマンドで作成されたテイントと一致します。この容認のある Pod は node1 にスケジュールできます。
8.8.2. 容認 (Toleration) による Kibana Pod の配置の制御 リンクのコピーリンクがクリップボードにコピーされました!
Kibana Pod が実行するノードを制御し、Pod の容認を使用して他のワークロードがそれらのノードを使用しないようにすることができます。
容認をクラスターロギングのカスタムリソース (CR) を利用して Kibana Pod に適用し、テイントをノード仕様でノードに適用します。ノードのテイントは、テイントを容認しないすべての Pod を拒否するようノードに指示する key:value ペア です。他の Pod にはない特定の key:value ペアを使用することで、Kibana Pod のみがそのノード上で実行されます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
以下のコマンドを使用して、Kibana Pod をスケジュールするノードにテイントを追加します。
$ oc adm taint nodes <node-name> <key>=<value>:<effect>以下は例になります。
$ oc adm taint nodes node1 kibana=node:NoExecuteこの例では、テイントをキー
kibana、値node、およびテイントの効果NoExecuteのあるnode1に配置します。NoExecuteテイント effect を使用する必要があります。NoExecuteは、テイントに一致する Pod のみをスケジュールし、一致しない既存の Pod を削除します。クラスターロギングのカスタムリソース (CR) の
visualizationセクションを編集し、Kibana Pod の容認を設定します。visualization: type: "kibana" kibana: tolerations: - key: "kibana"1 operator: "Exists"2 effect: "NoExecute"3 tolerationSeconds: 60004
この容認は、oc adm taint コマンドで作成されたテイントと一致します。この容認のある Pod は、node1 にスケジュールできます。
8.8.3. 容認を使用した Curator Pod 配置の制御 リンクのコピーリンクがクリップボードにコピーされました!
Curator Pod が実行するノードを制御し、Pod の容認を使用して他のワークロードがそれらのノードを使用しないようにすることができます。
容認をクラスターロギングのカスタムリソース (CR) で Curator Pod に適用し、テイントをノード仕様でノードに適用します。ノードのテイントは、テイントを容認しないすべての Pod を拒否するようノードに指示する key:value ペア です。他の Pod にはない特定の key:value ペアを使用することで、Curator Pod のみがそのノード上で実行されるようにできます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
以下のコマンドを使用して、Curator Pod をスケジュールする必要のあるノードにテイントを追加します。
$ oc adm taint nodes <node-name> <key>=<value>:<effect>以下は例になります。
$ oc adm taint nodes node1 curator=node:NoExecuteこの例では、テイントをキー
curator、値node、およびテイント effectNoExecuteのあるnode1に配置します。NoExecuteテイント effect を使用する必要があります。NoExecuteは、テイントに一致する Pod のみをスケジュールし、一致しない既存の Pod を削除します。クラスターロギングのカスタムリソース (CR) の
curationセクションを編集し、Curator Pod の容認を設定します。curation: type: "curator" curator: tolerations: - key: "curator"1 operator: "Exists"2 effect: "NoExecute"3 tolerationSeconds: 60004
この容認は、oc adm taint コマンドで作成されるテイントと一致します。この容認のある Pod は、node1 にスケジュールできます。
8.8.4. 容認を使用したログコレクター Pod 配置の制御 リンクのコピーリンクがクリップボードにコピーされました!
ロギングコレクター Pod が実行するノードを確認し、Pod の容認を使用して他のワークロードがそれらのノードを使用しないようにすることができます。
容認をクラスターロギングのカスタムリソース (CR) でロギングコレクター Pod に適用し、テイントをノード仕様でノードに適用します。テイントおよび容認を使用すると、Pod がメモリーや CPU などの問題によってエビクトされないようにすることができます。
デフォルトで、ロギングコレクター Pod には以下の容認があります。
tolerations:
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoExecute"
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
以下のコマンドを使用して、ロギングコレクター Pod がロギングコレクター Pod をスケジュールする必要のあるノードにテイントを追加します。
$ oc adm taint nodes <node-name> <key>=<value>:<effect>以下は例になります。
$ oc adm taint nodes node1 collector=node:NoExecuteこの例では、テイントをキー
collector、値node、およびテイント effectNoExecuteのあるnode1に配置します。NoExecuteテイント effect を使用する必要があります。NoExecuteは、テイントに一致する Pod のみをスケジュールし、一致しない既存の Pod を削除します。クラスターロギングのカスタムリソース (CR) の
collectionセクションを編集して、ロギングコレクター Pod の容認を設定します。collection: logs: type: "fluentd" rsyslog: tolerations: - key: "collector"1 operator: "Exists"2 effect: "NoExecute"3 tolerationSeconds: 60004
この容認は、oc adm taint コマンドで作成されたテイントと一致します。この容認のある Pod は、node1 にスケジュールできます。
8.8.5. 追加リソース リンクのコピーリンクがクリップボードにコピーされました!
テイントおよび容認についての詳細は、「ノードテイントを使用した Pod 配置の制御」を参照してください。