2.2. 使用 NetworkAttachmentDefinition 创建主网络


以下小节解释了如何使用 NetworkAttachmentDefinition (NAD) 资源创建和管理主网络。

2.2.1. 管理主网络的方法

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

  • 通过修改 Cluster Network Operator (CNO) 配置。使用此方法时,CNO 会自动创建和管理 NetworkAttachmentDefinition 对象。除了管理对象生命周期外,CNO 还可确保 DHCP 可用于使用 DHCP 分配 IP 地址的主网络。
  • 通过应用 YAML 清单。使用此方法,您可以通过创建 NetworkAttachmentDefinition 对象直接管理主网络。此方法可以调用多个 CNI 插件,以便在 pod 中附加主网络接口。

每种方法都是相互排斥的,您一次只能使用一种方法来管理主网络。对于任一方法,主网络由您配置的 Container Network Interface (CNI) 插件管理。

注意

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

$ openstack subnet set --dns-nameserver 0.0.0.0 <subnet_id>
Copy to Clipboard Toggle word wrap

Cluster Network Operator (CNO) 管理额外网络定义。当您指定要创建的主网络时,CNO 会自动创建 NetworkAttachmentDefinition 自定义资源定义(CRD)。

重要

请勿编辑 Cluster Network Operator 所管理的 NetworkAttachmentDefinition CRD。这样做可能会破坏主网络上的网络流量。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 可选:为主网络创建命名空间:

    $ oc create namespace <namespace_name>
    Copy to Clipboard Toggle word wrap
  2. 要编辑 CNO 配置,请输入以下命令:

    $ oc edit networks.operator.openshift.io cluster
    Copy to Clipboard Toggle word wrap
  3. 通过为您要创建的主网络添加配置来修改您要创建的 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"
                }
              ]
            }
          }
    Copy to Clipboard Toggle word wrap
  4. 保存您的更改,再退出文本编辑器以提交更改。

验证

  • 运行以下命令确认 CNO 创建了 NetworkAttachmentDefinition CRD。CNO 创建 CRD 之前可能会有延迟。预期输出显示 NAD CRD 的名称并创建期限(以分钟为单位)。

    $ oc get network-attachment-definitions -n <namespace>
    Copy to Clipboard Toggle word wrap

    其中:

    <namespace>
    指定添加到 CNO 配置中的网络附加的命名空间。

2.2.2.1. 配置主网络附加

主网络通过使用 k8s.cni.cncf.io API 组中的 NetworkAttachmentDefinition API 来配置。

下表中描述了 API 的配置:

Expand
表 2.1. NetworkAttachmentDefinition API 字段
字段类型描述

metadata.name

string

主网络的名称。

metadata.namespace

字符串

与对象关联的命名空间。

spec.config

string

JSON 格式的 CNI 插件配置。

2.2.3. 通过应用 YAML 清单来创建主网络附加

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您已以具有 cluster-admin 权限的用户身份登录。
  • 您在要部署 NAD 的命名空间中工作。

流程

  1. 使用主网络配置创建 YAML 文件,如下例所示:

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: next-net
    spec:
      config: |-
        {
          "cniVersion": "0.3.1",
          "name": "work-network",
          "namespace": "namespace2", 
    1
    
          "type": "host-device",
          "device": "eth1",
          "ipam": {
            "type": "dhcp"
          }
        }
    Copy to Clipboard Toggle word wrap
    1
    可选:您可以指定 NAD 应用到的命名空间。如果您在要部署 NAD 的命名空间中工作,则不需要此规格。
  2. 运行以下命令来创建主网络:

    $ oc apply -f <file>.yaml
    Copy to Clipboard Toggle word wrap

    其中:

    <file>
    指定包含 YAML 清单的文件名。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat