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


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

重要

当使用需要 IPv6 的双栈网络时,您无法使用 IPv4 映射 IPv6 地址,如 ::FFFF:198.51.100.1

其他资源

24.7.1. 转换为双栈集群网络

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

重要

将集群转换为使用双栈网络后,您必须为它们重新创建任何现有 pod 以接收 IPv6 地址,因为只有新 pod 会被分配 IPv6 地址。

将单堆栈集群网络转换为双栈集群网络包括创建补丁并将其应用到集群的网络和子网。您可以转换为在安装程序置备的基础架构上运行的集群的双栈集群网络。

注意

更改 clusterNetworkserviceNetworkapiServerInternalIPsingressIP 对象的每个补丁操作都会触发重启集群。更改 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 的路由器。

流程

  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 地址从 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
      # ...

24.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 具体配置。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.