3.3. 创建 Multus 网络

OpenShift Container Platform 使用 Multus CNI 插件来实现对 CNI 插件的链接。在集群安装过程中,您可以配置默认 pod 网络。默认网络处理集群中的所有一般网络流量。您可以基于可用的 CNI 插件定义额外网络,并将一个或多个此类网络附加到 pod。要将额外网络接口附加到 pod,您必须创建配置来定义接口的附加方式。您可以使用 NetworkAttachmentDefinition 自定义资源(CR)来指定每个接口。每个 NetworkAttachmentDefinition 中的 CNI 配置定义如何创建该接口。

OpenShift Container Storage 使用名为 macvlan 的 CNI 插件。创建基于 macvlan 的额外网络可让主机上的 pod 通过使用物理网络接口与其他主机和那些主机上的 pod 通信。附加到基于 macvlan 的额外网络的每个 pod 都会获得一个唯一的 MAC 地址。

3.3.1. 创建网络附加定义

要使用 Multus,需要一个已经正常工作的集群并具有正确的网络配置。如需更多信息,请参阅 Multus 配置的建议网络配置和要求。现在创建的 NetworkAttachmentDefinition (NAD)稍后可在存储集群安装过程中选择。这就是必须在存储集群之前创建它们的原因。

如规划指南中所述,您创建的 Multus 网络取决于您用于 OpenShift Container Storage 流量的可用网络接口数量。可以将所有存储流量分隔到两个接口中的一个接口(一个用于默认 OpenShift SDN),或者将存储流量进一步分隔到客户端存储流量(公共)和存储复制流量(私有或集群)。

以下是同一接口上所有存储流量(公共和集群)的 NetworkAttachmentDefinition 示例。它要求所有可调度节点上有一个额外的接口(OpenShift 默认 SDN 在单独的网络接口上)。

apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: ocs-public-cluster
  namespace: openshift-storage
spec:
  config: '{
  	"cniVersion": "0.3.1",
  	"type": "macvlan",
  	"master": "ens2",
  	"mode": "bridge",
  	"ipam": {
    	    "type": "whereabouts",
    	    "range": "192.168.1.0/24"
  	}
  }'
注意

所有网络接口名称必须在附加至 Multus 网络的所有节点上相同(即 ocs-public-clusterens2 )。

以下是用于单独 Multus 网络上存储流量的 NetworkAttachmentDefinition 示例,适用于客户端存储流量,以及用于复制流量的集群。它需要在 OpenShift 节点上额外有两个接口,托管 OSD pod,所有其他可调度节点上另一个接口(OpenShift 默认 SDN 在单独的网络接口上)。

apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: ocs-public
  namespace: openshift-storage
spec:
  config: '{
  	"cniVersion": "0.3.1",
  	"type": "macvlan",
  	"master": "ens2",
  	"mode": "bridge",
  	"ipam": {
    	    "type": "whereabouts",
    	    "range": "192.168.1.0/24"
  	}
  }'

NetworkAttachmentDefinition 示例:

apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: ocs-cluster
  namespace: openshift-storage
spec:
  config: '{
  	"cniVersion": "0.3.1",
  	"type": "macvlan",
  	"master": "ens3",
  	"mode": "bridge",
  	"ipam": {
    	    "type": "whereabouts",
    	    "range": "192.168.2.0/24"
  	}
  }'
注意

所有网络接口名称必须在附加至 Multus 网络的所有节点上相同(即 ens2ocs-publicens3ocs-cluster )。