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 配置示例
# ... apiServer: subjectAltNames: - 192.168.113.117 - 2001:db9:ca7:ff::1db8 1 network: clusterNetwork: - 10.42.0.0/16 2 - fd01::/48 3 serviceNetwork: - 10.43.0.0/16 - fd02::/112 4 node: nodeIP: 192.168.113.117 5 nodeIPv6: 2001:db9:ca7:ff::1db8 6 # ...
-
使用您的有效值,在 MicroShift YAML 的
运行以下命令完成任何其他配置,然后重启 MicroShift:
$ sudo systemctl restart microshift
- 根据需要重置应用 pod 和服务的 IP 系列策略,然后重新启动这些应用 pod 和服务,以启用双栈网络。如需简单示例,请参阅"为应用程序 pod 和服务重置 IP 系列策略"。
验证
您可以按照以下步骤验证所有系统服务和 pod 是否具有两个 IP 地址,每个系列一个:
运行以下命令,检索 pod 的状态:
$ oc get pod -A -o wide
输出示例
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system csi-snapshot-controller-bb7cb654b-7s5ql 1/1 Running 0 46m 10.42.0.6 microshift-9 <none> <none> kube-system csi-snapshot-webhook-95f475949-jrqv8 1/1 Running 0 46m 10.42.0.4 microshift-9 <none> <none> openshift-dns dns-default-zxkqn 2/2 Running 0 46m 10.42.0.5 microshift-9 <none> <none> openshift-dns node-resolver-r2h5z 1/1 Running 0 46m 192.168.113.117 microshift-9 <none> <none> openshift-ingress router-default-5b75594b4-228z7 1/1 Running 0 2m5s 10.42.0.3 microshift-9 <none> <none> openshift-ovn-kubernetes ovnkube-master-bltk7 4/4 Running 2 (2m32s ago) 2m36s 192.168.113.117 microshift-9 <none> <none> openshift-ovn-kubernetes ovnkube-node-9ghgs 1/1 Running 2 (2m32s ago) 46m 192.168.113.117 microshift-9 <none> <none> openshift-service-ca service-ca-5d7bd9db6-qgwgw 1/1 Running 0 46m 10.42.0.7 microshift-9 <none> <none> openshift-storage lvms-operator-656cd9b59b-8rpf4 1/1 Running 0 46m 10.42.0.8 microshift-9 <none> <none> openshift-storage vg-manager-wqmh4 1/1 Running 2 (2m39s ago) 46m 10.42.0.10 microshift-9 <none> <none>
运行以下命令,检索 OVN-K 网络插件定义的网络:
$ oc get pod -n openshift-ovn-kubernetes ovnkube-master-bltk7 -o jsonpath='{.status.podIPs}'
输出示例
[{"ip":"192.168.113.117"},{"ip":"2001:db9:ca7:ff::1db8"}]
运行以下命令,检索节点资源中定义的网络:
$ oc get pod -n openshift-ingress router-default-5b75594b4-228z7 -o jsonpath='{.status.podIPs}'
输出示例
[{"ip":"10.42.0.3"},{"ip":"fd01:0:0:1::3"}]
要返回单堆栈网络,您可以删除第二个条目到网络,并返回到在迁移到双栈网络之前配置的单个堆栈。