16.3. OpenShift SDN 네트워크 공급자로 롤백
클러스터 관리자는 OVN-Kubernetes로의 마이그레이션에 실패한 경우 OVN-Kubernetes CNI 클러스터 네트워크 공급자에서 OpenShift SDN CNI(Container Network Interface) 클러스터 네트워크 공급자로 롤백할 수 있습니다.
16.3.1. 기본 CNI 네트워크 공급자를 OpenShift SDN으로 롤백
클러스터 관리자는 클러스터를 OpenShift SDN CNI(Container Network Interface) 클러스터 네트워크 공급자로 롤백할 수 있습니다. 롤백 중에 클러스터의 모든 노드를 재부팅해야 합니다.
OVN-Kubernetes로의 마이그레이션이 실패한 경우에만 OpenShift SDN으로 롤백하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OVN-Kubernetes CNI 클러스터 네트워크 공급자로 구성된 인프라에 설치된 클러스터입니다.
프로세스
MCO(Machine Config Operator)에서 관리하는 모든 머신 구성 풀을 중지합니다.
마스터 구성 풀을 중지합니다.
$ oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": true } }'
작업자 머신 구성 풀을 중지합니다.
$ oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec":{ "paused" :true } }'
마이그레이션을 시작하려면 다음 명령을 입력하여 클러스터 네트워크 공급자를 다시 OpenShift SDN으로 설정합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OpenShiftSDN" } } }' $ oc patch Network.config.openshift.io cluster --type='merge' \ --patch '{ "spec": { "networkType": "OpenShiftSDN" } }'
선택 사항: OpenShift SDN에 대해 네트워크 인프라 요구 사항을 충족하도록 다음 설정을 사용자 정의할 수 있습니다.
- 최대 전송 단위(MTU)
- VXLAN 포트
이전에 명시된 설정 중 하나 또는 둘 다 사용자 정의하려면 사용자 정의하고 다음 명령을 입력합니다. 기본값을 변경할 필요가 없는 경우 패치에서 키를 생략합니다.
$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "openshiftSDNConfig":{ "mtu":<mtu>, "vxlanPort":<port> }}}}'
mtu
-
VXLAN 오버레이 네트워크의 MTU입니다. MTU 값은 일반적으로 자동으로 지정되지만 클러스터의 모든 노드가 동일한 MTU를 사용하지 않을 때는 최소 노드 MTU 값에서
50
을 뺀 값으로 명시적으로 설정해야 합니다. port
-
VXLAN 오버레이 네트워크용 UDP 포트입니다. 값을 지정하지 않으면 기본값은
4789
입니다. 이 포트는 OVN-Kubernetes에서 사용하는 Geneve 포트와 같을 수 없습니다. Geneve 포트의 기본값은6081
입니다.
패치 명령 예
$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "openshiftSDNConfig":{ "mtu":1200 }}}}'
Multus 데몬 세트 롤아웃이 완료될 때까지 기다립니다.
$ oc -n openshift-multus rollout status daemonset/multus
Multus 포드의 이름은
multus-<xxxxx>
형식이며 여기서<xxxxx>
는 임의 문자 순서입니다. 포드를 다시 시작하는 데 시간이 다소 걸릴 수 있습니다.출력 예
Waiting for daemon set "multus" rollout to finish: 1 out of 6 new pods have been updated... ... Waiting for daemon set "multus" rollout to finish: 5 of 6 updated pods are available... daemon set "multus" successfully rolled out
롤백을 완료하려면 클러스터의 각 노드를 재부팅합니다. 예를 들어 다음과 유사한 bash 스크립트를 사용할 수 있습니다. 이 스크립트는
ssh
를 사용하여 각 호스트에 연결할 수 있고 암호를 묻지 않도록sudo
를 구성했다고 가정합니다.#!/bin/bash for ip in $(oc get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}') do echo "reboot node $ip" ssh -o StrictHostKeyChecking=no core@$ip sudo shutdown -r -t 3 done
ssh 액세스를 사용할 수 없는 경우 인프라 공급자의 관리 포털을 통해 각 노드를 재부팅할 수 있습니다.
클러스터의 노드가 재부팅된 후 모든 머신 구성 풀을 시작합니다.
마스터 구성 풀을 시작합니다.
$ oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": false } }'
작업자 구성 풀을 시작합니다.
$ oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec": { "paused": false } }'
MCO는 각 구성 풀에서 머신을 업데이트하므로 각 노드를 재부팅합니다.
기본적으로 MCO는 한 번에 풀당 단일 머신을 업데이트하므로 마이그레이션이 완료하는 데 필요한 시간은 클러스터 크기와 함께 증가합니다.
호스트의 새 머신 구성 상태를 확인합니다.
머신 구성 상태 및 적용된 머신 구성 이름을 나열하려면 다음 명령을 입력합니다.
$ oc describe node | egrep "hostname|machineconfig"
출력 예
kubernetes.io/hostname=master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/reason: machineconfiguration.openshift.io/state: Done
다음 구문이 올바른지 확인합니다.
-
machineconfiguration.openshift.io/state
필드의 값은Done
입니다. -
machineconfiguration.openshift.io/currentConfig
필드의 값은machineconfiguration.openshift.io/desiredConfig
필드의 값과 동일합니다.
-
머신 구성이 올바른지 확인하려면 다음 명령을 입력합니다.
$ oc get machineconfig <config_name> -o yaml
여기서
<config_name>
은machineconfiguration.openshift.io/currentConfig
필드에서 머신 구성의 이름입니다.
마이그레이션이 성공했는지 확인합니다.
기본 CNI 네트워크 공급자가 OVN-Kubernetes인지 확인하려면 다음 명령을 입력합니다.
status.networkType
값은OpenShiftSDN
이어야 합니다.$ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
클러스터 노드가
준비
상태에 있는지 확인하려면 다음 명령을 입력합니다.$ oc get nodes
노드가
NotReady
상태에 있는 경우 머신 구성 데몬 포드 로그를 조사하고 오류를 해결합니다.포드를 나열하려면 다음 명령을 입력합니다.
$ oc get pod -n openshift-machine-config-operator
출력 예
NAME READY STATUS RESTARTS AGE machine-config-controller-75f756f89d-sjp8b 1/1 Running 0 37m machine-config-daemon-5cf4b 2/2 Running 0 43h machine-config-daemon-7wzcd 2/2 Running 0 43h machine-config-daemon-fc946 2/2 Running 0 43h machine-config-daemon-g2v28 2/2 Running 0 43h machine-config-daemon-gcl4f 2/2 Running 0 43h machine-config-daemon-l5tnv 2/2 Running 0 43h machine-config-operator-79d9c55d5-hth92 1/1 Running 0 37m machine-config-server-bsc8h 1/1 Running 0 43h machine-config-server-hklrm 1/1 Running 0 43h machine-config-server-k9rtx 1/1 Running 0 43h
구성 데몬 포드의 이름은 다음 형식입니다.
machine-config-daemon-<seq>
.<seq>
값은 임의 5자 영숫자 순서입니다.이전 출력에 표시된 각 머신 구성 데몬 포드에 대한 포드 로그를 표시하려면 다음 명령을 입력합니다.
$ oc logs <pod> -n openshift-machine-config-operator
여기서
pod
는 머신 구성 데몬 포드의 이름입니다.- 이전 명령의 출력에 표시된 로그의 오류를 해결합니다.
Pod가 오류 상태가 아닌지 확인하려면 다음 명령을 입력합니다.
$ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'
노드의 Pod가 오류 상태인 경우 해당 노드를 재부팅합니다.
마이그레이션이 성공하고 클러스터가 양호한 상태인 경우에만 다음 단계를 완료합니다.
Cluster Network Operator 구성 오브젝트에서 마이그레이션 구성을 제거하려면 다음 명령을 입력합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'
OVN-Kubernetes 구성을 제거하려면 다음 명령을 입력합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "ovnKubernetesConfig":null } } }'
OVN-Kubernetes 네트워크 공급자 네임스페이스를 제거하려면 다음 명령을 입력합니다.
$ oc delete namespace openshift-ovn-kubernetes