Infraノードを足しても OpenShift のインフラである Router が Infra ノードに移らなかったので、移るようにするメモです。
ノードは以下の様になっています。
$ oc get nodes -n openshift-machine-api NAME STATUS ROLES AGE VERSION ip-10-0-129-22.us-east-2.compute.internal Ready infra,worker 20h v1.16.2 ip-10-0-132-220.us-east-2.compute.internal Ready master 21h v1.16.2 ip-10-0-141-130.us-east-2.compute.internal Ready infra,worker 20h v1.16.2 ip-10-0-145-141.us-east-2.compute.internal Ready master 21h v1.16.2 ip-10-0-165-220.us-east-2.compute.internal Ready master 21h v1.16.2 ip-10-0-166-143.us-east-2.compute.internal Ready worker 20h v1.16.2 ip-10-0-169-180.us-east-2.compute.internal Ready worker 20h v1.16.2
ルータのポッドを見てみます。worker ノードで動いているのが分かります。
$ oc get pods -o wide -n openshift-ingress | grep router router-default-859fd5d9df-5vfdr 1/1 Running 0 20h 10.130.2.11 ip-10-0-166-143.us-east-2.compute.internal <none> <none> router-default-859fd5d9df-8rpqs 1/1 Running 0 20h 10.129.2.12 ip-10-0-169-180.us-east-2.compute.internal <none> <none>
設定を見てみます。以下の様に replicas が 2 になっているため router が 2 行出力されていました。
$ oc get -n openshift-ingress-operator ingresscontrollers/default -o yaml apiVersion: operator.openshift.io/v1 kind: IngressController metadata: (略) spec: replicas: 2 status: availableReplicas: 2 (略)
インフラノードで router が動くように、oc edit
でこの設定を変更します。
$ oc edit -n openshift-ingress-operator ingresscontrollers/default
spec に以下を足します。
nodePlacement: nodeSelector: matchLabels: node-role.kubernetes.io/infra: ""
変更後の全体像は以下の感じです。
$ oc get -n openshift-ingress-operator ingresscontrollers/default -o yaml apiVersion: operator.openshift.io/v1 kind: IngressController metadata: (略) spec: nodePlacement: nodeSelector: matchLabels: node-role.kubernetes.io/infra: "" replicas: 2 status: availableReplicas: 2 (略)
Router が再起動するので、それが落ち着くと以下の様に Infra ノードで動くようになります
$ oc get pods -o wide -n openshift-ingress | grep router router-default-859fd5d9df-5vfdr 1/1 Running 0 20h 10.130.2.11 ip-10-0-129-22.us-east-2.compute.internal <none> <none> router-default-859fd5d9df-8rpqs 1/1 Running 0 20h 10.129.2.12 ip-10-0-141-130.us-east-2.compute.internal <none> <none>