4.6.2. taint および toleration の追加
toleration を Pod に、taint をノードに追加することで、ノードはノード上でスケジュールする必要のある (またはスケジュールすべきでない) Pod を制御できます。既存の Pod およびノードの場合、最初に toleration を Pod に追加してから taint をノードに追加して、toleration を追加する前に Pod がノードから削除されないようにする必要があります。
手順
Pod仕様をtolerationsスタンザを含めるように編集して、toleration を Pod に追加します。Equal 演算子を含む Pod 設定ファイルのサンプル
apiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1"1 value: "value1" operator: "Equal" effect: "NoExecute" tolerationSeconds: 36002 #...- 1
- taint および toleration コンポーネント の表で説明されている toleration パラメーターです。
- 2
tolerationSecondsパラメーターは、退避する前に Pod をどの程度の期間ノードにバインドさせるかを指定します。以下に例を示します。
Exists 演算子を含む Pod 設定ファイルのサンプル
apiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1" operator: "Exists"1 effect: "NoExecute" tolerationSeconds: 3600 #...ExistsOperator はvalueを取りません。この例では、taint を、キー
key1、値value1、および taint effectNoExecuteを持つnode1に taint を配置します。
taint および toleration コンポーネント の表で説明されているパラメーターと共に以下のコマンドを使用して taint をノードに追加します。
$ oc adm taint nodes <node_name> <key>=<value>:<effect>以下に例を示します。
$ oc adm taint nodes node1 key1=value1:NoExecuteこのコマンドは、キー
key1、値value1、および effectNoExecuteを持つ taint をnode1に配置します。注記NoScheduletaint をコントロールプレーンノードに追加すると、ノードには、デフォルトで追加されるnode-role.kubernetes.io/master=:NoScheduletaint が必要です。以下に例を示します。
apiVersion: v1 kind: Node metadata: annotations: machine.openshift.io/machine: openshift-machine-api/ci-ln-62s7gtb-f76d1-v8jxv-master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-cdc1ab7da414629332cc4c3926e6e59c name: my-node #... spec: taints: - effect: NoSchedule key: node-role.kubernetes.io/master #...Pod の toleration はノードの taint に一致します。いずれかの toleration のある Pod は
node1にスケジュールできます。
4.6.2.1. コンピュートマシンセットを使用した taint および toleration の追加 リンクのコピーリンクがクリップボードにコピーされました!
コンピュートマシンセットを使用して taint をノードに追加できます。MachineSet オブジェクトに関連付けられるすべてのノードが taint で更新されます。toleration は、ノードに直接追加された taint と同様に、コンピュートマシンセットによって追加される taint に応答します。
手順
Pod仕様をtolerationsスタンザを含めるように編集して、toleration を Pod に追加します。Equal演算子を含む Pod 設定ファイルのサンプルapiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1"1 value: "value1" operator: "Equal" effect: "NoExecute" tolerationSeconds: 36002 #...- 1
- taint および toleration コンポーネント の表で説明されている toleration パラメーターです。
- 2
tolerationSecondsパラメーターは、退避する前に Pod をどの程度の期間ノードにバインドさせるかを指定します。以下に例を示します。
Exists演算子を含む Pod 設定ファイルのサンプルapiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1" operator: "Exists" effect: "NoExecute" tolerationSeconds: 3600 #...
taint を
MachineSetオブジェクトに追加します。taint を付けるノードの
MachineSetYAML を編集するか、新規MachineSetオブジェクトを作成できます。$ oc edit machineset <machineset>taint を
spec.template.specセクションに追加します。コンピュートマシンセット仕様の taint の例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: my-machineset #... spec: #... template: #... spec: taints: - effect: NoExecute key: key1 value: value1 #...この例では、キー
key1、値value1、および taint effectNoExecuteを持つ taint をノードに配置します。コンピュートマシンセットを 0 にスケールダウンします。
$ oc scale --replicas=0 machineset <machineset> -n openshift-machine-apiヒントまたは、以下の YAML を適用してコンピュートマシンセットをスケーリングすることもできます。
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: <machineset> namespace: openshift-machine-api spec: replicas: 0マシンが削除されるまで待機します。
コンピュートマシンセットを随時スケールアップします。
$ oc scale --replicas=2 machineset <machineset> -n openshift-machine-apiまたは、以下を実行します。
$ oc edit machineset <machineset> -n openshift-machine-apiマシンが起動するまで待ちます。taint は
MachineSetオブジェクトに関連付けられたノードに追加されます。