8.3.4. Vertical Pod Autoscaler Operator コンポーネントの移動
Vertical Pod Autoscaler Operator (VPA) は、レコメンダー、アップデーター、アドミッションコントローラーの 3 つのコンポーネントで構成されます。Operator と各コンポーネントには、コントロールプレーンノードの VPA namespace に独自の Pod があります。VPA Operator およびコンポーネント Pod をインフラストラクチャーノードに移動するには、ノードセレクターを VPA サブスクリプションおよび VerticalPodAutoscalerController CR に追加します。
以下の例は、VPA Pod のコントロールプレーンノードへのデフォルトのデプロイメントを示しています。
出力例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
vertical-pod-autoscaler-operator-6c75fcc9cd-5pb6z 1/1 Running 0 7m59s 10.128.2.24 c416-tfsbj-master-1 <none> <none>
vpa-admission-plugin-default-6cb78d6f8b-rpcrj 1/1 Running 0 5m37s 10.129.2.22 c416-tfsbj-master-1 <none> <none>
vpa-recommender-default-66846bd94c-dsmpp 1/1 Running 0 5m37s 10.129.2.20 c416-tfsbj-master-0 <none> <none>
vpa-updater-default-db8b58df-2nkvf 1/1 Running 0 5m37s 10.129.2.21 c416-tfsbj-master-1 <none> <none>
手順
VPA Operator の
Subscriptionカスタムリソース (CR) にノードセレクターを追加して、VPA Operator Pod を移動します。CR を編集します。
$ oc edit Subscription vertical-pod-autoscaler -n openshift-vertical-pod-autoscalerinfra ノードのノードロールラベルに一致するノードセレクターを追加します。
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: labels: operators.coreos.com/vertical-pod-autoscaler.openshift-vertical-pod-autoscaler: "" name: vertical-pod-autoscaler # ... spec: config: nodeSelector: node-role.kubernetes.io/infra: ""1 - 1 1
- infra ノードのノードロールを指定します。注記
infra ノードが taint を使用する場合は、toleration を
SubscriptionCR に追加する必要があります。以下に例を示します。
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: labels: operators.coreos.com/vertical-pod-autoscaler.openshift-vertical-pod-autoscaler: "" name: vertical-pod-autoscaler # ... spec: config: nodeSelector: node-role.kubernetes.io/infra: "" tolerations:1 - key: "node-role.kubernetes.io/infra" operator: "Exists" effect: "NoSchedule" - infra ノードの taint の toleration を指定します。
VerticalPodAutoscalerカスタムリソース (CR) にノードセレクターを追加して、各 VPA コンポーネントを移動します。CR を編集します。
$ oc edit VerticalPodAutoscalerController default -n openshift-vertical-pod-autoscalerinfra ノードのノードロールラベルに一致するようにノードセレクターを追加します。
apiVersion: autoscaling.openshift.io/v1 kind: VerticalPodAutoscalerController metadata: name: default namespace: openshift-vertical-pod-autoscaler # ... spec: deploymentOverrides: admission: container: resources: {} nodeSelector: node-role.kubernetes.io/infra: ""1 recommender: container: resources: {} nodeSelector: node-role.kubernetes.io/infra: ""2 updater: container: resources: {} nodeSelector: node-role.kubernetes.io/infra: ""3 - 1
- オプション: VPA アドミッション Pod のノードロールを指定します。
- 2
- オプション: VPA レコメンダー Pod のノードロールを指定します。
- 3 3
- オプション: VPA アップデータ Pod のノードロールを指定します。注記
ターゲットノードが taint を使用する場合は、
VerticalPodAutoscalerControllerCR に toleration を追加する必要があります。以下に例を示します。
apiVersion: autoscaling.openshift.io/v1 kind: VerticalPodAutoscalerController metadata: name: default namespace: openshift-vertical-pod-autoscaler # ... spec: deploymentOverrides: admission: container: resources: {} nodeSelector: node-role.kubernetes.io/infra: "" tolerations:1 - key: "my-example-node-taint-key" operator: "Exists" effect: "NoSchedule" recommender: container: resources: {} nodeSelector: node-role.kubernetes.io/infra: "" tolerations:2 - key: "my-example-node-taint-key" operator: "Exists" effect: "NoSchedule" updater: container: resources: {} nodeSelector: node-role.kubernetes.io/infra: "" tolerations:3 - key: "my-example-node-taint-key" operator: "Exists" effect: "NoSchedule" - infra ノード上の taint に対するアドミッションコントローラー Pod の toleration を指定します。
- infra ノード上の taint に対する推奨 Pod の toleration を指定します。
- infra ノードの taint のアップデーター Pod の toleration を指定します。
検証
次のコマンドを使用して、Pod が移動したことを確認できます。
$ oc get pods -n openshift-vertical-pod-autoscaler -o widePod はコントロールプレーンノードにデプロイされなくなりました。次の出力例では、ノードはコントロールプレーンノードではなく、インフラノードになっています。
出力例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES vertical-pod-autoscaler-operator-6c75fcc9cd-5pb6z 1/1 Running 0 7m59s 10.128.2.24 c416-tfsbj-infra-eastus3-2bndt <none> <none> vpa-admission-plugin-default-6cb78d6f8b-rpcrj 1/1 Running 0 5m37s 10.129.2.22 c416-tfsbj-infra-eastus1-lrgj8 <none> <none> vpa-recommender-default-66846bd94c-dsmpp 1/1 Running 0 5m37s 10.129.2.20 c416-tfsbj-infra-eastus1-lrgj8 <none> <none> vpa-updater-default-db8b58df-2nkvf 1/1 Running 0 5m37s 10.129.2.21 c416-tfsbj-infra-eastus1-lrgj8 <none> <none>