19.7. 转换为 IPv4/IPv6 双栈网络
作为集群管理员,您可以将 IPv4 单栈集群转换为支持 IPv4 和 IPv6 地址系列的双网络集群网络。转换为双栈网络后,新的和现有 pod 启用了双栈网络。
当使用需要 IPv6 的双栈网络时,您无法使用 IPv4 映射 IPv6 地址,如 ::FFFF:198.51.100.1。
19.7.1. 转换为双栈集群网络 复制链接链接已复制到粘贴板!
作为集群管理员,您可以将单堆栈集群网络转换为双栈集群网络。
将集群转换为使用双栈网络后,您必须为它们重新创建任何现有 pod 以接收 IPv6 地址,因为只有新 pod 会被分配 IPv6 地址。
将单堆栈集群网络转换为双栈集群网络包括创建补丁并将其应用到集群的网络和子网。您可以转换为在安装程序置备的基础架构或用户置备的基础架构上运行的集群的双栈集群网络。
更改 clusterNetwork、serviceNetwork、apiServerInternalIPs 和 ingressIP 对象的每个补丁操作都会触发重启集群。更改 MachineNetworks 对象不会导致重启集群。
安装程序置备的基础架构中,如果您需要将 API 和 Ingress 服务的 IPv6 虚拟 IP (VIP)添加到现有的双栈配置的集群中,则只需要修补基础架构,而不是集群的网络。
如果您已经将集群升级到 OpenShift Container Platform 4.16 或更高版本,且您需要将单堆栈集群网络转换为双栈集群网络,则必须从 install-config.yaml 文件中为 API 和 Ingress 服务指定现有的 IPv4 machineNetwork 网络配置。此配置可确保 IPv4 流量与默认网关在同一网络接口中。
带有为 machineNetwork 网络添加 IPv4 地址块的 YAML 配置文件示例
- op: add path: /spec/platformSpec/baremetal/machineNetworks/- value: 192.168.1.0/24 # ...
- op: add
path: /spec/platformSpec/baremetal/machineNetworks/-
value: 192.168.1.0/24
# ...
- 1
- 确保为机器操作的
machineNetwork网络指定地址块。您必须为机器网络选择 API 和 Ingress IP 地址。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
使用具有
cluster-admin权限的用户登陆到集群。 - 集群使用 OVN-Kubernetes 网络插件。
- 集群节点具有 IPv6 地址。
- 您已根据基础架构配置了启用了 IPv6 的路由器。
流程
要为集群和服务网络指定 IPv6 地址块,请创建一个类似以下示例的 YAML 配置补丁文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 CLI 中输入以下命令来修补集群网络配置:
oc patch network.config.openshift.io cluster \ --type='json' --patch-file <file>.yaml
$ oc patch network.config.openshift.io cluster \1 --type='json' --patch-file <file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 其中
file指定您创建的 YAML 文件的名称。
输出示例
network.config.openshift.io/cluster patched
network.config.openshift.io/cluster patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在为 API 和 Ingress 服务添加了 IPv6 VIP 的安装程序置备的基础架构中,完成以下步骤:
为集群指定 API 和 Ingress 服务的 IPv6 VIP。创建类似以下示例的 YAML 配置补丁文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 CLI 中输入以下命令来修补基础架构:
oc patch infrastructure cluster \ --type='json' --patch-file <file>.yaml
$ oc patch infrastructure cluster \ --type='json' --patch-file <file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <file>
指定创建的 YAML 文件的名称。
输出示例
infrastructure/cluster patched
infrastructure/cluster patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在 CLI 中输入以下命令来显示集群网络配置:
oc describe network
$ oc describe networkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查集群网络配置是否识别您在 YAML 文件中指定的 IPv6 地址块,以验证在网络配置中成功安装补丁。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为在安装程序置备的基础架构中运行的集群完成以下附加任务:
在 CLI 中输入以下命令来显示集群基础架构配置:
oc describe infrastructure
$ oc describe infrastructureCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查基础架构是否识别您在 YAML 文件中指定的 IPv6 地址块,以验证在集群基础架构上安装补丁是否成功。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.7.2. 转换为单堆栈集群网络 复制链接链接已复制到粘贴板!
作为集群管理员,您可以将双栈集群网络转换为单堆栈集群网络。
如果您最初将 IPv4 单堆栈集群网络转换为双栈集群,则只能转换回 IPv4 单堆栈集群,而不是 IPv6 单堆栈集群网络。相同限制适用于对 IPv6 单堆栈集群网络的转换(只能转换回 IPv6)。
先决条件
-
已安装 OpenShift CLI(
oc)。 -
使用具有
cluster-admin权限的用户登陆到集群。 - 集群使用 OVN-Kubernetes 网络插件。
- 集群节点具有 IPv6 地址。
- 您已启用了双栈网络。
流程
运行以下命令来编辑
networks.config.openshift.io自定义资源 (CR):oc edit networks.config.openshift.io
$ oc edit networks.config.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
删除在 "Converting to a dual-stack cluster network " 步骤中添加到
cidr和hostPrefix参数中的 IPv4 或 IPv6 配置。