25.7. 转换为 IPv4/IPv6 双栈网络

作为集群管理员,您可以将 IPv4 单栈集群转换为支持 IPv4 和 IPv6 地址系列的双网络集群网络。转换为双栈后,所有新创建的 pod 都启用了双栈。

注意

在裸机、IBM Power、IBM Z 基础架构和单一节点 OpenShift 集群上置备的集群上支持双栈网络。

注意

在使用双栈网络时,您无法使用 IPv4 映射 IPv6 地址,如 ::FFFF:198.51.100.1,其中需要 IPv6。

25.7.1. 转换为双栈集群网络

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

注意

转换为双栈网络后,只有新创建的 pod 会被分配 IPv6 地址。必须重新创建在转换前创建的所有 pod,才能接收 IPv6 地址。

重要

在继续操作前,请确保 OpenShift 集群使用版本 4.12.5 或更高版本。否则,转换可能会因为一个程序错误(ovnkube node pod crashed after converting to a dual-stack cluster network)而失败。

先决条件

  • 已安装 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
    使用 cidrhostPrefix 字段指定对象。主机前缀必须为 64 或更高。IPv6 CIDR 前缀必须足够大,以容纳指定的主机前缀。
    2
    指定一个带有 112 前缀的 IPv6 CIDR。Kubernetes 仅使用最低 16 位。对于前缀 112,IP 地址从 112128 位进行分配。
  2. 要修补集群网络配置,请输入以下命令:

    $ oc patch network.config.openshift.io cluster \
      --type='json' --patch-file <file>.yaml

    其中:

    file
    指定您在上一步中创建的文件的名称。

    输出示例

    network.config.openshift.io/cluster patched

验证

完成以下步骤以验证,集群网络是否可以识别您在上一步中指定的 IPv6 地址块。

  1. 显示网络配置:

    $ oc describe network

    输出示例

    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

25.7.2. 转换为单堆栈集群网络

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

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 使用具有 cluster-admin 权限的用户登陆到集群。
  • 集群使用 OVN-Kubernetes 网络插件。
  • 集群节点具有 IPv6 地址。
  • 您已启用了双栈网络。

流程

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

    $ oc edit networks.config.openshift.io
  2. 删除在前面的步骤中添加到 cidrhostPrefix 字段中的 IPv6 具体配置。