24.7. 转换为 IPv4/IPv6 双栈网络
作为集群管理员,您可以将 IPv4 单栈集群转换为支持 IPv4 和 IPv6 地址系列的双网络集群网络。转换为双栈网络后,新的和现有 pod 启用了双栈网络。
当使用需要 IPv6 的双栈网络时,您无法使用 IPv4 映射 IPv6 地址,如 ::FFFF:198.51.100.1
。
其他资源
- 有关对双栈网络的特定平台支持的更多信息,请参阅 OVN-Kubernetes 目的
24.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/- 1
value: 192.168.1.0/24
# ...
- 1
- 确保为机器操作的
machineNetwork
网络指定地址块。您必须为机器网络选择 API 和 Ingress IP 地址。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
使用具有
cluster-admin
权限的用户登陆到集群。 - 集群使用 OVN-Kubernetes 网络插件。
- 集群节点具有 IPv6 地址。
- 您已根据基础架构配置了启用了 IPv6 的路由器。
流程
要为集群和服务网络指定 IPv6 地址块,请创建一个类似以下示例的 YAML 配置补丁文件:
- op: add path: /spec/clusterNetwork/- value: 1 cidr: fd01::/48 hostPrefix: 64 - op: add path: /spec/serviceNetwork/- value: fd02::/112 2
在 CLI 中输入以下命令来修补集群网络配置:
$ oc patch network.config.openshift.io cluster \1 --type='json' --patch-file <file>.yaml
- 1
- 其中
file
指定您创建的 YAML 文件的名称。
输出示例
network.config.openshift.io/cluster patched
为集群指定 API 和 Ingress 服务的 IPv6 VIP。创建类似以下示例的 YAML 配置补丁文件:
- op: add path: /spec/platformSpec/baremetal/machineNetworks/- 1 value: fd2e:6f44:5dd8::/64 - op: add path: /spec/platformSpec/baremetal/apiServerInternalIPs/- 2 value: fd2e:6f44:5dd8::4 - op: add path: /spec/platformSpec/baremetal/ingressIPs/- value: fd2e:6f44:5dd8::5
在 CLI 中输入以下命令来修补基础架构:
$ oc patch infrastructure cluster \1 --type='json' --patch-file <file>.yaml
- 1
- 其中
file
指定您创建的 YAML 文件的名称。
输出示例
infrastructure/cluster patched
验证
在 CLI 中输入以下命令来显示集群网络配置:
$ oc describe network
检查集群网络配置是否识别您在 YAML 文件中指定的 IPv6 地址块,以验证在网络配置中成功安装补丁。
输出示例
# ... Status: Cluster Network: Cidr: 10.128.0.0/14 Host Prefix: 23 Cidr: fd01::/48 Host Prefix: 64 Cluster Network MTU: 1400 Network Type: OVNKubernetes Service Network: 172.30.0.0/16 fd02::/112 # ...
为在安装程序置备的基础架构中运行的集群完成以下附加任务:
在 CLI 中输入以下命令来显示集群基础架构配置:
$ oc describe infrastructure
检查基础架构是否识别您在 YAML 文件中指定的 IPv6 地址块,以验证在集群基础架构上安装补丁是否成功。
输出示例
# ... spec: # ... platformSpec: baremetal: apiServerInternalIPs: - 192.168.123.5 - fd2e:6f44:5dd8::4 ingressIPs: - 192.168.123.10 - fd2e:6f44:5dd8::5 status: # ... platformStatus: baremetal: apiServerInternalIP: 192.168.123.5 apiServerInternalIPs: - 192.168.123.5 - fd2e:6f44:5dd8::4 ingressIP: 192.168.123.10 ingressIPs: - 192.168.123.10 - fd2e:6f44:5dd8::5 # ...
24.7.2. 转换为单堆栈集群网络
作为集群管理员,您可以将双栈集群网络转换为单堆栈集群网络。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
使用具有
cluster-admin
权限的用户登陆到集群。 - 集群使用 OVN-Kubernetes 网络插件。
- 集群节点具有 IPv6 地址。
- 您已启用了双栈网络。
流程
运行以下命令来编辑
networks.config.openshift.io
自定义资源 (CR):$ oc edit networks.config.openshift.io
-
删除在前面的步骤中添加到
cidr
和hostPrefix
字段中的 IPv6 具体配置。