24.6. 从 OpenShift SDN 网络插件迁移
作为集群管理员,您可以从 OpenShift SDN 网络插件迁移到 OVN-Kubernetes 网络插件。
您可以使用离线迁移方法从 OpenShift SDN 网络插件迁移到 OVN-Kubernetes 插件。离线迁移是一个手动过程,会包括一些停机时间。
24.6.1. 迁移到 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
迁移到 OVN-Kubernetes 网络插件是一个手动的过程,其中会包括一些停机时间,在此期间集群无法被访问。
在将 OpenShift Container Platform 集群迁移到使用 OVN-Kubernetes 网络插件前,将集群更新至最新的 z-stream 版本,以便所有最新的程序错误修复都应用到集群。
虽然提供了一个回滚过程,但迁移通常被认为是一个单向过程。
在以下平台上支持迁移到 OVN-Kubernetes 网络插件:
- 裸机硬件
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- IBM Cloud®
- Microsoft Azure
- Red Hat OpenStack Platform (RHOSP)
- VMware vSphere
Red Hat OpenShift Dedicated, Azure Red Hat OpenShift(ARO), 和 Red Hat OpenShift Service on AWS (ROSA) 上的受管 OpenShift 云服务不支持迁移到 OVN-Kubernetes 网络插件。
Nutanix 不支持从 OpenShift SDN 网络插件迁移到 OVN-Kubernetes 网络插件。
24.6.1.1. 迁移到 OVN-Kubernetes 网络插件的注意事项 复制链接链接已复制到粘贴板!
如果您在 OpenShift Container Platform 集群中有超过 150 个节点,请创建一个支持问题单,供您迁移到 OVN-Kubernetes 网络插件。
迁移过程中不会保留分配给节点的子网以及分配给各个 pod 的 IP 地址。
虽然 OVN-Kubernetes 网络插件实现 OpenShift SDN 网络插件中存在的许多功能,但配置并不相同。
如果您的集群使用以下 OpenShift SDN 网络插件功能,您必须在 OVN-Kubernetes 网络插件中手动配置相同的功能:
- 命名空间隔离
- 出口路由器 pod
-
在迁移到 OVN-Kubernetes 之前,请确保不使用以下 IP 地址范围:
100.64.0.0/16
,169.254.169.0/29
,100.88.0.0/16
,fd98::/64
,fd69::/125
, 和fd97::/64
。OVN-Kubernetes 在内部使用这些范围。不要在集群或基础架构的任何其他 CIDR 定义中包含这些范围。 -
如果您的带有 Precision Time Protocol (PTP) 的
openshift-sdn
集群使用 User Datagram Protocol (UDP) 进行硬件时间戳,且迁移到 OVN-Kubernetes 插件,则硬件时间戳无法应用到主接口设备,如 Open vSwitch (OVS) 网桥。因此,UDP 版本 4 配置无法使用br-ex
接口。
以下小节重点介绍了上述功能在 OVN-Kubernetes 和 OpenShift SDN 网络插件中的配置差异。
24.6.1.1.1. 主网络接口 复制链接链接已复制到粘贴板!
OpenShift SDN 插件允许 NodeNetworkConfigurationPolicy
(NNCP)自定义资源(CR)的应用程序到节点上的主接口。OVN-Kubernetes 网络插件没有此功能。
如果您的 NNCP 应用到主接口,则必须在迁移到 OVN-Kubernetes 网络插件前删除 NNCP。删除 NNCP 不会从主接口中删除配置,但使用 OVN-Kubernetes,Kubernetes NMState 无法管理此配置。相反,configure-ovs.sh
shell 脚本管理附加到这个接口的主接口和配置。
24.6.1.1.2. 命名空间隔离 复制链接链接已复制到粘贴板!
OVN-Kubernetes 仅支持网络策略隔离模式。
对于使用在多租户或子网隔离模式下配置的 OpenShift SDN 的集群,您仍然可以迁移到 OVN-Kubernetes 网络插件。请注意,在迁移操作后,多租户隔离模式会被丢弃,因此您必须手动配置网络策略,以便为 Pod 和服务达到相同的项目级别的隔离。
24.6.1.1.3. 出口 IP 地址 复制链接链接已复制到粘贴板!
OpenShift SDN 支持两种不同的 Egress IP 模式:
- 在自动分配方法中,给节点分配一个出口 IP 地址范围。
- 在手动分配方法中,给节点分配包含一个或多个出口 IP 地址的列表。
迁移过程支持迁移使用自动分配模式的 Egress IP 配置。
下表中描述了在 OVN-Kubernetes 和 OpenShift SDN 配置出口 IP 地址的不同:
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
有关在 OVN-Kubernetes 中使用出口 IP 地址的更多信息,请参阅"配置出口 IP 地址"。
24.6.1.1.4. 出口网络策略 复制链接链接已复制到粘贴板!
下表中描述在 OVN-Kubernetes 和 OpenShift SDN 间配置出口网络策略(也称为出口防火墙)的不同之处:
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
由于 EgressFirewall
对象的名称只能设置为 default
,在迁移后,所有迁移的 EgressNetworkPolicy
对象都会命名为 default
,而无论在 OpenShift SDN 下的名称是什么。
如果您随后回滚到 OpenShift SDN,则所有 EgressNetworkPolicy
对象都会命名为 default
,因为之前的名称已丢失。
有关在 OVN-Kubernetes 中使用出口防火墙的更多信息,请参阅"配置项目出口防火墙"。
24.6.1.1.5. 出口路由器 pod 复制链接链接已复制到粘贴板!
OVN-Kubernetes 支持重定向模式的出口路由器 pod。OVN-Kubernetes 不支持 HTTP 代理模式或 DNS 代理模式的出口路由器 pod。
使用 Cluster Network Operator 部署出口路由器时,您无法指定节点选择器来控制用于托管出口路由器 pod 的节点。
24.6.1.1.6. 多播 复制链接链接已复制到粘贴板!
下表中描述了在 OVN-Kubernetes 和 OpenShift SDN 上启用多播流量的区别:
OVN-Kubernetes | OpenShift SDN |
---|---|
|
|
有关在 OVN-Kubernetes 中使用多播的更多信息,请参阅"启用项目多播"。
24.6.1.1.7. 网络策略 复制链接链接已复制到粘贴板!
OVN-Kubernetes 在 networking.k8s.io/v1
API 组中完全支持 Kubernetes NetworkPolicy
API。从 OpenShift SDN 进行迁移时,网络策略不需要更改。
24.6.1.2. 迁移过程如何工作 复制链接链接已复制到粘贴板!
下表对迁移过程进行了概述,它分为操作中的用户发起的步骤,以及在响应过程中迁移过程要执行的操作。
用户发起的步骤 | 迁移操作 |
---|---|
将名为 |
|
更新 |
|
重新引导集群中的每个节点。 |
|
如果需要回滚到 OpenShift SDN,下表描述了这个过程。
在启动回滚前,您必须等待 OpenShift SDN 到 OVN-Kubernetes 网络插件的迁移过程成功。
用户发起的步骤 | 迁移操作 |
---|---|
挂起 MCO 以确保它不会中断迁移。 | MCO 停止。 |
将名为 |
|
更新 |
|
重新引导集群中的每个节点。 |
|
在集群重启中的所有节点后启用 MCO。 |
|
24.6.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
$ sudo dnf install -y ansible-core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
ansible.cfg
文件,并将类似以下示例的信息添加到该文件中。确保该文件存在于与ansible-galaxy
命令和 playbook 运行相同的目录中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 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_ovnk
Ansible 集合:ansible-galaxy collection install network.offline_migration_sdn_to_ovnk
$ ansible-galaxy collection install network.offline_migration_sdn_to_ovnk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您系统上是否安装了
network.offline_migration_sdn_to_ovnk
Ansible 集合:ansible-galaxy collection list | grep network.offline_migration_sdn_to_ovnk
$ ansible-galaxy collection list | grep network.offline_migration_sdn_to_ovnk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
network.offline_migration_sdn_to_ovnk 1.0.2
network.offline_migration_sdn_to_ovnk 1.0.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow network.offline_migration_sdn_to_ovnk
Ansible 集合保存在~/.ansible/collections/ansible_collections/network/offline_migration_sdn_to_ovnk/
的默认路径中。在
playbook/playbook-migration.yml
文件中配置迁移功能:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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/16
CIDR 块重叠的 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
$ ansible-playbook -v playbooks/playbook-migration.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.6.2. 迁移到 OVN-Kubernetes 网络插件 复制链接链接已复制到粘贴板!
作为集群管理员,您可以将集群的网络插件更改为 OVN-Kubernetes。在迁移过程中,您必须重新引导集群中的每个节点。
在进行迁移时,集群不可用,工作负载可能会中断。仅在服务中断可以接受时才执行迁移。
先决条件
- 您已在网络策略隔离模式下使用 OpenShift SDN CNI 网络插件配置集群。
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。 - 您有最新的 etcd 数据库备份。
- 您可以手动重新引导每个节点。
- 您检查集群是否处于已知良好状态,且没有任何错误。
-
您创建了一条安全组规则,允许所有云平台上所有节点的端口
6081
上用户数据报协议(UDP)数据包。 - 已删除 Webhook。或者,您可以为每个 webhook 设置超时值,这在流程中详细介绍。如果您没有完成这些任务之一,您的集群可能无法调度 pod。
流程
如果您没有删除 Webhook,请通过创建
ValidatingWebhookConfiguration
自定义资源,然后指定timeoutSeconds
参数的超时值,将每个 webhook 的超时值设置为3
秒:oc patch ValidatingWebhookConfiguration <webhook_name> --type='json' \ -p '[{"op": "replace", "path": "/webhooks/0/timeoutSeconds", "value": 3}]'
oc patch ValidatingWebhookConfiguration <webhook_name> --type='json' \
1 -p '[{"op": "replace", "path": "/webhooks/0/timeoutSeconds", "value": 3}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 其中
<webhook_name>
是 webhook 的名称。
要备份集群网络的配置,请输入以下命令:
oc get Network.config.openshift.io cluster -o yaml > cluster-openshift-sdn.yaml
$ oc get Network.config.openshift.io cluster -o yaml > cluster-openshift-sdn.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
OVN_SDN_MIGRATION_TIMEOUT
环境变量是否已设置,并等于0s
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从 Cluster Network Operator (CNO) 配置对象中删除配置:
oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{"spec":{"migration":null}}'
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{"spec":{"migration":null}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .通过完成以下步骤,删除
NodeNetworkConfigurationPolicy
(NNCP)自定义资源(CR)定义 OpenShift SDN 网络插件的主网络接口:输入以下命令检查现有 NNCP CR 是否将主接口绑定到集群:
oc get nncp
$ oc get nncp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS REASON bondmaster0 Available SuccessfullyConfigured
NAME STATUS REASON bondmaster0 Available SuccessfullyConfigured
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Network Manager 将绑定的主接口的连接配置文件存储在
/etc/NetworkManager/system-connections
系统路径中。从集群中删除 NNCP:
oc delete nncp <nncp_manifest_filename>
$ oc delete nncp <nncp_manifest_filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要为迁移准备所有节点,请运行以下命令在 CNO 配置对象上设置
migration
字段:oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OVNKubernetes" } } }'
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OVNKubernetes" } } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此步骤不会立即部署 OVN-Kubernetes。相反,指定
migration
字段会触发 Machine Config Operator(MCO)将新机器配置应用到集群中的所有节点,以准备 OVN-Kubernetes 部署。运行以下命令检查重启是否已完成:
oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查所有集群 Operator 是否可用:
oc get co
$ oc get co
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外:您可以禁用将几个 OpenShift SDN 功能自动迁移到 OVN-Kubernetes 等效功能:
- 出口 IP
- 出口防火墙
- 多播
要为之前记录的 OpenShift SDN 功能禁用配置自动迁移,请指定以下键:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
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 内部子网
要自定义之前记录的设置之一,请输入以下命令。如果您不需要更改默认值,请从补丁中省略该键。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
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 命令示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 MCO 更新每个机器配置池中的机器时,它会逐一重启每个节点。您必须等到所有节点都已更新。输入以下命令检查机器配置池状态:
oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功更新的节点具有以下状态:
UPDATED=true
、UPDATING=false
、DEGRADED=false
。注意默认情况下,MCO 会一次在一个池中更新一个机器,从而导致迁移总时间随着集群大小的增加而增加。
确认主机上新机器配置的状态:
要列出机器配置状态和应用的机器配置名称,请输入以下命令:
oc describe node | egrep "hostname|machineconfig"
$ oc describe node | egrep "hostname|machineconfig"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证以下语句是否正确:
-
machineconfiguration.openshift.io/state
字段的值为Done
。 -
machineconfiguration.openshift.io/currentConfig
字段的值等于machineconfiguration.openshift.io/desiredConfig
字段的值。
-
要确认机器配置正确,请输入以下命令:
oc get machineconfig <config_name> -o yaml | grep ExecStart
$ oc get machineconfig <config_name> -o yaml | grep ExecStart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这里的
<config_name>
是machineconfiguration.openshift.io/currentConfig
字段中机器配置的名称。机器配置必须包括以下对 systemd 配置的更新:
ExecStart=/usr/local/bin/configure-ovs.sh OVNKubernetes
ExecStart=/usr/local/bin/configure-ovs.sh OVNKubernetes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果节点一直处于
NotReady
状态,检查机器配置守护进程 pod 日志并解决所有错误。运行以下命令列出 pod:
oc get pod -n openshift-machine-config-operator
$ oc get pod -n openshift-machine-config-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置守护进程 pod 的名称使用以下格式:
machine-config-daemon-<seq>
。<seq>
值是一个随机的五个字符的字母数字序列。使用以下命令,输出在上一个输出中显示的第一个机器配置守护进程 pod 的 pod 日志:
oc logs <pod> -n openshift-machine-config-operator
$ oc logs <pod> -n openshift-machine-config-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
pod
是机器配置守护进程 pod 的名称。- 解决上一命令输出中显示的日志中的任何错误。
要启动迁移,请使用以下命令配置 OVN-Kubernetes 网络插件:
要指定网络供应商而不更改集群网络 IP 地址块,请输入以下命令:
oc patch Network.config.openshift.io cluster \ --type='merge' --patch '{ "spec": { "networkType": "OVNKubernetes" } }'
$ oc patch Network.config.openshift.io cluster \ --type='merge' --patch '{ "spec": { "networkType": "OVNKubernetes" } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要指定不同的集群网络 IP 地址块,请输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
cidr
是 CIDR 块,prefix
是集群中每个节点的 CIDR 块的分片。您不能使用任何与10064.0.0/16
CIDR 块重叠的 CIDR 块,因为 OVN-Kubernetes 网络供应商在内部使用此块。重要您无法在迁移过程中更改服务网络地址块。
在继续执行后续步骤前,验证 Multus 守护进程集的 rollout 是否已完成:
oc -n openshift-multus rollout status daemonset/multus
$ oc -n openshift-multus rollout status daemonset/multus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Multus 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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要完成更改网络插件,请重新引导集群中的每个节点。您可以使用以下方法之一重新引导集群中的节点:
重要以下脚本同时重新引导集群中的所有节点。这可能导致集群不稳定。另一种选择是,每次只手动重新引导一个节点。逐一重新引导节点会导致,在具有多个节点的集群中出现大量停机时间。
在重新引导节点前,集群 Operator 无法正常工作。
使用
oc rsh
命令,您可以使用类似如下的 bash 脚本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过
ssh
命令,您可以使用类似如下的 bash 脚本:该脚本假设您已将 sudo 配置为不提示输入密码。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确认迁移成功完成:
要确认网络插件是 OVN-Kubernetes,请输入以下命令。
status.networkType
的值必须是OVNKubernetes
。oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
$ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认集群节点处于
Ready
状态,请输入以下命令:oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认您的 pod 不在错误状态,请输入以下命令:
oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'
$ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果节点上的 pod 处于错误状态,请重新引导该节点。
要确认所有集群 Operator 没有处于异常状态,请输入以下命令:
oc get co
$ oc get co
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 每个集群 Operator 的状态必须是:
AVAILABLE="True"
、PROGRESSING="False"
和DEGRADED="False"
。如果 Cluster Operator 不可用或降级,请检查集群 Operator 的日志以了解更多信息。
只有在迁移成功且集群处于良好状态时完成以下步骤:
要从 CNO 配置对象中删除迁移配置,请输入以下命令:
oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除 OpenShift SDN 网络供应商的自定义配置,请输入以下命令:
oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "openshiftSDNConfig": null } } }'
$ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "openshiftSDNConfig": null } } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除 OpenShift SDN 网络供应商命名空间,请输入以下命令:
oc delete namespace openshift-sdn
$ oc delete namespace openshift-sdn
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功迁移操作后,输入以下命令从
network.config
自定义资源中删除network.openshift.io/network-type-migration-
注解:oc annotate network.config cluster network.openshift.io/network-type-migration-
$ oc annotate network.config cluster network.openshift.io/network-type-migration-
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 可选:在集群迁移后,您可以将 IPv4 单堆栈集群转换为支持 IPv4 和 IPv6 地址系列的双网络集群网络。如需更多信息,请参阅"协调 IPv4/IPv6 双栈网络"。
24.6.4. 了解 OVN-Kubernetes 中外部 IP 行为的更改 复制链接链接已复制到粘贴板!
当从 OpenShift SDN 迁移到 OVN-Kubernetes (OVN-K)时,使用外部 IP 的服务可能会因为网络策略强制而在命名空间中无法访问。
在 OpenShift SDN 中,外部 IP 默认可在命名空间间访问。但是,在 OVN-K 中,网络策略严格强制执行多租户隔离,从而防止访问通过外部 IP 从其他命名空间公开的服务。
为确保访问,请考虑以下替代方案:
- 使用入口或路由 :使用外部 IP 公开服务,在保持安全控制时配置入口或路由来允许外部访问。
-
调整
NetworkPolicy
自定义资源(CR):修改NetworkPolicy
CR 以明确允许从所需命名空间中访问,并确保允许流量访问指定的服务端口。如果没有明确允许到所需端口的流量,访问可能仍然被阻止,即使允许命名空间。 -
使用
LoadBalancer
服务:如果适用,部署LoadBalancer
服务而不是依赖于外部 IP。有关配置 "NetworkPolicy 和 external IP in OVN-Kubernetes" 的更多信息。