×

以下部分解释如何使用NetworkAttachmentDefinition (NAD) 资源创建和管理附加主网络。

管理附加网络的方法

您可以使用以下两种方法之一来管理 NAD 创建的附加网络的生命周期

  • 通过修改集群网络操作员 (CNO) 配置。使用此方法,CNO 会自动创建和管理NetworkAttachmentDefinition 对象。除了管理对象生命周期外,CNO 还会确保为使用 DHCP 分配的 IP 地址的附加网络提供 DHCP。

  • 通过应用 YAML 清单。使用此方法,您可以通过创建NetworkAttachmentDefinition 对象来直接管理附加网络。此方法允许调用多个 CNI 插件以便在 Pod 中附加附加网络接口。

每种方法都是互斥的,一次只能使用一种方法来管理附加网络。对于任何一种方法,附加网络都由您配置的容器网络接口 (CNI) 插件管理。

在 Red Hat OpenStack Platform (RHOSP) 上使用 OVN SDN 部署具有多个网络接口的 OpenShift Container Platform 节点时,次要接口的 DNS 配置可能会优先于主接口的 DNS 配置。在这种情况下,请运行以下命令删除附加到次要接口的子网 ID 的 DNS 命名服务器

$ openstack subnet set --dns-nameserver 0.0.0.0 <subnet_id>

使用集群网络操作员创建附加网络附件

集群网络操作员 (CNO) 管理附加网络定义。当您指定要创建的附加网络时,CNO 会自动创建NetworkAttachmentDefinition CRD。

不要编辑集群网络操作员管理的NetworkAttachmentDefinition CRD。这样做可能会中断附加网络上的网络流量。

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

  • 以具有cluster-admin 权限的用户身份登录。

步骤
  1. 可选:为附加网络创建命名空间

    $ oc create namespace <namespace_name>
  2. 要编辑 CNO 配置,请输入以下命令

    $ oc edit networks.operator.openshift.io cluster
  3. 通过添加要创建的附加网络的配置来修改您正在创建的 CR,如下面的示例 CR 所示。

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      # ...
      additionalNetworks:
      - name: tertiary-net
        namespace: namespace2
        type: Raw
        rawCNIConfig: |-
          {
            "cniVersion": "0.3.1",
            "name": "tertiary-net",
            "type": "ipvlan",
            "master": "eth1",
            "mode": "l2",
            "ipam": {
              "type": "static",
              "addresses": [
                {
                  "address": "192.168.1.23/24"
                }
              ]
            }
          }
  4. 保存更改并退出文本编辑器以提交更改。

验证
  • 通过运行以下命令确认 CNO 是否创建了NetworkAttachmentDefinition CRD。CNO 创建 CRD 可能需要一些时间。

    $ oc get network-attachment-definitions -n <namespace>

    其中

    <namespace>

    指定您添加到 CNO 配置的网络附件的命名空间。

    示例输出
    NAME                 AGE
    test-network-1       14m

附加网络附件的配置

附加网络是使用k8s.cni.cncf.io API 组中的NetworkAttachmentDefinition API 配置的。

API 的配置在下面的表格中描述

表 1. NetworkAttachmentDefinition API 字段
字段 类型 描述

metadata.name

字符串

附加网络的名称。

metadata.namespace

字符串

与该对象关联的命名空间。

spec.config

字符串

JSON 格式的 CNI 插件配置。

通过应用 YAML 清单来创建附加网络附件

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

  • 以具有cluster-admin 权限的用户身份登录。

步骤
  1. 创建包含附加网络配置的 YAML 文件,例如以下示例

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: next-net
    spec:
      config: |-
        {
          "cniVersion": "0.3.1",
          "name": "work-network",
          "type": "host-device",
          "device": "eth1",
          "ipam": {
            "type": "dhcp"
          }
        }
  2. 要创建附加网络,请输入以下命令

    $ oc apply -f <file>.yaml

    其中

    <file>

    指定包含 YAML 清单的文件名。