×

作为集群管理员,您可以将您的 IPv4 单栈集群转换为支持 IPv4 和 IPv6 地址族的双网络集群网络。转换为双栈网络后,新的和现有的 Pod 都启用了双栈网络。

当使用需要 IPv6 的双栈网络时,您不能使用 IPv4 映射的 IPv6 地址,例如 `::FFFF:198.51.100.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 服务在 YAML 配置补丁文件中指定现有的 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 的路由器。

步骤
  1. 要为集群和服务网络指定 IPv6 地址块,请创建一个 YAML 配置补丁文件,该文件具有与以下示例类似的配置

    - op: add
      path: /spec/clusterNetwork/-
      value: (1)
        cidr: fd01::/48
        hostPrefix: 64
    - op: add
      path: /spec/serviceNetwork/-
      value: fd02::/112 (2)
    1 指定具有 `cidr` 和 `hostPrefix` 字段的对象。主机前缀必须为 64 或更大。IPv6 无类别域间路由 (CIDR) 前缀必须足够大以容纳指定的主机前缀。
    2 指定前缀为 `112` 的 IPv6 CIDR。Kubernetes 只使用最低的 16 位。对于前缀 `112`,IP 地址从 `112` 位分配到 `128` 位。
  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
  3. 为您的集群的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
    1 确保您为机器运行的 `machineNetwork` 网络指定地址块。您必须为机器网络选择 API 和 Ingress IP 地址。
    2 请确保根据您的平台指定每个文件路径。此示例演示了裸机平台上的文件路径。
  4. 通过在您的CLI中输入以下命令来修补基础设施

    $ oc patch infrastructure cluster \(1)
      --type='json' --patch-file <file>.yaml
    1 其中file指定您创建的YAML文件的名称。
    示例输出
    infrastructure/cluster patched
验证
  1. 通过在您的CLI中输入以下命令来显示集群网络配置

    $ oc describe network
  2. 通过检查集群网络配置是否识别您在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
    # ...
  3. 对于在安装程序预配的基础设施上运行的集群,请完成以下附加任务

    1. 通过在您的CLI中输入以下命令来显示集群基础设施配置

      $ oc describe infrastructure
    2. 通过检查基础设施是否识别您在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
      # ...

转换为单栈集群网络

作为集群管理员,您可以将您的双栈集群网络转换为单栈集群网络。

先决条件
  • 您已安装 OpenShift CLI (`oc`)。

  • 您已使用具有 `cluster-admin` 权限的用户登录到集群。

  • 您的集群使用 OVN-Kubernetes 网络插件。

  • 集群节点具有 IPv6 地址。

  • 您已启用双栈网络。

步骤
  1. 通过运行以下命令来编辑networks.config.openshift.io自定义资源 (CR)

    $ oc edit networks.config.openshift.io
  2. 删除您在上一步过程中添加到cidrhostPrefix字段中的IPv6特定配置。