20.5. OpenShift SDN 네트워크 플러그인에서 마이그레이션
클러스터 관리자는 OpenShift SDN 네트워크 플러그인에서 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션할 수 있습니다. 마이그레이션에 다음 옵션을 사용할 수 있습니다.
- 제한된 실시간 마이그레이션 (이전 방법)
- 이는 서비스 중단 없이 OpenShift SDN에서 OVN-Kubernetes로 클러스터를 마이그레이션하는 자동화된 프로세스입니다.
- 오프라인 마이그레이션
- 이는 다운 타임이 포함된 수동 프로세스입니다. 이 방법은 주로 자체 관리 OpenShift Container Platform 배포에 사용되며 OVN-Kubernetes 네트워크 플러그인으로의 실시간 마이그레이션을 수행할 수 없는 경우 사용해야 합니다.
OpenShift SDN 네트워크 플러그인을 사용하는 경우 클러스터를 OpenShift Container Platform 4.17로 업그레이드할 수 없습니다. OpenShift Container Platform 4.17으로 업그레이드하기 전에 OVN-Kubernetes 플러그인으로 마이그레이션해야 합니다.
OVN-Kubernetes에 대한 자세한 내용은 OVN-Kubernetes 네트워크 플러그인 정보를 참조하십시오.
Red Hat Ansible Automation Platform과 같은 다른 툴을 사용하여 OpenShift SDN에서 OVN-Kubernetes로의 마이그레이션을 자동화하지 마십시오. 이로 인해 OpenShift Container Platform 클러스터가 중단되거나 중단될 수 있습니다.
20.5.1. OVN-Kubernetes 네트워크 플러그인으로의 오프라인 마이그레이션 개요
오프라인 마이그레이션 방법은 클러스터에 연결할 수 없는 일부 다운타임이 포함된 수동 프로세스입니다. 이 방법은 주로 자체 관리 OpenShift Container Platform 배포에 사용되며 실시간 마이그레이션 절차의 대안입니다. OVN-Kubernetes 네트워크 플러그인으로의 실시간 마이그레이션을 수행할 수 없는 경우 사용해야 합니다.
OVN-Kubernetes 네트워크 플러그인을 사용하도록 OpenShift Container Platform 클러스터를 마이그레이션하기 전에 모든 최신 버그 수정이 클러스터에 적용되도록 클러스터를 최신 z-stream 릴리스로 업데이트합니다.
롤백 절차가 제공되지만 오프라인 마이그레이션은 단방향 프로세스로 사용됩니다.
OpenShift SDN CNI는 OpenShift Container Platform 4.14에서 더 이상 사용되지 않습니다. OpenShift Container Platform 4.15부터 네트워크 플러그인은 새 설치를 위한 옵션이 아닙니다. 향후 릴리스에서 OpenShift SDN 네트워크 플러그인은 제거될 예정이며 더 이상 지원되지 않습니다. Red Hat은 제거될 때까지 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않습니다. OpenShift SDN CNI 대신 OVN Kubernetes CNI를 대신 사용할 수 있습니다. 자세한 내용은 OpenShift SDN CNI 제거를 참조하십시오.
다음 섹션에서는 오프라인 마이그레이션 방법에 대한 자세한 정보를 제공합니다.
20.5.1.1. 오프라인 마이그레이션 방법을 사용하는 경우 지원되는 플랫폼
다음 표에서는 오프라인 마이그레이션 유형에 대해 지원되는 플랫폼에 대한 정보를 제공합니다.
플랫폼 | 오프라인 마이그레이션 |
---|---|
베어 메탈 하드웨어 | ✓ |
AWS(Amazon Web Services) | ✓ |
GCP(Google Cloud Platform) | ✓ |
IBM Cloud® | ✓ |
Microsoft Azure | ✓ |
Red Hat OpenStack Platform (RHOSP) | ✓ |
VMware vSphere | ✓ |
Nutanix | ✓ |
나열된 각 플랫폼은 설치 관리자 프로비저닝 인프라 및 사용자 프로비저닝 인프라에 OpenShift Container Platform 클러스터 설치를 지원합니다.
20.5.1.2. OVN-Kubernetes 네트워크 플러그인으로 오프라인 마이그레이션 모범 사례
오프라인 마이그레이션 방법을 사용하여 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션할 때 모범 사례 목록은 OpenShift SDN에 대한 모범 사례를 OVN Kubernetes CNI 오프라인 마이그레이션으로 참조하십시오.
20.5.1.3. OVN-Kubernetes 네트워크 플러그인으로의 오프라인 마이그레이션 고려 사항
OpenShift Container Platform 클러스터에 150개 이상의 노드가 있는 경우 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션에 대한 지원 케이스를 엽니다.
노드에 할당된 서브넷과 개별 포드에 할당된 IP 주소는 마이그레이션 중에 유지되지 않습니다.
OVN-Kubernetes 네트워크 플러그인은 OpenShift SDN 네트워크 플러그인에 있는 많은 기능을 구현하지만 구성은 동일하지 않습니다.
클러스터에서 다음 OpenShift SDN 네트워크 플러그인 기능을 사용하는 경우 OVN-Kubernetes 네트워크 플러그인에서 동일한 기능을 수동으로 구성해야 합니다.
- 네임스페이스 격리
- 송신 라우터 Pod
-
OVN-Kubernetes로 마이그레이션하기 전에
100.64.0.0/16
,169.254.169.0/29
,100.88.0.0/16
,fd98::/64
,fd69::/125
,fd97::
/125 . OVN-Kubernetes는 이러한 범위를 내부적으로 사용합니다. 클러스터 또는 인프라의 다른 CIDR 정의에 이러한 범위를 포함하지 마십시오.
다음 섹션에서는 OVN-Kubernetes와 OpenShift SDN 네트워크 플러그인의 앞서 언급한 기능 간 구성의 차이점을 설명합니다.
기본 네트워크 인터페이스
OpenShift SDN 플러그인을 사용하면 NodeNetworkConfigurationPolicy
(NNCP) 사용자 정의 리소스(CR)를 노드의 기본 인터페이스에 적용할 수 있습니다. OVN-Kubernetes 네트워크 플러그인에는 이 기능이 없습니다.
기본 인터페이스에 NNCP가 적용된 경우 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션하기 전에 NNCP를 삭제해야 합니다. NNCP를 삭제해도 기본 인터페이스에서 구성은 제거되지 않지만 OVN-Kubernetes를 사용하면 Kubernetes NMState가 이 구성을 관리할 수 없습니다. 대신 configure-ovs.sh
쉘 스크립트는 기본 인터페이스와 이 인터페이스에 연결된 구성을 관리합니다.
네임스페이스 격리
OVN-Kubernetes는 네트워크 정책 격리 모드만 지원합니다.
다중 테넌트 또는 서브넷 격리 모드에서 구성된 OpenShift SDN을 사용하는 클러스터의 경우 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션할 수 있습니다. 마이그레이션 작업 후에는 다중 테넌트 격리 모드가 삭제되므로 Pod 및 서비스에 대해 동일한 수준의 프로젝트 수준 격리를 달성하려면 네트워크 정책을 수동으로 구성해야 합니다.
송신 IP 주소
OpenShift SDN은 다음 두 가지 Egress IP 모드를 지원합니다.
- 자동 할당 방식에서는 송신 IP 주소 범위가 노드에 할당됩니다.
- 수동으로 할당된 방식에서는 하나 이상의 송신 IP 주소 목록이 노드에 할당됩니다.
마이그레이션 프로세스에서는 자동으로 할당된 모드를 사용하는 Egress IP 구성 마이그레이션을 지원합니다.
OVN-Kubernetes와 OpenShift SDN 간의 송신 IP 주소를 구성하는 데 있어서 차이점은 다음 표에 설명되어 있습니다.
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
OVN-Kubernetes에서 송신 IP 주소를 사용하는 방법에 대한 자세한 내용은 " 송신 IP 주소 구성"을 참조하십시오.
송신 네트워크 정책
OVN-Kubernetes와 OpenShift SDN 간의 송신 방화벽이라고도 하는 송신 네트워크 정책 구성의 차이점은 다음 표에 설명되어 있습니다.
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
EgressFirewall
오브젝트의 이름은 OpenShift SDN에 있는 이름에 관계없이 마이그레이션된 모든 EgressNetworkPolicy
오브젝트의 이름을
로 지정한 후에만 기본값으로 설정할 수 있습니다.
default
나중에 OpenShift SDN으로 롤백하면 이전 이름이 손실되므로 모든 EgressNetworkPolicy
오브젝트의 이름이 default
로 지정됩니다.
OVN-Kubernetes에서 송신 방화벽을 사용하는 방법에 대한 자세한 내용은 "프로젝트에 대한 송신 방화벽 구성"을 참조하십시오.
송신 라우터 Pod
OVN-Kubernetes는 리디렉션 모드에서 송신 라우터 pod를 지원합니다. OVN-Kubernetes는 HTTP 프록시 모드 또는 DNS 프록시 모드에서 송신 라우터 Pod를 지원하지 않습니다.
Cluster Network Operator를 사용하여 송신 라우터를 배포할 때 송신 라우터 Pod를 호스팅하는 데 사용되는 노드를 제어하기 위해 노드 선택기를 지정할 수 없습니다.
멀티 캐스트
OVN-Kubernetes 및 OpenShift SDN에서 멀티 캐스트 트래픽 활성화의 차이점은 다음 표에 설명되어 있습니다.
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
OVN-Kubernetes에서 멀티 캐스트를 사용하는 방법에 대한 자세한 내용은 "프로젝션에 멀티 캐스트 사용"을 참조하십시오.
네트워크 정책
OVN-Kubernetes는 networking.k8s.io/v1
API 그룹에서 Kubernetes NetworkPolicy
API를 완전히 지원합니다. OpenShift SDN에서 마이그레이션할 때 네트워크 정책에 변경 사항이 필요하지 않습니다.
추가 리소스
20.5.1.4. 오프라인 마이그레이션 프로세스의 작동 방식
다음 표는 프로세스의 사용자 시작 단계와 마이그레이션이 수행하는 작업 간에 분할하여 마이그레이션 프로세스를 요약합니다.
사용자 시작 단계 | 마이그레이션 활동 |
---|---|
|
|
|
|
클러스터의 각 노드를 재부팅합니다. |
|
20.5.1.5. 오프라인 마이그레이션 방법을 사용하여 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션
클러스터 관리자는 클러스터의 네트워크 플러그인을 OVN-Kubernetes로 변경할 수 있습니다. 마이그레이션하는 동안 클러스터의 모든 노드를 재부팅해야 합니다.
마이그레이션을 수행하는 동안 클러스터를 사용할 수 없으며 워크로드가 중단될 수 있습니다. 서비스 중단이 허용되는 경우에만 마이그레이션을 수행합니다.
사전 요구 사항
- 네트워크 정책 격리 모드에서 OpenShift SDN CNI 네트워크 플러그인으로 구성된 클러스터가 있어야 합니다.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - etcd 데이터베이스의 최근 백업이 있습니다.
- 각 노드를 수동으로 재부팅할 수 있습니다.
- 클러스터가 오류 없이 알려진 양호한 상태에 있는지 확인합니다.
-
모든 클라우드 플랫폼의 모든 노드에 대해 포트
6081
에서 UDP(User Datagram Protocol) 패킷을 허용하는 보안 그룹 규칙을 생성했습니다. -
Webhook의 모든 시간 제한을
3
초로 설정하거나 Webhook를 제거했습니다.
프로세스
클러스터 네트워크의 구성을 백업하려면 다음 명령을 입력합니다.
$ oc get Network.config.openshift.io cluster -o yaml > cluster-openshift-sdn.yaml
다음 명령을 실행하여
OVN_SDN_MIGRATION_TIMEOUT
환경 변수가 설정되어 있고0s
와 같은지 확인합니다.#!/bin/bash if [ -n "$OVN_SDN_MIGRATION_TIMEOUT" ] && [ "$OVN_SDN_MIGRATION_TIMEOUT" = "0s" ]; then unset OVN_SDN_MIGRATION_TIMEOUT fi #loops the timeout command of the script to repeatedly check the cluster Operators until all are available. co_timeout=${OVN_SDN_MIGRATION_TIMEOUT:-1200s} timeout "$co_timeout" bash <<EOT until oc wait co --all --for='condition=AVAILABLE=True' --timeout=10s && \ oc wait co --all --for='condition=PROGRESSING=False' --timeout=10s && \ oc wait co --all --for='condition=DEGRADED=False' --timeout=10s; do sleep 10 echo "Some ClusterOperators Degraded=False,Progressing=True,or Available=False"; done EOT
다음 명령을 실행하여 CNO(Cluster Network Operator) 구성 오브젝트에서 구성을 제거합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{"spec":{"migration":null}}'
다음 단계를 완료하여 OpenShift SDN 네트워크 플러그인의 기본 네트워크 인터페이스를 정의하는
NodeNetworkConfigurationPolicy
(NNCP) 사용자 정의 리소스(CR)를 삭제합니다.다음 명령을 입력하여 기존 NNCP CR이 기본 인터페이스를 클러스터에 연결했는지 확인합니다.
$ oc get nncp
출력 예
NAME STATUS REASON bondmaster0 Available SuccessfullyConfigured
Network Manager는 결합된 기본 인터페이스에 대한 연결 프로필을
/etc/NetworkManager/system-connections
시스템 경로에 저장합니다.클러스터에서 NNCP를 제거합니다.
$ oc delete nncp <nncp_manifest_filename>
마이그레이션을 위해 모든 노드를 준비하려면 다음 명령을 실행하여 CNO 구성 오브젝트에서
migration
필드를 설정합니다.$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OVNKubernetes" } } }'
참고이 단계는 OVN-Kubernetes를 즉시 배포하지 않습니다. 대신
migration
필드를 지정하면 OVN-Kubernetes 배포를 준비하기 위해 MCO(Machine Config Operator)가 클러스터의 모든 노드에 새 머신 구성을 적용합니다.다음 명령을 실행하여 재부팅이 완료되었는지 확인합니다.
$ oc get mcp
다음 명령을 실행하여 모든 클러스터 Operator를 사용할 수 있는지 확인합니다.
$ oc get co
또는 여러 OpenShift SDN 기능을 동등한 OVN-Kubernetes로 자동 마이그레이션을 비활성화할 수 있습니다.
- 송신 IP
- 송신 방화벽
- 멀티 캐스트
이전에 명시된 OpenShift SDN 기능에 대한 구성 자동 마이그레이션을 비활성화하려면 다음 키를 지정합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OVNKubernetes", "features": { "egressIP": <bool>, "egressFirewall": <bool>, "multicast": <bool> } } } }'
다음과 같습니다.
bool
: 기능의 마이그레이션을 활성화할지 여부를 지정합니다. 기본값은true
입니다.
선택 사항: OVN-Kubernetes에 대해 다음 설정을 사용자 정의하여 네트워크 인프라 요구 사항을 충족할 수 있습니다.
최대 전송 단위(MTU)입니다. 이 선택적 단계에 대한 MTU를 사용자 정의하기 전에 다음을 고려하십시오.
- 기본 MTU를 사용하고 마이그레이션 중에 기본 MTU를 유지하려면 이 단계를 무시할 수 있습니다.
- 사용자 지정 MTU를 사용한 후 마이그레이션 중에 사용자 지정 MTU를 유지하려면 이 단계에서 사용자 지정 MTU 값을 선언해야 합니다.
마이그레이션 중에 MTU 값을 변경하려는 경우 이 단계가 작동하지 않습니다. 대신 먼저 "클러스터 MTU 변경"에 대한 지침을 따라야 합니다. 그런 다음 이 절차를 수행하고 이 단계에서 사용자 지정 MTU 값을 선언하여 사용자 지정 MTU 값을 유지할 수 있습니다.
참고OpenShift-SDN 및 OVN-Kubernetes에는 다른 오버레이 오버헤드가 있습니다. MTU 값은 "MTU 값 선택" 페이지에 있는 지침에 따라 선택해야 합니다.
- Geneve(Generic Network Virtualization Encapsulation) 오버레이 네트워크 포트
- OVN-Kubernetes IPv4 내부 서브넷
이전에 명시된 설정 중 하나를 사용자 정의하려면 다음 명령을 입력하고 사용자 정의합니다. 기본값을 변경할 필요가 없는 경우 패치에서 키를 생략합니다.
$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "ovnKubernetesConfig":{ "mtu":<mtu>, "genevePort":<port>, "v4InternalSubnet":"<ipv4_subnet>", }}}}'
다음과 같습니다.
mtu
-
Geneve 오버레이 네트워크용 MTU입니다. MTU 값은 일반적으로 자동으로 지정되지만 클러스터의 모든 노드가 동일한 MTU를 사용하지 않을 때는 최소 노드 MTU 값에서
100
을 뺀 값으로 명시적으로 설정해야 합니다. port
-
Geneve 오버레이 네트워크용 UDP 포트입니다. 값을 지정하지 않으면 기본값은
6081
입니다. 이 포트는 OpenShift SDN에서 사용하는 VXLAN 포트와 같을 수 없습니다. VXLAN 포트의 기본값은4789
입니다. ipv4_subnet
-
OVN-Kubernetes에서 내부 사용을 위한 IPv4 주소 범위입니다. IP 주소 범위가 OpenShift Container Platform 설치에서 사용하는 다른 서브넷과 겹치지 않도록 해야 합니다. IP 주소 범위는 클러스터에 추가할 수 있는 최대 노드 수보다 커야 합니다. 기본값은
100.64.0.0/16
입니다.
mtu
필드를 업데이트하는 패치 명령 예$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{ "spec":{ "defaultNetwork":{ "ovnKubernetesConfig":{ "mtu":1200 }}}}'
MCO는 각 머신 구성 풀의 머신을 업데이트할 때 각 노드를 하나씩 재부팅합니다. 모든 노드가 업데이트될 때까지 기다려야 합니다. 다음 명령을 입력하여 머신 구성 풀 상태를 확인합니다.
$ oc get mcp
업데이트된 노드의 상태가
UPDATED=true
,UPDATING=false
,DEGRADED=false
입니다.참고기본적으로 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 | grep ExecStart
여기서
<config_name>
은machineconfiguration.openshift.io/currentConfig
필드에서 머신 구성의 이름입니다.머신 구성은 다음 업데이트를 systemd 구성에 포함할 수 있습니다.
ExecStart=/usr/local/bin/configure-ovs.sh OVNKubernetes
노드가
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
는 머신 구성 데몬 포드의 이름입니다.- 이전 명령의 출력에 표시된 로그의 오류를 해결합니다.
마이그레이션을 시작하려면 다음 명령 중 하나를 사용하여 OVN-Kubernetes 네트워크 플러그인을 구성합니다.
클러스터 네트워크 IP 주소 블록을 변경하지 않고 네트워크 공급자를 지정하려면 다음 명령을 입력합니다.
$ oc patch Network.config.openshift.io cluster \ --type='merge' --patch '{ "spec": { "networkType": "OVNKubernetes" } }'
다른 클러스터 네트워크 IP 주소 블록을 지정하려면 다음 명령을 입력합니다.
$ oc patch Network.config.openshift.io cluster \ --type='merge' --patch '{ "spec": { "clusterNetwork": [ { "cidr": "<cidr>", "hostPrefix": <prefix> } ], "networkType": "OVNKubernetes" } }'
여기서
cidr
은 CIDR 블록이며prefix
는 클러스터의 각 노드에 승인된 CIDR 블록 조각입니다. OVN-Kubernetes 네트워크 공급자가 이 블록을 내부에서 사용하므로100.64.0.0/16
CIDR 블록과 겹치는 CIDR 블록을 사용할 수 없습니다.중요마이그레이션 중에 서비스 네트워크 주소 블록을 변경할 수 없습니다.
후속 단계를 계속 진행하기 전에 Multus 데몬 세트 롤아웃이 완료되었는지 확인합니다.
$ oc -n openshift-multus rollout status daemonset/multus
Multus pod의 이름은
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
네트워크 플러그인 변경을 완료하려면 클러스터의 각 노드를 재부팅합니다. 다음 방법 중 하나를 사용하여 클러스터의 노드를 재부팅할 수 있습니다.
중요다음 스크립트는 클러스터의 모든 노드를 동시에 재부팅합니다. 이로 인해 클러스터가 불안정해질 수 있습니다. 또 다른 옵션은 노드를 한 번에 수동으로 재부팅하는 것입니다. 노드를 하나씩 재부팅하면 여러 노드가 있는 클러스터에서 상당한 다운타임이 발생합니다.
노드를 재부팅하기 전에 클러스터 Operator가 제대로 작동하지 않습니다.
oc rsh
명령을 사용하면 다음과 유사한 bash 스크립트를 사용할 수 있습니다.#!/bin/bash readarray -t POD_NODES <<< "$(oc get pod -n openshift-machine-config-operator -o wide| grep daemon|awk '{print $1" "$7}')" for i in "${POD_NODES[@]}" do read -r POD NODE <<< "$i" until oc rsh -n openshift-machine-config-operator "$POD" chroot /rootfs shutdown -r +1 do echo "cannot reboot node $NODE, retry" && sleep 3 done done
ssh
명령을 사용하면 다음과 유사한 bash 스크립트를 사용할 수 있습니다. 이 스크립트는 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
마이그레이션이 성공했는지 확인합니다.
네트워크 플러그인이 OVN-Kubernetes인지 확인하려면 다음 명령을 입력합니다.
status.networkType
의 값은OVNKubernetes
이어야 합니다.$ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
클러스터 노드가
준비
상태에 있는지 확인하려면 다음 명령을 입력합니다.$ oc get nodes
Pod가 오류 상태가 아닌지 확인하려면 다음 명령을 입력합니다.
$ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'
노드의 Pod가 오류 상태인 경우 해당 노드를 재부팅합니다.
모든 클러스터 Operator가 비정상적인 상태가 아닌지 확인하려면 다음 명령을 입력합니다.
$ oc get co
모든 클러스터 Operator의 상태는
AVAILABLE="True"
,PROGRESSING="False"
,DEGRADED="False"
여야 합니다. 클러스터 Operator를 사용할 수 없거나 성능이 저하된 경우 자세한 내용은 클러스터 Operator의 로그를 확인합니다.
마이그레이션이 성공하고 클러스터가 양호한 상태인 경우에만 다음 단계를 완료합니다.
CNO 구성 오브젝트에서 마이그레이션 구성을 제거하려면 다음 명령을 입력합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'
OpenShift SDN 네트워크 제공자에 대한 사용자 정의 구성을 제거하려면 다음 명령을 입력합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "openshiftSDNConfig": null } } }'
OpenShift SDN 네트워크 공급자 네임스페이스를 제거하려면 다음 명령을 입력합니다.
$ oc delete namespace openshift-sdn
다음 단계
- 선택 사항: 클러스터 마이그레이션 후 IPv4 단일 스택 클러스터를 IPv4 및 IPv6 주소 제품군을 지원하는 듀얼 네트워크 클러스터 네트워크로 변환할 수 있습니다. 자세한 내용은 "IPv4/IPv6 듀얼 스택 네트워킹으로 변환"을 참조하십시오.
20.5.2. OVN-Kubernetes 네트워크 플러그인으로의 실시간 마이그레이션 개요
제한된 실시간 마이그레이션 방법은 OpenShift SDN 네트워크 플러그인과 네트워크 구성, 연결 및 관련 리소스가 서비스 중단 없이 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션하는 프로세스입니다. OpenShift Container Platform에서 사용할 수 있으며 OpenShift SDN에서 OVN-Kubernetes로 마이그레이션하는 기본 방법입니다. 실시간 마이그레이션을 수행할 수 없는 경우 오프라인 마이그레이션 방법을 사용할 수 있습니다.
OVN-Kubernetes 네트워크 플러그인을 사용하도록 OpenShift Container Platform 클러스터를 마이그레이션하기 전에 모든 최신 버그 수정이 클러스터에 적용되도록 클러스터를 최신 z-stream 릴리스로 업데이트합니다.
호스팅된 컨트롤 플레인 배포 유형에는 사용할 수 없습니다. 이 마이그레이션 방법은 지속적인 서비스 가용성이 필요하며 다음과 같은 이점을 제공하는 배포 유형에 중요합니다.
- 지속적인 서비스 가용성
- 다운타임 최소화
- 자동 노드 재부팅
- OpenShift SDN 네트워크 플러그인에서 OVN-Kubernetes 네트워크 플러그인으로의 원활한 전환
롤백 절차가 제공되지만 제한된 실시간 마이그레이션은 단방향 프로세스로 사용됩니다.
OpenShift SDN CNI는 OpenShift Container Platform 4.14에서 더 이상 사용되지 않습니다. OpenShift Container Platform 4.15부터 네트워크 플러그인은 새 설치를 위한 옵션이 아닙니다. 향후 릴리스에서 OpenShift SDN 네트워크 플러그인은 제거될 예정이며 더 이상 지원되지 않습니다. Red Hat은 제거될 때까지 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않습니다. OpenShift SDN CNI 대신 OVN Kubernetes CNI를 대신 사용할 수 있습니다. 자세한 내용은 OpenShift SDN CNI 제거를 참조하십시오.
다음 섹션에서는 제한된 실시간 마이그레이션 방법에 대한 자세한 정보를 제공합니다.
20.5.2.1. 제한된 실시간 마이그레이션 방법을 사용하는 경우 지원되는 플랫폼
다음 표에서는 제한된 실시간 마이그레이션 유형에 대해 지원되는 플랫폼에 대한 정보를 제공합니다.
플랫폼 | 제한된 실시간 마이그레이션 |
---|---|
베어 메탈 하드웨어 | ✓ |
AWS(Amazon Web Services) | ✓ |
GCP(Google Cloud Platform) | ✓ |
IBM Cloud® | ✓ |
Microsoft Azure | ✓ |
Red Hat OpenStack Platform (RHOSP) | ✓ |
VMware vSphere | ✓ |
Nutanix | ✓ |
나열된 각 플랫폼은 설치 관리자 프로비저닝 인프라 및 사용자 프로비저닝 인프라에 OpenShift Container Platform 클러스터 설치를 지원합니다.
20.5.2.2. OVN-Kubernetes 네트워크 플러그인으로 실시간 마이그레이션의 모범 사례
실시간 마이그레이션 방법이 제한된 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션할 때의 모범 사례 목록은 OpenShift SDN에서 OVN-Kubernetes로 제한된 실시간 마이그레이션을 참조하십시오.
20.5.2.3. OVN-Kubernetes 네트워크 플러그인으로의 제한된 실시간 마이그레이션 고려 사항
OVN-Kubernetes 네트워크 플러그인에 제한된 실시간 마이그레이션 방법을 사용하기 전에 클러스터 관리자는 다음 정보를 고려해야 합니다.
- OpenShift SDN 다중 테넌트 모드가 활성화된 클러스터에는 제한된 실시간 마이그레이션 절차가 지원되지 않습니다.
- 송신 라우터 Pod는 제한된 실시간 마이그레이션 프로세스를 차단합니다. 제한된 실시간 마이그레이션 프로세스를 시작하기 전에 제거해야 합니다.
- 마이그레이션 중에 OVN-Kubernetes 및 OpenShift SDN을 모두 사용하여 클러스터가 실행되면 CNI 모두에서 멀티 캐스트 및 송신 IP 주소가 일시적으로 비활성화됩니다. 송신 방화벽은 계속 작동합니다.
- 마이그레이션은 단방향 프로세스로 설계되었습니다. 그러나 OpenShift-SDN으로 롤백하려는 사용자의 경우 OpenShift-SDN에서 OVN-Kubernetes로의 마이그레이션이 성공해야 합니다. 사용자는 아래 동일한 절차에 따라 OVN-Kubernetes 네트워크 플러그인에서 OpenShift SDN 네트워크 플러그인으로 마이그레이션할 수 있습니다.
- HyperShift 클러스터에서는 제한된 실시간 마이그레이션이 지원되지 않습니다.
- OpenShift SDN은 IPsec을 지원하지 않습니다. 클러스터 관리자는 마이그레이션 후 IPsec을 활성화할 수 있습니다.
- OpenShift SDN은 IPv6를 지원하지 않습니다. 클러스터 관리자는 마이그레이션 후 듀얼 스택을 활성화할 수 있습니다.
-
OpenShift SDN 플러그인을 사용하면
NodeNetworkConfigurationPolicy
(NNCP) 사용자 정의 리소스(CR)를 노드의 기본 인터페이스에 적용할 수 있습니다. OVN-Kubernetes 네트워크 플러그인에는 이 기능이 없습니다. 클러스터 MTU는 Pod 인터페이스의 MTU 값입니다. 클러스터 네트워크 오버레이 오버헤드를 고려하여 하드웨어 MTU보다 항상 적습니다. 이 오버헤드는 OVN-Kubernetes의 경우 100바이트와 OpenShift SDN의 경우 50바이트입니다.
제한된 실시간 마이그레이션 중에 OVN-Kubernetes 및 OpenShift SDN이 병렬로 실행됩니다. OVN-Kubernetes는 일부 노드의 클러스터 네트워크를 관리하는 반면 OpenShift SDN은 다른 노드의 클러스터 네트워크를 관리합니다. 교차 CNI 트래픽이 작동하도록 하기 위해 Cluster Network Operator는 두 CNI가 동일한 오버레이 MTU를 공유하도록 라우팅 가능한 MTU를 업데이트합니다. 결과적으로 마이그레이션이 완료되면 클러스터 MTU가 50바이트 더 적습니다.
OVN-Kubernetes의 일부 매개변수는 설치 후 변경할 수 없습니다. 제한된 실시간 마이그레이션을 시작하기 전에 다음 매개변수를 설정할 수 있습니다.
-
InternalTransitSwitchSubnet
-
internalJoinSubnet
-
-
OVN-Kubernetes는
100.64.0.0/16
및100.88.0.0/16
IP 주소 범위를 예약합니다. 이러한 서브넷은 다른 내부 또는 외부 네트워크와 중복될 수 없습니다. 이러한 IP 주소를 OpenShift SDN 또는 이 클러스터와 통신할 수 있는 외부 네트워크에서 사용한 경우 제한된 실시간 마이그레이션을 시작하기 전에 다른 IP 주소 범위를 사용하도록 패치해야 합니다. 자세한 내용은 " OVN-Kubernetes 주소 범위 배치"를 참조하십시오. - 대부분의 경우 실시간 마이그레이션은 Multus CNI 플러그인에서 생성한 Pod의 보조 인터페이스와 독립적입니다. 그러나 이러한 보조 인터페이스가 호스트의 기본 네트워크 인터페이스 컨트롤러(예: MACVLAN, IPVLAN, SR-IOV 또는 브리지 인터페이스)에 제어 노드로 기본 NIC를 사용하는 경우 OVN-Kubernetes는 오작동이 발생할 수 있습니다. 사용자는 제한된 실시간 마이그레이션을 진행하기 전에 이러한 구성을 제거해야 합니다.
- 호스트 내부에 NIC가 여러 개 있고 기본 경로가 Kubernetes NodeIP가 있는 인터페이스에 없는 경우 대신 오프라인 마이그레이션을 사용해야 합니다.
-
제한된 실시간 마이그레이션을 시작하기 전에 CNO(Cluster Network Operator)에서 관리하지 않는
openshift-sdn
네임스페이스의 모든DaemonSet
오브젝트를 제거해야 합니다. 이러한 관리되지 않는 데몬 세트로 인해 제대로 처리되지 않은 경우 마이그레이션 상태가 불완전하게 유지될 수 있습니다. -
Operator를 실행하거나 Pod 중단 예산으로 애플리케이션을 구성한 경우 업데이트 프로세스 중에 중단이 발생할 수 있습니다.
PodDisruptionBudget
에서minAvailable
이 1로 설정된 경우 제거 프로세스를 차단할 수 있는 보류 중인 머신 구성을 적용하기 위해 노드가 드레인됩니다. 여러 노드가 재부팅되면 모든 Pod가 하나의 노드에서만 실행될 수 있으며PodDisruptionBudget
필드에는 노드가 드레이닝되지 않을 수 있습니다.
추가 리소스
20.5.2.4. 제한된 실시간 마이그레이션 프로세스의 작동 방식
다음 표에는 프로세스의 사용자 시작 단계와 마이그레이션 스크립트가 수행하는 작업 간에 분할하여 제한된 실시간 마이그레이션 프로세스가 요약되어 있습니다.
사용자 시작 단계 | 마이그레이션 활동 |
---|---|
|
|
20.5.2.5. 제한된 실시간 마이그레이션 방법을 사용하여 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션
제한된 실시간 마이그레이션 방법을 사용하여 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션하는 것은 사용자가 송신 IP 리소스, 송신 방화벽 리소스 및 멀티 캐스트 지원 네임스페이스의 동작을 확인해야 하는 여러 단계 프로세스입니다. 또한 관리자는 배포의 모든 네트워크 정책을 검토하고 제한된 실시간 마이그레이션 프로세스를 시작하기 전에 송신 라우터 리소스를 제거해야 합니다. 다음 절차를 연속으로 사용해야 합니다.
20.5.2.5.1. 제한된 실시간 마이그레이션을 시작하기 전에 클러스터 리소스 확인
제한된 실시간 마이그레이션을 사용하여 OVN-Kubernetes로 마이그레이션하기 전에 OpenShift SDN 배포에서 송신 IP 리소스, 송신 방화벽 리소스 및 멀티 캐스트 사용 네임스페이스를 확인해야 합니다. 배포의 모든 네트워크 정책도 검토해야 합니다. 마이그레이션 전에 클러스터에 이러한 리소스가 있는 경우 마이그레이션 후 해당 리소스가 예상대로 작동하는지 확인해야 합니다.
다음 절차에서는 송신 IP 리소스, 송신 방화벽 리소스, 멀티 캐스트 사용 네임스페이스, 네트워크 정책 및 NNCP를 확인하는 방법을 보여줍니다. 이러한 리소스를 확인한 후에는 작업이 필요하지 않습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
OpenShift Container Platform 클러스터 관리자로서 송신 방화벽 리소스를 확인합니다.
oc
CLI를 사용하거나 OpenShift Container Platform 웹 콘솔을 사용하여 이 작업을 수행할 수 있습니다.oc
CLI 툴을 사용하여 송신 방화벽 리소스를 확인하려면 다음을 수행합니다.송신 방화벽 리소스를 확인하려면 다음 명령을 입력합니다.
$ oc get egressnetworkpolicies.network.openshift.io -A
출력 예
NAMESPACE NAME AGE <namespace> <example_egressfirewall> 5d
-o yaml
플래그를 사용하여 송신 방화벽 리소스의 의도된 동작을 확인할 수 있습니다. 예를 들면 다음과 같습니다.$ oc get egressnetworkpolicy <example_egressfirewall> -n <namespace> -o yaml
출력 예
apiVersion: network.openshift.io/v1 kind: EgressNetworkPolicy metadata: name: <example_egress_policy> namespace: <namespace> spec: egress: - type: Allow to: cidrSelector: 0.0.0.0/0 - type: Deny to: cidrSelector: 10.0.0.0/8
OpenShift Container Platform 웹 콘솔을 사용하여 송신 방화벽 리소스를 확인하려면 다음을 수행합니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
메트릭 을 클릭합니다. -
표현식 상자에
sdn_controller_num_egress_firewalls
를 입력하고 쿼리 실행을 클릭합니다. 송신 방화벽 리소스가 있는 경우 표현식 상자에서 반환됩니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
송신 IP 리소스가 있는지 클러스터에 확인합니다.
oc
CLI를 사용하거나 OpenShift Container Platform 웹 콘솔을 사용하여 이 작업을 수행할 수 있습니다.oc
CLI 툴을 사용하여 송신 IP를 확인하려면 다음을 수행합니다.송신 IP 리소스가 있는 네임스페이스를 나열하려면 다음 명령을 입력합니다.
$ oc get netnamespace -A | awk '$3 != ""'
출력 예
NAME NETID EGRESS IPS namespace1 14173093 ["10.0.158.173"] namespace2 14173020 ["10.0.158.173"]
OpenShift Container Platform 웹 콘솔을 사용하여 송신 IP를 확인하려면 다음을 수행합니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
메트릭 을 클릭합니다. -
표현식 상자에
sdn_controller_num_egress_ips
를 입력하고 쿼리 실행을 클릭합니다. 송신 방화벽 리소스가 있는 경우 표현식 상자에서 반환됩니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
클러스터에 멀티 캐스트가 활성화된 네임스페이스가 있는지 확인합니다.
oc
CLI를 사용하거나 OpenShift Container Platform 웹 콘솔을 사용하여 이 작업을 수행할 수 있습니다.oc
CLI 툴을 사용하여 멀티 캐스트가 활성화된 네임스페이스를 확인하려면 다음을 수행합니다.멀티 캐스트가 활성화된 네임스페이스를 찾으려면 다음 명령을 입력합니다.
$ oc get netnamespace -o json | jq -r '.items[] | select(.metadata.annotations."netnamespace.network.openshift.io/multicast-enabled" == "true") | .metadata.name'
출력 예
namespace1 namespace3
OpenShift Container Platform 웹 콘솔을 사용하여 멀티 캐스트가 활성화된 네임스페이스를 확인하려면 다음을 수행합니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
메트릭 을 클릭합니다. -
표현식 상자에
sdn_controller_num_multicast_enabled_namespaces
를 입력하고 쿼리 실행을 클릭합니다. 멀티 캐스트가 활성화된 네임스페이스가 있는 경우 표현식 상자에 반환됩니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
모든 네트워크 정책의 클러스터를 확인합니다.
oc
CLI를 사용하여 이 작업을 수행할 수 있습니다.oc
CLI 툴을 사용하여 네트워크 정책을 확인하려면 다음 명령을 입력합니다.$ oc get networkpolicy -n <namespace>
출력 예
NAME POD-SELECTOR AGE allow-multicast app=my-app 11m
20.5.2.5.2. 제한된 실시간 마이그레이션을 시작하기 전에 송신 라우터 Pod 제거
제한된 실시간 마이그레이션을 시작하기 전에 송신 라우터 Pod를 확인하고 제거해야 합니다. 제한된 실시간 마이그레이션을 수행할 때 클러스터에 송신 라우터 Pod가 있는 경우 Network Operator는 마이그레이션을 차단하고 다음 오류를 반환합니다.
The cluster configuration is invalid (network type limited live migration is not supported for pods with `pod.network.openshift.io/assign-macvlan` annotation. Please remove all egress router pods). Use `oc edit network.config.openshift.io cluster` to fix.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
클러스터에서 송신 라우터 Pod를 찾으려면 다음 명령을 입력합니다.
$ oc get pods --all-namespaces -o json | jq '.items[] | select(.metadata.annotations."pod.network.openshift.io/assign-macvlan" == "true") | {name: .metadata.name, namespace: .metadata.namespace}'
출력 예
{ "name": "egress-multi", "namespace": "egress-router-project" }
또는 OpenShift Container Platform 웹 콘솔에서 메트릭을 쿼리할 수 있습니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
메트릭 을 클릭합니다. -
표현식 상자에
network_attachment_definition_instances{networks="egress-router"}
를 입력합니다. 그런 다음 추가 를 클릭합니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
송신 라우터 Pod를 제거하려면 다음 명령을 입력합니다.
$ oc delete pod <egress_pod_name> -n <egress_router_project>
20.5.2.5.3. NodeNetworkConfigurationPolicy
(NNCP) 사용자 정의 리소스(CR) 제거
OpenShift SDN 플러그인을 사용하면 NodeNetworkConfigurationPolicy(NNCP) 사용자 정의 리소스(CR)를 노드의 기본 인터페이스에 적용할 수 있습니다. OVN-Kubernetes 네트워크 플러그인에는 이 기능이 없습니다.
기본 인터페이스에 NNCP가 적용된 경우 OVN-Kubernetes 네트워크 플러그인으로 마이그레이션하기 전에 NNCP를 삭제해야 합니다. NNCP를 삭제해도 기본 인터페이스에서 구성은 제거되지 않지만 Kubernetes-NMState는 이 구성을 관리할 수 없습니다. 대신 configure-ovs.sh
쉘 스크립트는 기본 인터페이스와 연결된 구성을 관리합니다.
사전 요구 사항
- NNCP CR을 생성하여 네트워크의 기본 인터페이스에 적용했습니다.
프로세스
다음 명령을 실행하여 CNO(Cluster Network Operator) 구성 오브젝트에서 구성을 제거합니다.
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{"spec":{"migration":null}}'
다음 단계를 완료하여 OpenShift SDN 네트워크 플러그인의 기본 네트워크 인터페이스를 정의하는
NodeNetworkConfigurationPolicy
(NNCP) 사용자 정의 리소스(CR)를 삭제합니다.다음 명령을 입력하여 기존 NNCP CR이 기본 인터페이스를 클러스터에 연결했는지 확인합니다.
$ oc get nncp
출력 예
NAME STATUS REASON bondmaster0 Available SuccessfullyConfigured
Network Manager는 결합된 기본 인터페이스에 대한 연결 프로필을
/etc/NetworkManager/system-connections
시스템 경로에 저장합니다.클러스터에서 NNCP를 제거합니다.
$ oc delete nncp <nncp_manifest_filename>
20.5.2.5.4. 제한된 실시간 마이그레이션 프로세스 시작
송신 IP 리소스, 송신 방화벽 리소스 및 멀티 캐스트 지원 네임스페이스의 동작을 확인하고 송신 라우터 리소스를 제거한 후 제한된 실시간 마이그레이션 프로세스를 시작할 수 있습니다.
사전 요구 사항
- 네트워크 정책 격리 모드에서 OpenShift SDN CNI 네트워크 플러그인으로 클러스터가 구성되었습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - etcd 데이터베이스의 최근 백업을 생성했습니다.
- 클러스터는 오류 없이 알려진 양호한 상태입니다.
-
OVN-Kubernetes로 마이그레이션하기 전에 모든 클라우드 플랫폼의 모든 노드에 대해 포트
6081
에서 UDP 패킷을 허용하려면 보안 그룹 규칙이 있어야 합니다. -
100.64.0.0/16
및100.88.0.0/16
주소 범위가 이전에 OpenShift-SDN에서 사용 중인 경우 이를 패치했습니다. 이 절차의 첫 번째 단계에서는 이러한 주소 범위가 사용 중인지 확인합니다. 사용 중인 경우 "Open OVN-Kubernetes 주소 범위 배치"를 참조하십시오. - 송신 IP 리소스, 송신 방화벽 리소스 및 멀티 캐스트 지원 네임스페이스를 확인했습니다.
- 제한된 실시간 마이그레이션을 시작하기 전에 송신 라우터 Pod를 제거했습니다. 송신 라우터 Pod에 대한 자세한 내용은 "전환 모드에서 송신 라우터 Pod 배포"를 참조하십시오.
- 이 문서의 "유효한 실시간 마이그레이션에 대한 실시간 마이그레이션 고려 사항" 섹션을 검토했습니다.
프로세스
클러스터 수준 네트워킹 구성을 패치하고 OpenShift SDN에서 OVN-Kubernetes로의 마이그레이션을 시작하려면 다음 명령을 입력합니다.
$ oc patch Network.config.openshift.io cluster --type='merge' --patch '{"metadata":{"annotations":{"network.openshift.io/network-type-migration":""}},"spec":{"networkType":"OVNKubernetes"}}'
이 명령을 실행하면 마이그레이션 프로세스가 시작됩니다. 이 프로세스 중에 Machine Config Operator는 클러스터의 노드를 두 번 재부팅합니다. 마이그레이션은 클러스터를 업그레이드하는 데 약 2배 정도 걸립니다.
중요이
oc patch
명령은 OpenShift SDN에서 사용 중인 중복되는 CIDR을 확인합니다. 중복되는 CIDR이 감지되면 제한된 실시간 마이그레이션 프로세스를 시작하기 전에 해당 CIDR을 패치해야 합니다. 자세한 내용은 " OVN-Kubernetes 주소 범위 배치"를 참조하십시오.선택 사항: 마이그레이션 프로세스가 완료되었는지 확인하고
network.config
의 상태를 확인하려면 다음 명령을 입력합니다.$ oc get network.config.openshift.io cluster -o jsonpath='{.status.networkType}'
$ oc get network.config cluster -o=jsonpath='{.status.conditions}' | jq .
제한된 실시간 마이그레이션 메트릭을 확인하여 문제를 해결할 수 있습니다. 자세한 내용은 "제한된 실시간 마이그레이션 메트릭 확인"을 참조하십시오.
20.5.2.5.5. OVN-Kubernetes 주소 범위 패치
OVN-Kubernetes는 다음 IP 주소 범위를 예약합니다.
-
100.64.0.0/16
. 이 IP 주소 범위는 기본적으로 OVN-Kubernetes의internalJoinSubnet
매개변수에 사용됩니다. -
100.88.0.0/16
. 이 IP 주소 범위는 기본적으로 OVN-Kubernetes의internalTransSwitchSubnet
매개변수에 사용됩니다.
이러한 IP 주소를 OpenShift SDN 또는 이 클러스터와 통신할 수 있는 외부 네트워크에서 사용한 경우 제한된 실시간 마이그레이션을 시작하기 전에 다른 IP 주소 범위를 사용하도록 패치해야 합니다.
다음 절차는 마이그레이션이 처음 차단된 경우 OpenShift SDN에서 사용 중인 CIDR 범위를 패치하는 데 사용할 수 있습니다.
이 절차는 선택적 절차이며 oc patch Network.config.openshift.io 클러스터 --type='merge' --patch '{"metadata":{"annotations":{"network.io/network-type-migration":"}},"spec":{"networkType":"OVNKubernetes" command "
Initiating the restricted migration process" 명령을 사용한 후에만 사용해야 합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
100.64.0.0/16
IP 주소 범위가 이미 사용 중인 경우 다음 명령을 입력하여 다른 범위에 패치합니다. 다음 예제에서는100.63.0.0/16
을 사용합니다.$ oc patch network.operator.openshift.io cluster --type='merge' -p='{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"ipv4":{"internalJoinSubnet": "100.63.0.0/16"}}}}}'
100.88.0.0/16
IP 주소 범위가 이미 사용 중인 경우 다음 명령을 입력하여 다른 범위에 패치합니다. 다음 예제에서는100.99.0.0/16
을 사용합니다.$ oc patch network.operator.openshift.io cluster --type='merge' -p='{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"ipv4":{"internalTransitSwitchSubnet": "100.99.0.0/16"}}}}}'
100.64.0.0/16
및 100.88.0.0/16
IP 주소 범위를 패치한 후 제한된 실시간 마이그레이션을 시작할 수 있습니다.
20.5.2.5.6. 제한된 실시간 마이그레이션 시작 후 클러스터 리소스 확인
다음 절차에서는 배포에서 OVN-Kubernetes를 사용할 때 송신 IP 리소스, 송신 방화벽 리소스, 멀티 캐스트 사용 네임스페이스 및 네트워크 정책을 확인하는 방법을 보여줍니다. OpenShift SDN에 이러한 리소스가 있는 경우 마이그레이션 후 해당 리소스가 제대로 작동하는지 확인해야 합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - 제한된 실시간 마이그레이션을 사용하여 OpenShift SDN에서 OVN-Kubernetes로 성공적으로 마이그레이션했습니다.
프로세스
OpenShift Container Platform 클러스터 관리자로서 송신 방화벽 리소스를 확인합니다.
oc
CLI를 사용하거나 OpenShift Container Platform 웹 콘솔을 사용하여 이 작업을 수행할 수 있습니다.oc
CLI 툴을 사용하여 송신 방화벽 리소스를 확인하려면 다음을 수행합니다.송신 방화벽 리소스를 확인하려면 다음 명령을 입력합니다.
$ oc get egressfirewalls.k8s.ovn.org -A
출력 예
NAMESPACE NAME AGE <namespace> <example_egressfirewall> 5d
-o yaml
플래그를 사용하여 송신 방화벽 리소스의 의도된 동작을 확인할 수 있습니다. 예를 들면 다음과 같습니다.$ oc get egressfirewall <example_egressfirewall> -n <namespace> -o yaml
출력 예
apiVersion: k8s.ovn.org/v1 kind: EgressFirewall metadata: name: <example_egress_policy> namespace: <namespace> spec: egress: - type: Allow to: cidrSelector: 192.168.0.0/16 - type: Deny to: cidrSelector: 0.0.0.0/0
마이그레이션 후 변경될 수 있으므로 이 리소스의 동작이 의도되었는지 확인합니다. 송신 방화벽에 대한 자세한 내용은 "프로젝트에 대한 송신 방화벽 구성"을 참조하십시오.
OpenShift Container Platform 웹 콘솔을 사용하여 송신 방화벽 리소스를 확인하려면 다음을 수행합니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
메트릭 을 클릭합니다. -
Expression 상자에
ovnkube_controller_num_egress_firewall_rules
를 입력하고 쿼리 실행을 클릭합니다. 송신 방화벽 리소스가 있는 경우 표현식 상자에서 반환됩니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
송신 IP 리소스가 있는지 클러스터에 확인합니다.
oc
CLI를 사용하거나 OpenShift Container Platform 웹 콘솔을 사용하여 이 작업을 수행할 수 있습니다.oc
CLI 툴을 사용하여 송신 IP를 확인하려면 다음을 수행합니다.송신 IP 리소스가 있는 네임스페이스를 나열하려면 다음 명령을 입력합니다.
$ oc get egressip
출력 예
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS egress-sample 192.0.2.10 ip-10-0-42-79.us-east-2.compute.internal 192.0.2.10 egressip-sample-2 192.0.2.14 ip-10-0-42-79.us-east-2.compute.internal 192.0.2.14
송신 IP에 대한 자세한 정보를 제공하려면 다음 명령을 입력합니다.
$ oc get egressip <egressip_name> -o yaml
출력 예
apiVersion: k8s.ovn.org/v1 kind: EgressIP metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"k8s.ovn.org/v1","kind":"EgressIP","metadata":{"annotations":{},"name":"egressip-sample"},"spec":{"egressIPs":["192.0.2.12","192.0.2.13"],"namespaceSelector":{"matchLabels":{"name":"my-namespace"}}}} creationTimestamp: "2024-06-27T15:48:36Z" generation: 7 name: egressip-sample resourceVersion: "125511578" uid: b65833c8-781f-4cc9-bc96-d970259a7631 spec: egressIPs: - 192.0.2.12 - 192.0.2.13 namespaceSelector: matchLabels: name: my-namespace
모든 송신 IP에 대해 이 작업을 반복합니다. 마이그레이션 후 변경될 수 있으므로 각 리소스의 동작이 의도되었는지 확인합니다. EgressIP에 대한 자세한 내용은 " EgressIP 주소 구성"을 참조하십시오.
OpenShift Container Platform 웹 콘솔을 사용하여 송신 IP를 확인하려면 다음을 수행합니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
메트릭 을 클릭합니다. -
Expression 상자에
ovnkube_clustermanager_num_egress_ips
를 입력하고 쿼리 실행을 클릭합니다. 송신 방화벽 리소스가 있는 경우 표현식 상자에서 반환됩니다.
-
OpenShift Container Platform 웹 콘솔에서 모니터링
클러스터에 멀티 캐스트가 활성화된 네임스페이스가 있는지 확인합니다.
oc
CLI를 사용하여 이 작업을 수행할 수 있습니다.멀티 캐스트가 활성화된 네임스페이스를 찾으려면 다음 명령을 입력합니다.
$ oc get namespace -o json | jq -r '.items[] | select(.metadata.annotations."k8s.ovn.org/multicast-enabled" == "true") | .metadata.name'
출력 예
namespace1 namespace3
멀티 캐스트가 활성화된 각 네임스페이스를 설명하려면 다음 명령을 입력합니다.
$ oc describe namespace <namespace>
출력 예
Name: my-namespace Labels: kubernetes.io/metadata.name=my-namespace pod-security.kubernetes.io/audit=restricted pod-security.kubernetes.io/audit-version=v1.24 pod-security.kubernetes.io/warn=restricted pod-security.kubernetes.io/warn-version=v1.24 Annotations: k8s.ovn.org/multicast-enabled: true openshift.io/sa.scc.mcs: s0:c25,c0 openshift.io/sa.scc.supplemental-groups: 1000600000/10000 openshift.io/sa.scc.uid-range: 1000600000/10000 Status: Active
멀티 캐스트 기능이 각 네임스페이스에서 예상대로 올바르게 구성되어 작동하는지 확인합니다. 자세한 내용은 "프로젝트에 멀티 캐스트 활성화"를 참조하십시오.
클러스터의 네트워크 정책을 확인합니다.
oc
CLI를 사용하여 이 작업을 수행할 수 있습니다.네임스페이스 내에서 네트워크 정책에 대한 정보를 얻으려면 다음 명령을 입력합니다.
$ oc get networkpolicy -n <namespace>
출력 예
NAME POD-SELECTOR AGE allow-multicast app=my-app 11m
네트워크 정책에 대한 자세한 정보를 제공하려면 다음 명령을 입력합니다.
$ oc describe networkpolicy allow-multicast -n <namespace>
출력 예
Name: allow-multicast Namespace: my-namespace Created on: 2024-07-24 14:55:03 -0400 EDT Labels: <none> Annotations: <none> Spec: PodSelector: app=my-app Allowing ingress traffic: To Port: <any> (traffic allowed to all ports) From: IPBlock: CIDR: 224.0.0.0/4 Except: Allowing egress traffic: To Port: <any> (traffic allowed to all ports) To: IPBlock: CIDR: 224.0.0.0/4 Except: Policy Types: Ingress, Egress
네트워크 정책의 동작이 의도한 대로 설정되어 있는지 확인합니다. 네트워크 정책에 대한 최적화는 SDN과 OVN-K 간에 다르므로 사용자는 다른 CNI에 대해 최적의 성능을 달성하기 위해 정책을 조정해야 할 수 있습니다. 자세한 내용은 "네트워크 정책 정보"를 참조하십시오.
20.5.2.6. 제한된 실시간 마이그레이션 메트릭 확인
메트릭은 제한된 실시간 마이그레이션의 진행 상황을 모니터링하는 데 사용할 수 있습니다. 메트릭은 OpenShift Container Platform 웹 콘솔에서 또는 oc
CLI를 사용하여 볼 수 있습니다.
사전 요구 사항
- OVN-Kubernetes로 제한된 실시간 마이그레이션을 시작했습니다.
프로세스
OpenShift Container Platform 웹 콘솔에서 제한된 실시간 마이그레이션 메트릭을 보려면 다음을 수행합니다.
-
모니터링
메트릭 을 클릭합니다. - Expression 상자에 openshift_network를 입력하고 openshift_network _operator_live_migration_condition 옵션을 클릭합니다.
-
모니터링
oc
CLI를 사용하여 메트릭을 보려면 다음을 수행합니다.다음 명령을 입력하여
openshift-monitoring
네임스페이스에서prometheus-k8s
서비스 계정에 대한 토큰을 생성합니다.$ oc create token prometheus-k8s -n openshift-monitoring
출력 예
eyJhbGciOiJSUzI1NiIsImtpZCI6IlZiSUtwclcwbEJ2VW9We...
다음 명령을 입력하여
openshift_network_operator_live_migration_condition
메트릭에 대한 정보를 요청합니다.$ oc -n openshift-monitoring exec -c prometheus prometheus-k8s-0 -- curl -k -H "Authorization: <eyJhbGciOiJSUzI1NiIsImtpZCI6IlZiSUtwclcwbEJ2VW9We...>" "https://<openshift_API_endpoint>" --data-urlencode "query=openshift_network_operator_live_migration_condition" | jq
출력 예
"status": "success", "data": { "resultType": "vector", "result": [ { "metric": { "__name__": "openshift_network_operator_live_migration_condition", "container": "network-operator", "endpoint": "metrics", "instance": "10.0.83.62:9104", "job": "metrics", "namespace": "openshift-network-operator", "pod": "network-operator-6c87754bc6-c8qld", "prometheus": "openshift-monitoring/k8s", "service": "metrics", "type": "NetworkTypeMigrationInProgress" }, "value": [ 1717653579.587, "1" ] }, ...
"Limit about limited live migration metrics"의 표는 사용 가능한 메트릭과 openshift_network_operator_live_migration_condition
표현식에서 채워진 라벨 값을 보여줍니다. 이 정보를 사용하여 진행 상황을 모니터링하거나 마이그레이션 문제를 해결합니다.
20.5.2.6.1. 제한된 실시간 마이그레이션 메트릭에 대한 정보
다음 표는 openshift_network_operator_live_migration_condition
표현식에서 채워진 사용 가능한 메트릭 및 라벨 값을 보여줍니다. 이 정보를 사용하여 진행 상황을 모니터링하거나 마이그레이션 문제를 해결합니다.
지표 | 레이블 값 |
---|---|
|
|
|
|
20.5.3. 추가 리소스
- Red Hat OpenShift Network Calculator
- OVN-Kubernetes 네트워크 플러그인 구성
- etcd 백업
- 네트워크 정책 정의
- 클러스터 MTU 변경
- MTU 값 선택
- 네트워크 정책 정의
- IPv4/IPv6 듀얼 스택 네트워킹으로 변환
OVN-Kubernetes 기능
OpenShift SDN 기능
- Network [operator.openshift.io/v1