23.2. 配置额外网络


作为集群管理员,您可以为集群配置额外网络。支持以下网络类型:

23.2.1. 管理额外网络的方法

您可以通过两种方法来管理额外网络的生命周期。每种方法都是相互排斥的,您一次只能使用一种方法来管理额外网络。对于任一方法,额外网络由您配置的 Container Network Interface(CNI)插件管理。

对于额外网络,IP 地址通过您配置为额外网络一部分的 IP 地址管理 (IPAM) CNI 插件来置备。IPAM 插件支持多种 IP 地址分配方法,包括 DHCP 和静态分配。

  • 修改 Cluster Network Operator(CNO)配置:CNO 会自动创建和管理 NetworkAttachmentDefinition 对象。除了管理对象生命周期外,CNO 可以确保 DHCP 可用于使用 DHCP 分配的 IP 地址的额外网络。
  • 应用 YAML 清单:您可以通过创建 NetworkAttachmentDefinition 对象直接管理额外网络。这个方法可以串联 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>

23.2.2. 配置额外网络附加

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

重要

请勿将任何敏感信息或机密存储在 NetworkAttachmentDefinition 对象中,因为此类信息可由项目管理用户访问。

下表中描述了 API 的配置:

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

metadata.name

string

额外网络的名称。

metadata.namespace

字符串

与对象关联的命名空间。

spec.config

string

JSON 格式的 CNI 插件配置。

23.2.2.1. 通过 Cluster Network Operator 配置额外网络

额外网络附加的配置作为 Cluster Network Operator(CNO)配置的一部分被指定。

以下 YAML 描述了使用 CNO 管理额外网络的配置参数:

Cluster Network Operator 配置

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  # ...
  additionalNetworks: 1
  - name: <name> 2
    namespace: <namespace> 3
    rawCNIConfig: |- 4
      {
        ...
      }
    type: Raw

1
由一个或多个附加网络配置组成的数组。
2
您要创建的额外网络附加的名称。该名称在指定的 namespace 中需要是唯一的。
3
在其中创建网络附加的命名空间。如果您未指定值,则使用 default 命名空间。
重要

要防止 OVN-Kubernetes 网络插件的命名空间问题,请不要命名额外网络附加 default,因为此命名空间被保留给 default 额外网络附加。

4
JSON 格式的 CNI 插件配置。

23.2.2.2. 从 YAML 清单配置额外网络

从 YAML 配置文件指定额外网络的配置,如下例所示:

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
  name: <name> 1
spec:
  config: |- 2
    {
      ...
    }
1
您要创建的额外网络附加的名称。
2
JSON 格式的 CNI 插件配置。

23.2.3. 额外网络类型的配置

以下部分介绍了额外网络的具体配置字段。

23.2.3.1. 配置桥接额外网络

以下对象描述了 bridge CNI 插件的配置参数:

表 23.2. bridge CNI 插件 JSON 配置对象
字段类型描述

cniVersion

string

CNI 规格版本。需要 0.3.1 值。

名称

string

您之前为 CNO 配置提供的 name 参数的值。

type

string

用于配置的 CNI 插件的名称:bridge

ipam

object

IPAM CNI 插件的配置对象。该插件管理附加定义的 IP 地址分配。

bridge

string

可选:指定要使用的虚拟网桥名称。如果主机上不存在网桥接口,则进行创建。默认值为 cni0

ipMasq

布尔值

可选:设置为 true,为离开虚拟网络的流量启用 IP 伪装。所有流量的源 IP 地址都会改写为网桥 IP 地址。如果网桥没有 IP 地址,此设置无效。默认值为 false

isGateway

布尔值

可选:设置为 true,从而为网桥分配 IP 地址。默认值为 false

isDefaultGateway

布尔值

可选:设置为 true,将网桥配置为虚拟网络的默认网关。默认值为 false。如果 isDefaultGateway 设置为 true,则 isGateway 也会自动设置为 true

forceAddress

布尔值

可选:设置为 true,以允许将之前分配的 IP 地址分配给虚拟网桥。设置为 false 时,如果将来自于重叠子集的 IPv4 地址或者 IPv6 地址分配给虚拟网桥,则会发生错误。默认值为 false

hairpinMode

布尔值

可选:设置为 true,以允许虚拟网桥通过收到它的虚拟端口将其发回。这个模式也被称为反射中继。默认值为 false

promiscMode

布尔值

可选:设置为 true 以在网桥上启用混杂模式。默认值为 false

vlan

string

可选:指定一个虚拟 LAN (VLAN) 标签作为整数值。默认情况下不分配 VLAN 标签。

preserveDefaultVlan

string

可选:指示在连接到网桥的 veth 端是否保留默认 vlan。默认值为 true。

mtu

整数

可选:将最大传输单元 (MTU) 设置为指定的值。默认值由内核自动设置。

enabledad

布尔值

可选:为容器侧 veth 启用重复的地址检测。默认值为 false

macspoofchk

布尔值

可选:启用 mac spoof 检查,将来自容器的流量限制为接口的 mac 地址。默认值为 false

注意

VLAN 参数在 veth 的主机端配置 VLAN 标签,并在网桥接口上启用 vlan_filtering 功能。

注意

要为 L2 网络配置 uplink,您需要使用以下命令在 uplink 接口上允许 vlan :

$  bridge vlan add vid VLAN_ID dev DEV
23.2.3.1.1. 网桥配置示例

以下示例配置了名为 bridge-net 的额外网络:

{
  "cniVersion": "0.3.1",
  "name": "bridge-net",
  "type": "bridge",
  "isGateway": true,
  "vlan": 2,
  "ipam": {
    "type": "dhcp"
    }
}

23.2.3.2. 主机设备额外网络配置

注意

仅设置以下参数之一来指定您的网络设备:devicehwaddrkernelpathpciBusID

以下对象描述了 host-device CNI 插件的配置参数:

表 23.3. 主机 device CNI 插件 JSON 配置对象
字段类型描述

cniVersion

string

CNI 规格版本。需要 0.3.1 值。

名称

string

您之前为 CNO 配置提供的 name 参数的值。

type

string

用于配置的 CNI 插件的名称:host-device

device

string

可选:设备的名称,如 eth0

hwaddr

string

可选:设备硬件 MAC 地址。

kernelpath

string

可选:Linux 内核设备路径,如 /sys/devices/pci0000:00/0000:00:1f.6

pciBusID

string

可选:网络设备的 PCI 地址,如 0000:00:1f.6

23.2.3.2.1. host-device 配置示例

以下示例配置了名为 hostdev-net 的额外网络:

{
  "cniVersion": "0.3.1",
  "name": "hostdev-net",
  "type": "host-device",
  "device": "eth1"
}

23.2.3.3. 配置 VLAN 额外网络

以下对象描述了 VLAN CNI 插件的配置参数:

表 23.4. VLAN CNI 插件 JSON 配置对象
字段类型描述

cniVersion

string

CNI 规格版本。需要 0.3.1 值。

名称

string

您之前为 CNO 配置提供的 name 参数的值。

type

string

要配置的 CNI 插件的名称:vlan

master

string

与网络附加关联的以太网接口。如果没有指定 master,则使用默认网络路由的接口。

vlanId

整数

设置 vlan 的 id。

ipam

object

IPAM CNI 插件的配置对象。该插件管理附加定义的 IP 地址分配。

mtu

整数

可选:将最大传输单元 (MTU) 设置为指定的值。默认值由内核自动设置。

dns

整数

可选:返回的 DNS 信息,例如,用于优先级排序的 DNS 名称服务器列表。

linkInContainer

布尔值

可选:指定 master 接口是否在容器网络命名空间或主网络命名空间中。

23.2.3.3.1. VLAN 配置示例

以下示例配置了一个名为 vlan-net 的额外网络:

{
  "name": "vlan-net",
  "cniVersion": "0.3.1",
  "type": "vlan",
  "master": "eth0",
  "mtu": 1500,
  "vlanId": 5,
  "linkInContainer": false,
  "ipam": {
      "type": "host-local",
      "subnet": "10.1.1.0/24"
  },
  "dns": {
      "nameservers": [ "10.1.1.1", "8.8.8.8" ]
  }
}

23.2.3.4. 配置 IPVLAN 额外网络

以下对象描述了 IPVLAN CNI 插件的配置参数:

表 23.5. IPVLAN CNI 插件 JSON 配置对象
字段类型描述

cniVersion

string

CNI 规格版本。需要 0.3.1 值。

名称

string

您之前为 CNO 配置提供的 name 参数的值。

type

string

要配置的 CNI 插件的名称:ipvlan

ipam

object

IPAM CNI 插件的配置对象。该插件管理附加定义的 IP 地址分配。除非插件被串联,否则需要此项。

模式

string

可选:虚拟网络的操作模式。这个值必须是 l2l3l3s。默认值为 l2

master

string

可选:与网络附加关联的以太网接口。如果没有指定 master,则使用默认网络路由的接口。

mtu

整数

可选:将最大传输单元 (MTU) 设置为指定的值。默认值由内核自动设置。

注意
  • ipvlan 对象不允许虚拟接口与 master 接口通信。因此,容器无法使用 ipvlan 接口访问主机。确保容器加入提供主机连接的网络,如支持 Precision Time Protocol (PTP) 的网络。
  • 单个 master 接口无法同时配置为使用 macvlanipvlan
  • 对于不能与接口无关的 IP 分配方案,可以使用处理此逻辑的较早插件来串联 ipvlan 插件。如果省略 master,则前面的结果必须包含一个接口名称,以便 ipvlan 插件进行 enslave。如果省略 ipam,则使用前面的结果来配置 ipvlan 接口。
23.2.3.4.1. ipvlan 配置示例

以下示例配置了名为 ipvlan -net 的额外网络:

{
  "cniVersion": "0.3.1",
  "name": "ipvlan-net",
  "type": "ipvlan",
  "master": "eth1",
  "mode": "l3",
  "ipam": {
    "type": "static",
    "addresses": [
       {
         "address": "192.168.10.10/24"
       }
    ]
  }
}

23.2.3.5. 配置 MACVLAN 额外网络

以下对象描述了 macvlan CNI 插件的配置参数:

表 23.6. MACVLAN CNI 插件 JSON 配置对象
字段类型描述

cniVersion

string

CNI 规格版本。需要 0.3.1 值。

名称

string

您之前为 CNO 配置提供的 name 参数的值。

type

string

用于配置的 CNI 插件的名称:macvlan

ipam

object

IPAM CNI 插件的配置对象。该插件管理附加定义的 IP 地址分配。

模式

string

可选:配置虚拟网络上的流量可见性。必须是 bridgepassthruprivateVepa。如果没有提供值,则默认值为 bridge

master

string

可选:与新创建的 macvlan 接口关联的主机网络接口。如果没有指定值,则使用默认路由接口。

mtu

string

可选:将最大传输单元 (MTU) 到指定的值。默认值由内核自动设置。

注意

如果您为插件配置指定 master key,请使用与主网络插件关联的物理网络接口,以避免可能冲突。

23.2.3.5.1. macvlan 配置示例

以下示例配置了名为 macvlan-net 的额外网络:

{
  "cniVersion": "0.3.1",
  "name": "macvlan-net",
  "type": "macvlan",
  "master": "eth1",
  "mode": "bridge",
  "ipam": {
    "type": "dhcp"
    }
}

23.2.3.6. 配置 OVN-Kubernetes 额外网络

Red Hat OpenShift Networking OVN-Kubernetes 网络插件允许为 pod 配置二级网络接口。要配置二级网络接口,您必须在 NetworkAttachmentDefinition 自定义资源定义 (CRD)中定义配置。

重要

OVN-Kubernetes 额外网络配置只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

注意

Pod 和多网络策略创建可能会处于待处理状态,直到节点的 OVN-Kubernetes control plane 代理处理了关联的 network-attachment-definition CR。

以下小节提供了 OVN-Kubernetes 当前允许从属网络的每个拓扑配置示例。

注意

网络名称必须是唯一的。例如,不支持使用多个带有不同配置的 NetworkAttachmentDefinition CRD。

23.2.3.6.1. OVN-Kubernetes 网络插件 JSON 配置表

下表描述了 OVN-Kubernetes CNI 网络插件的配置参数:

表 23.7. OVN-Kubernetes 网络插件 JSON 配置表
字段类型描述

cniVersion

string

CNI 规格版本。所需的值为 0.3.1

名称

string

网络的名称。这些网络不是命名空间。例如,您可以有一个名为 l2-network 的网络,该网络被在两个不同的命名空间中存在的两个不同的 NetworkAttachmentDefinition 引用。这样可确保,pod 可以在其自己不同的命名空间中使用的 NetworkAttachmentDefinition 可以通过同一二级网络进行通信。但是,这两种不同的 NetworkAttachmentDefinition 必须共享相同的网络特定参数,如 topology, subnets, mtu, 和 excludeSubnets

type

string

用于配置的 CNI 插件的名称。所需的值为 ovn-k8s-cni-overlay

topology

string

网络的拓扑配置。所需的值为 layer2

subnets

string

用于集群间的网络的子网。

对于 "topology":"layer2" 部署,支持 IPv6 (2001:DBB::/64) 和双栈 (192.168.100.0/24,2001:DBB::/64) 子网。

mtu

string

指定的值的最大传输单元(MTU)。默认值 1300 由内核自动设置。

netAttachDefName

string

包含此配置的网络附加定义对象的元数据 namespacename。例如,如果在名为 l2-network 的命名空间 ns1 中的 NetworkAttachmentDefinition 中定义此配置,这应设为 ns1/l2-network

excludeSubnets

string

以逗号分隔的 CIDR 和 IP 列表。IP 从可分配的 IP 池中移除,永远不会传递给 pod。当省略时,实现网络的逻辑交换机只提供第 2 层通信,用户必须为 pod 配置 IP。端口安全只阻止 MAC 欺骗。

23.2.3.6.2. 配置交换拓扑

交换机(层 2)拓扑网络通过集群范围的逻辑交换机互连工作负载。此配置可用于 IPv6 和双栈部署。

注意

第 2 层切换拓扑网络只允许在集群中的 pod 间传输数据数据包。

以下 NetworkAttachmentDefinition 自定义资源定义 (CRD) YAML 描述了配置交换二级网络所需的字段。

    {
            "cniVersion": "0.3.1",
            "name": "l2-network",
            "type": "ovn-k8s-cni-overlay",
            "topology":"layer2",
            "subnets": "10.100.200.0/24",
            "mtu": 1300,
            "netAttachDefName": "ns1/l2-network",
            "excludeSubnets": "10.100.200.0/29"
    }
23.2.3.6.3. 为额外网络配置 pod

您必须通过 k8s.v1.cni.cncf.io/networks 注解来指定二级网络附加。

以下示例置备有两个二级附件的 pod,一个用于本指南中提供的每个附加配置。

apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.v1.cni.cncf.io/networks: l2-network
  name: tinypod
  namespace: ns1
spec:
  containers:
  - args:
    - pause
    image: k8s.gcr.io/e2e-test-images/agnhost:2.36
    imagePullPolicy: IfNotPresent
    name: agnhost-container
23.2.3.6.4. 使用静态 IP 地址配置 pod

以下示例使用静态 IP 地址置备一个 pod。

注意
  • 您只能为第 2 层附加指定 pod 的从属网络附加的 IP 地址。
  • 只有在附加配置没有功能子网时,才能为 pod 指定静态 IP 地址。
apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.v1.cni.cncf.io/networks: '[
      {
        "name": "l2-network", 1
        "mac": "02:03:04:05:06:07", 2
        "interface": "myiface1", 3
        "ips": [
          "192.0.2.20/24"
          ] 4
      }
    ]'
  name: tinypod
  namespace: ns1
spec:
  containers:
  - args:
    - pause
    image: k8s.gcr.io/e2e-test-images/agnhost:2.36
    imagePullPolicy: IfNotPresent
    name: agnhost-container
1
网络的名称。这个值在所有 NetworkAttachmentDefinition 之间必须是唯一的。
2
为接口分配的 MAC 地址。
3
为 pod 创建的网络接口的名称。
4
要分配给网络接口的 IP 地址。

23.2.4. 为额外网络配置 IP 地址分配

IP 地址管理 (IPAM) Container Network Interface (CNI) 插件为其他 CNI 插件提供 IP 地址。

您可以使用以下 IP 地址分配类型:

  • 静态分配。
  • 通过 DHCP 服务器进行动态分配。您指定的 DHCP 服务器必须可从额外网络访问。
  • 通过 Whereabouts IPAM CNI 插件进行动态分配。

23.2.4.1. 静态 IP 地址分配配置

下表描述了静态 IP 地址分配的配置:

表 23.8. ipam 静态配置对象
字段类型描述

type

string

IPAM 地址类型。值必须是 static

addresses

数组

指定分配给虚拟接口的 IP 地址的对象数组。支持 IPv4 和 IPv6 IP 地址。

Routes

数组

指定要在 pod 中配置的路由的一组对象。

dns

数组

可选:指定 DNS 配置的对象数组。

address 数组需要带有以下字段的对象:

表 23.9. ipam.addresses[] array
字段类型描述

address

string

您指定的 IP 地址和网络前缀。例如:如果您指定 10.10.21.10/24,那么会为额外网络分配 IP 地址 10.10.21.10,网掩码为 255.255.255.0

gateway

string

出口网络流量要路由到的默认网关。

表 23.10. ipam.routes[] array
字段类型描述

dst

string

CIDR 格式的 IP 地址范围,如 192.168.17.0/24 或默认路由 0.0.0.0/0

gw

string

网络流量路由的网关。

表 23.11. ipam.dns object
字段类型描述

nameservers

数组

用于发送 DNS 查询的一个或多个 IP 地址的数组。

domain

数组

要附加到主机名的默认域。例如,如果将域设置为 example.com,对 example-host 的 DNS 查找查询将被改写为 example-host.example.com

search

数组

在 DNS 查找查询过程中,附加到非限定主机名(如 example-host)的域名的数组。

静态 IP 地址分配配置示例

{
  "ipam": {
    "type": "static",
      "addresses": [
        {
          "address": "191.168.1.7/24"
        }
      ]
  }
}

23.2.4.2. 动态 IP 地址(DHCP)分配配置

以下 JSON 描述了使用 DHCP 进行动态 IP 地址地址分配的配置。

DHCP 租期续订

pod 在创建时获取其原始 DHCP 租期。该租期必须由集群中运行的一个小型的 DHCP 服务器部署定期续订。

要触发 DHCP 服务器的部署,您必须编辑 Cluster Network Operator 配置来创建 shim 网络附加,如下例所示:

shim 网络附加定义示例

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: dhcp-shim
    namespace: default
    type: Raw
    rawCNIConfig: |-
      {
        "name": "dhcp-shim",
        "cniVersion": "0.3.1",
        "type": "bridge",
        "ipam": {
          "type": "dhcp"
        }
      }
  # ...

表 23.12. ipam DHCP 配置对象
字段类型描述

type

string

IPAM 地址类型。需要值 dhcp

动态 IP 地址(DHCP)分配配置示例

{
  "ipam": {
    "type": "dhcp"
  }
}

23.2.4.3. 使用 Whereabouts 进行动态 IP 地址分配配置

Whereabouts CNI 插件允许在不使用 DHCP 服务器的情况下动态地将 IP 地址分配给额外网络。

下表描述了使用 Whereabouts 进行动态 IP 地址分配的配置:

表 23.13. ipam whereabouts 配置对象
字段类型描述

type

string

IPAM 地址类型。需要 abouts 的值。

range

string

CIDR 表示法中的 IP 地址和范围。IP 地址是通过这个地址范围来分配的。

exclude

数组

可选: CIDR 标记中零个或更多 IP 地址和范围的列表。包含在排除地址范围中的 IP 地址。

使用 Whereabouts 的动态 IP 地址分配配置示例

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/27",
    "exclude": [
       "192.0.2.192/30",
       "192.0.2.196/32"
    ]
  }
}

23.2.4.4. 创建abouts-reconciler 守护进程集的位置

Whereabouts 协调器负责管理集群中 pod 的动态 IP 地址分配,使用 Whereabouts IP 地址管理 (IPAM) 解决方案。它确保每个 pod 从指定的 IP 地址范围中获取唯一的 IP 地址。它还会在 pod 删除或缩减时处理 IP 地址发行版本。

注意

您还可以使用 NetworkAttachmentDefinition 自定义资源 (CR) 进行动态 IP 地址分配。

当您通过 Cluster Network Operator 配置一个额外的网络时,会自动创建 whereabouts-reconciler 守护进程集。从 YAML 清单配置额外网络时,它不会自动创建。

要触发 whereabouts-reconciler 守护进程集的部署,您必须通过编辑 Cluster Network Operator 自定义资源文件来手动创建一个 whereabouts-shim 网络附加。

使用以下步骤部署 whereabouts-reconciler 守护进程集。

流程

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

    $ oc edit network.operator.openshift.io cluster
  2. 在自定义资源 (CR) 的 spec 定义中包含此示例 YAML extract 中显示的 additionalNetworks 部分:

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    # ...
    spec:
      additionalNetworks:
      - name: whereabouts-shim
        namespace: default
        rawCNIConfig: |-
          {
           "name": "whereabouts-shim",
           "cniVersion": "0.3.1",
           "type": "bridge",
           "ipam": {
             "type": "whereabouts"
           }
          }
        type: Raw
    # ...
  3. 保存文件并退出文本编辑器。
  4. 运行以下命令,验证 whereabouts-reconciler 守护进程集是否已成功部署:

    $ oc get all -n openshift-multus | grep whereabouts-reconciler

    输出示例

    pod/whereabouts-reconciler-jnp6g 1/1 Running 0 6s
    pod/whereabouts-reconciler-k76gg 1/1 Running 0 6s
    pod/whereabouts-reconciler-k86t9 1/1 Running 0 6s
    pod/whereabouts-reconciler-p4sxw 1/1 Running 0 6s
    pod/whereabouts-reconciler-rvfdv 1/1 Running 0 6s
    pod/whereabouts-reconciler-svzw9 1/1 Running 0 6s
    daemonset.apps/whereabouts-reconciler 6 6 6 6 6 kubernetes.io/os=linux 6s

23.2.4.5. 配置 Whereabouts IP 协调器调度

Whereabouts IPAM CNI 插件每天运行 IP 协调器。此过程会清理任何已搁置的 IP 分配,搁置的 IP 分配可能会耗尽 IP 资源,并使新的 pod 无法获取分配给它们的 IP。

使用这个流程更改 IP 协调器运行的频率。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 您已部署了whereabouts-reconciler 守护进程集,whereabouts-reconciler pod 已启动并正在运行。

流程

  1. 运行以下命令,使用 IP 协调器的特定 cron 表达式在 openshift-multus 命名空间中创建一个名为 whereabouts-configConfigMap 对象:

    $ oc create configmap whereabouts-config -n openshift-multus --from-literal=reconciler_cron_expression="*/15 * * * *"

    此 cron 表达式表示 IP 协调器每 15 分钟运行一次。根据您的特定要求调整表达式。

    注意

    whereabouts-reconciler 守护进程集只能使用包含五个星号的 cron 表达式模式。目前才不支持带有用于表示秒的第 6 个星号。

  2. 运行以下命令,获取与 openshift-multus 命名空间中的 whereabouts-reconciler 守护进程集和 pod 相关的资源信息。

    $ oc get all -n openshift-multus | grep whereabouts-reconciler

    输出示例

    pod/whereabouts-reconciler-2p7hw                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-76jk7                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-94zw6                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-mfh68                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-pgshz                   1/1     Running   0             4m14s
    pod/whereabouts-reconciler-xn5xz                   1/1     Running   0             4m14s
    daemonset.apps/whereabouts-reconciler          6         6         6       6            6           kubernetes.io/os=linux   4m16s

  3. 运行以下命令,以验证 whereabouts-reconciler pod 是否运行带有配置的时间间隔的 IP 协调器:

    $ oc -n openshift-multus logs whereabouts-reconciler-2p7hw

    输出示例

    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_33_54.1375928161": CREATE
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_33_54.1375928161": CHMOD
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..data_tmp": RENAME
    2024-02-02T16:33:54Z [verbose] using expression: */15 * * * *
    2024-02-02T16:33:54Z [verbose] configuration updated to file "/cron-schedule/..data". New cron expression: */15 * * * *
    2024-02-02T16:33:54Z [verbose] successfully updated CRON configuration id "00c2d1c9-631d-403f-bb86-73ad104a6817" - new cron expression: */15 * * * *
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/config": CREATE
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_26_17.3874177937": REMOVE
    2024-02-02T16:45:00Z [verbose] starting reconciler run
    2024-02-02T16:45:00Z [debug] NewReconcileLooper - inferred connection data
    2024-02-02T16:45:00Z [debug] listing IP pools
    2024-02-02T16:45:00Z [debug] no IP addresses to cleanup
    2024-02-02T16:45:00Z [verbose] reconciler success

23.2.5. 使用 Cluster Network Operator 创建额外网络附加

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

重要

不要编辑 Cluster Network Operator 所管理的 NetworkAttachmentDefinition 对象。这样做可能会破坏额外网络上的网络流量。

先决条件

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

流程

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

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

    $ oc edit networks.operator.openshift.io cluster
  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"
                }
              ]
            }
          }
  4. 保存您的更改,再退出文本编辑器以提交更改。

验证

  • 通过运行以下命令确认 CNO 创建了 NetworkAttachmentDefinition 对象。CNO 创建对象之前可能会有延迟。

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

    其中:

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

    输出示例

    NAME                 AGE
    test-network-1       14m

23.2.6. 通过应用 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 清单的文件名。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.