2.4. 将 MicroShift 集群迁移到 IPv6 双栈网络
您可以通过在 MicroShift 配置文件中设置两个条目,将单堆栈集群转换为支持 IPv4 和 IPv6 地址系列的双栈网络。
- 配置中的第一个 IP 系列是集群中的主要 IP 堆栈。
- MicroShift 系统 pod 和服务会在 MicroShift 重启时自动更新。
- 在集群迁移到双栈网络并重启时,通过重启双栈网络来启用工作负载 pod 和服务。
OVN-Kubernetes 网络插件要求 IPv4 和 IPv6 默认路由位于同一个网络设备中。不支持独立网络设备上的 IPv4 和 IPv6 默认路由。
当使用需要 IPv6 的双栈网络时,您无法使用 IPv4 映射 IPv6 地址,如 ::FFFF:198.51.100.1
。
先决条件
-
已安装 OpenShift CLI(
oc
)。 - 有对集群的 root 访问权限。
- 集群使用 OVN-Kubernetes 网络插件。
- 主机同时具有 IPv4 和 IPv6 地址和路由,包括每个地址的默认地址。
- 主机至少有两个 L3 网络,即 IPv4 和 IPv6。
流程
-
如果您还没有这样做,请在
/etc/microshift/
目录中生成提供的config.yaml.default
文件的副本,将它重命名为config.yaml
。 将新的 MicroShift
config.yaml
保留在/etc/microshift/
目录中。MicroShift 服务每次启动时都会读取config.yaml
文件。注意创建后,
config.yaml
文件优先于内置设置。使用您的有效值在 MicroShift YAML 的
network
部分添加 IPv6 配置:警告您必须在重启和迁移后保留相同的第一个条目。对于任何迁移而言,这是正确的:单到双堆栈或双到单一堆栈。如果需要更改第一个条目,则需要完全擦除 etcd 数据库。这可能会导致应用程序数据丢失且不受支持。
-
使用您的有效值,在 MicroShift YAML 的
network
部分为第二个网络添加 IPv6 配置。 将网络分配添加到 MicroShift
config.yaml
的network
部分,以启用将 IPv6 作为二级网络的双堆栈。带有网络分配的双栈 IPv6 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
使用您的有效值,在 MicroShift YAML 的
运行以下命令完成任何其他配置,然后重启 MicroShift:
sudo systemctl restart microshift
$ sudo systemctl restart microshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 根据需要重置应用 pod 和服务的 IP 系列策略,然后重新启动这些应用 pod 和服务,以启用双栈网络。如需简单示例,请参阅"为应用程序 pod 和服务重置 IP 系列策略"。
验证
您可以按照以下步骤验证所有系统服务和 pod 是否具有两个 IP 地址,每个系列一个:
运行以下命令,检索 pod 的状态:
oc get pod -A -o wide
$ oc get pod -A -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检索 OVN-K 网络插件定义的网络:
oc get pod -n openshift-ovn-kubernetes ovnkube-master-bltk7 -o jsonpath='{.status.podIPs}'
$ oc get pod -n openshift-ovn-kubernetes ovnkube-master-bltk7 -o jsonpath='{.status.podIPs}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"ip":"192.168.113.117"},{"ip":"2001:db9:ca7:ff::1db8"}]
[{"ip":"192.168.113.117"},{"ip":"2001:db9:ca7:ff::1db8"}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检索节点资源中定义的网络:
oc get pod -n openshift-ingress router-default-5b75594b4-228z7 -o jsonpath='{.status.podIPs}'
$ oc get pod -n openshift-ingress router-default-5b75594b4-228z7 -o jsonpath='{.status.podIPs}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"ip":"10.42.0.3"},{"ip":"fd01:0:0:1::3"}]
[{"ip":"10.42.0.3"},{"ip":"fd01:0:0:1::3"}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要返回单堆栈网络,您可以删除第二个条目到网络,并返回到在迁移到双栈网络之前配置的单个堆栈。