25.5. 从 OpenShift SDN 网络插件迁移
作为集群管理员,您可以从 OpenShift SDN 网络插件迁移到 OVN-Kubernetes 网络插件。
您可以使用离线迁移方法从 OpenShift SDN 网络插件迁移到 OVN-Kubernetes 插件。离线迁移是一个手动过程,会包括一些停机时间。
25.5.1. 迁移到 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
迁移到 OVN-Kubernetes 网络插件是一个手动的过程,其中会包括一些停机时间,在此期间集群无法被访问。
在将 OpenShift Container Platform 集群迁移到使用 OVN-Kubernetes 网络插件前,将集群更新至最新的 z-stream 版本,以便所有最新的程序错误修复都应用到集群。
虽然提供了一个回滚过程,但迁移通常被认为是一个单向过程。
在以下平台上支持迁移到 OVN-Kubernetes 网络插件:
- 裸机硬件
- Amazon Web Services (AWS)
- Google Cloud
- IBM Cloud®
- Microsoft Azure
- Red Hat OpenStack Platform(RHOSP)
- Red Hat Virtualization(RHV)
- {vmw-first}
Red Hat OpenShift Dedicated, Azure Red Hat OpenShift(ARO), 和 Red Hat OpenShift Service on AWS (ROSA) 上的受管 OpenShift 云服务不支持迁移到 OVN-Kubernetes 网络插件。
Nutanix 不支持从 OpenShift SDN 网络插件迁移到 OVN-Kubernetes 网络插件。
25.5.1.1. 迁移到 OVN-Kubernetes 网络插件的注意事项 复制链接链接已复制到粘贴板!
如果您在 OpenShift Container Platform 集群中有超过 150 个节点,请创建一个支持问题单,供您迁移到 OVN-Kubernetes 网络插件。
迁移过程中不会保留分配给节点的子网以及分配给各个 pod 的 IP 地址。
虽然 OVN-Kubernetes 网络插件实现 OpenShift SDN 网络插件中存在的许多功能,但配置并不相同。
如果您的集群使用以下 OpenShift SDN 网络插件功能,您必须在 OVN-Kubernetes 网络插件中手动配置相同的功能:
- 命名空间隔离
- 出口路由器 pod
-
如果您的集群或周围的网络使用
100.64.0.0/16地址范围中的任何部分,您必须在spec.defaultNetwork.ovnKubernetesConfig对象定义中指定v4InternalSubnetspec 来选择另一个未使用的 IP 范围。OVN-Kubernetes 默认使用 IP 范围100.64.0.0/16。 -
如果您的带有 Precision Time Protocol (PTP) 的
openshift-sdn集群使用 User Datagram Protocol (UDP) 进行硬件时间戳,且迁移到 OVN-Kubernetes 插件,则硬件时间戳无法应用到主接口设备,如 Open vSwitch (OVS) 网桥。因此,UDP 版本 4 配置无法使用br-ex接口。
以下小节重点介绍了上述功能在 OVN-Kubernetes 和 OpenShift SDN 网络插件中的配置差异。
主网络接口
OpenShift SDN 插件允许 NodeNetworkConfigurationPolicy (NNCP)自定义资源(CR)的应用程序到节点上的主接口。OVN-Kubernetes 网络插件没有此功能。
如果您的 NNCP 应用到主接口,则必须在迁移到 OVN-Kubernetes 网络插件前删除 NNCP。删除 NNCP 不会从主接口中删除配置,但使用 OVN-Kubernetes,Kubernetes NMState 无法管理此配置。相反,configure-ovs.sh shell 脚本管理附加到这个接口的主接口和配置。
命名空间隔离
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 对象的名称只能设置为 default,在迁移后,所有迁移的 EgressNetworkPolicy 对象都会命名为 default,而无论在 OpenShift SDN 下的名称是什么。
如果您随后回滚到 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 进行迁移时,网络策略不需要更改。
25.5.1.2. 迁移过程如何工作 复制链接链接已复制到粘贴板!
下表对迁移过程进行了概述,它分为操作中的用户发起的步骤,以及在响应过程中迁移过程要执行的操作。
| 用户发起的步骤 | 迁移操作 |
|---|---|
|
将名为 |
|
|
更新 |
|
| 重新引导集群中的每个节点。 |
|
如果需要回滚到 OpenShift SDN,下表描述了这个过程。
在启动回滚前,您必须等待 OpenShift SDN 到 OVN-Kubernetes 网络插件的迁移过程成功。
| 用户发起的步骤 | 迁移操作 |
|---|---|
| 挂起 MCO 以确保它不会中断迁移。 | MCO 停止。 |
|
将名为 |
|
|
更新 |
|
| 重新引导集群中的每个节点。 |
|
| 在集群重启中的所有节点后启用 MCO。 |
|
25.5.1.3. 使用 Ansible playbook 迁移到 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 Ansible 集合 network.offline_migration_sdn_to_ovnk 从 OpenShift SDN Container Network Interface (CNI)网络插件迁移到集群的 OVN-Kubernetes 插件。Ansible 集合包括以下 playbook:
-
playbooks/playbook-migration.yml:包含按顺序执行的 playbook,每个 playbook 代表迁移过程中的一个步骤。 -
playbooks/playbook-rollback.yml:包含按顺序执行的 playbook,其中每个 playbook 代表回滚过程中的一个步骤。
先决条件
-
已安装
python3软件包,最小版本 3.10。 -
已安装
jmespath和jq软件包。 - 已登陆到 Red Hat Hybrid Cloud Console 并打开 Ansible Automation Platform web 控制台。
-
您创建了一条安全组规则,允许所有云平台上所有节点的端口
6081上用户数据报协议(UDP)数据包。如果没有此任务,您的集群可能无法调度 pod。 检查集群是否在主机网络中使用静态路由或路由策略。
-
如果为 true,则后续步骤需要将
routingViaHost参数设置为true,在playbooks/playbook-migration.yml文件的gatewayConfig部分中将ipForwarding参数设置为Global。
-
如果为 true,则后续步骤需要将
-
如果 OpenShift-SDN 插件使用
100.64.0.0/16和100.88.0.0/16地址范围,则您修补了地址范围。如需更多信息,请参阅附加资源部分中的 "Patching OVN-Kubernetes address ranges"。
流程
安装
ansible-core软件包,最低为 2.15 版本。以下示例命令演示了如何在 Red Hat Enterprise Linux (RHEL)上安装ansible-core软件包:$ sudo dnf install -y ansible-core创建
ansible.cfg文件,并将类似以下示例的信息添加到该文件中。确保该文件存在于与ansible-galaxy命令和 playbook 运行相同的目录中。$ cat << EOF >> ansible.cfg [galaxy] server_list = automation_hub, validated [galaxy_server.automation_hub] url=https://console.redhat.com/api/automation-hub/content/published/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token= #[galaxy_server.release_galaxy] #url=https://galaxy.ansible.com/ [galaxy_server.validated] url=https://console.redhat.com/api/automation-hub/content/validated/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token= EOF在 Ansible Automation Platform web 控制台中进入 Connect to Hub 页并完成以下步骤:
- 在页的离线令牌部分中,点 Load token 按钮。
- 在令牌加载后,点 Copy to clipboard 图标。
-
打开
ansible.cfg文件,并将 API 令牌粘贴到token=参数中。对ansible.cfg文件中指定的服务器 URL 进行身份验证需要 API 令牌。
输入以下
ansible-galaxy命令,安装network.offline_migration_sdn_to_ovnkAnsible 集合:$ ansible-galaxy collection install network.offline_migration_sdn_to_ovnk验证您系统上是否安装了
network.offline_migration_sdn_to_ovnkAnsible 集合:$ ansible-galaxy collection list | grep network.offline_migration_sdn_to_ovnk输出示例
network.offline_migration_sdn_to_ovnk 1.0.2network.offline_migration_sdn_to_ovnkAnsible 集合保存在~/.ansible/collections/ansible_collections/network/offline_migration_sdn_to_ovnk/的默认路径中。在
playbook/playbook-migration.yml文件中配置迁移功能:# ... migration_interface_name: eth0 migration_disable_auto_migration: true migration_egress_ip: false migration_egress_firewall: false migration_multicast: false migration_routing_via_host: true migration_ip_forwarding: Global migration_cidr: "10.240.0.0/14" migration_prefix: 23 migration_mtu: 1400 migration_geneve_port: 6081 migration_ipv4_subnet: "100.64.0.0/16" # ...migration_interface_name-
如果您在主接口上使用
NodeNetworkConfigurationPolicy(NNCP)资源,请在migration-playbook.yml文件中指定接口名称,以便在迁移过程中在主接口上删除 NNCP 资源。 migration_disable_auto_migration-
禁用 OpenShift SDN CNI 插件的自动迁移功能到 OVN-Kubernetes 插件。如果禁用功能的自动迁移,还必须将
migration_egress_ip、migration_egress_firewall和migration_multicast参数设置为false。如果您需要启用功能的自动迁移,请将 参数设置为false。 migration_routing_via_host-
设置为
true,以配置本地网关模式或false,来为集群中的节点配置共享网关模式。默认值为false。在本地网关模式中,流量通过主机网络堆栈路由。在共享网关模式中,流量不会通过主机网络堆栈路由。 migration_ip_forwarding-
如果您配置了本地网关模式,如果您需要节点的主机网络充当与 OVN-Kubernetes 相关的流量的路由器,请将 IP 转发设置为
Global。 migration_cidr-
为集群指定无类别域间路由(CIDR) IP 地址块。您不能使用任何与
10064.0.0/16CIDR 块重叠的 CIDR 块,因为 OVN-Kubernetes 网络供应商在内部使用此块。 migration_prefix- 确保指定了一个前缀值,这是集群中每个节点的 CIDR 块的片段。
migration_mtu- 可选参数,在迁移过程后将特定的最大传输单元(MTU)设置为集群网络。
migration_geneve_port-
为 OVN-Kubernetes 设置 Geneve 端口的可选参数。默认端口为
6081。 migration_ipv4_subnet-
可选参数,用于为 OVN-Kubernetes 内部设置 IPv4 地址范围。参数的默认值为
100.64.0.0/16。
要运行
playbooks/playbook-migration.yml文件,请输入以下命令:$ ansible-playbook -v playbooks/playbook-migration.yml
25.5.2. 迁移到 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
作为集群管理员,您可以将集群的网络插件更改为 OVN-Kubernetes。在迁移过程中,您必须重新引导集群中的每个节点。
在进行迁移时,集群不可用,工作负载可能会中断。仅在服务中断可以接受时才执行迁移。
先决条件
- 您已在网络策略隔离模式下使用 OpenShift SDN CNI 网络插件配置集群。
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。 - 您有最新的 etcd 数据库备份。
- 您可以手动重新引导每个节点。
- 您检查集群是否处于已知良好状态,且没有任何错误。
-
您创建了一条安全组规则,允许所有云平台上所有节点的端口
6081上用户数据报协议(UDP)数据包。
流程
要备份集群网络的配置,请输入以下命令:
$ 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运行以下命令,从 Cluster Network Operator (CNO) 配置对象中删除配置:
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{"spec":{"migration":null}}'通过完成以下步骤,删除
NodeNetworkConfigurationPolicy(NNCP)自定义资源(CR)定义 OpenShift SDN 网络插件的主网络接口:输入以下命令检查现有 NNCP CR 是否将主接口绑定到集群:
$ oc get nncp输出示例
NAME STATUS REASON bondmaster0 Available SuccessfullyConfiguredNetwork 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字段会触发 Machine Config Operator(MCO)将新机器配置应用到集群中的所有节点,以准备 OVN-Kubernetes 部署。运行以下命令检查重启是否已完成:
$ 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 具有不同的覆盖(overlay)开销。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 的值小
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字段的 patch 命令示例$ 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状态,检查机器配置守护进程 pod 日志并解决所有错误。运行以下命令列出 pod:
$ 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配置守护进程 pod 的名称使用以下格式:
machine-config-daemon-<seq>。<seq>值是一个随机的五个字符的字母数字序列。使用以下命令,输出在上一个输出中显示的第一个机器配置守护进程 pod 的 pod 日志:
$ oc logs <pod> -n openshift-machine-config-operator其中
pod是机器配置守护进程 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 块的分片。您不能使用任何与10064.0.0/16CIDR 块重叠的 CIDR 块,因为 OVN-Kubernetes 网络供应商在内部使用此块。重要您无法在迁移过程中更改服务网络地址块。
在继续执行后续步骤前,验证 Multus 守护进程集的 rollout 是否已完成:
$ oc -n openshift-multus rollout status daemonset/multusMultus pod 的名称采用
multus-<xxxxx>的形式,其中<xxxxx>是由字母组成的随机序列。pod 可能需要一些时间才能重启。输出示例
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"}'要确认集群节点处于
Ready状态,请输入以下命令:$ 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"。如果 Cluster 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成功迁移操作后,输入以下命令从
network.config自定义资源中删除network.openshift.io/network-type-migration-注解:$ oc annotate network.config cluster network.openshift.io/network-type-migration-
后续步骤
- 可选:在集群迁移后,您可以将 IPv4 单堆栈集群转换为支持 IPv4 和 IPv6 地址系列的双网络集群网络。如需更多信息,请参阅"协调 IPv4/IPv6 双栈网络"。
25.5.4. 了解 OVN-Kubernetes 中外部 IP 行为的更改 复制链接链接已复制到粘贴板!
当从 OpenShift SDN 迁移到 OVN-Kubernetes (OVN-K)时,使用外部 IP 的服务可能会因为网络策略强制而在命名空间中无法访问。
在 OpenShift SDN 中,外部 IP 默认可在命名空间间访问。但是,在 OVN-K 中,网络策略严格强制执行多租户隔离,从而防止访问通过外部 IP 从其他命名空间公开的服务。
为确保访问,请考虑以下替代方案:
- 使用入口或路由 :使用外部 IP 公开服务,在保持安全控制时配置入口或路由来允许外部访问。
-
调整
NetworkPolicy自定义资源(CR):修改NetworkPolicyCR 以明确允许从所需命名空间中访问,并确保允许流量访问指定的服务端口。如果没有明确允许到所需端口的流量,访问可能仍然被阻止,即使允许命名空间。 -
使用
LoadBalancer服务:如果适用,部署LoadBalancer服务而不是依赖于外部 IP。有关配置 "NetworkPolicy 和 external IP in OVN-Kubernetes" 的更多信息。