This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.13.5. 将 pod 附加到额外网络
作为集群用户,您可以将 pod 附加到额外网络。
13.5.1. 将 pod 添加到额外网络
您可以将 pod 添加到额外网络。pod 继续通过默认网络发送与集群相关的普通网络流量。
创建 pod 时会附加额外网络。但是,如果 pod 已存在,您无法为其附加额外网络。
pod 必须与额外网络处于相同的命名空间。
先决条件
- 
							安装 OpenShift CLI(oc)。
- 登录到集群。
流程
- 为 - Pod对象添加注解。只能使用以下注解格式之一:- 要在没有自定义的情况下附加额外网络,请使用以下格式添加注解。将 - <network>替换为要与 pod 关联的额外网络的名称:- metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]- metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 要指定多个额外网络,请使用逗号分隔各个网络。逗号之间不可包括空格。如果您多次指定同一额外网络,则该 pod 会将多个网络接口附加到该网络。
 
- 要通过自定义来附加额外网络,请添加具有以下格式的注解: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 运行以下命令来创建 pod。将 - <name>替换为 pod 的名称。- oc create -f <name>.yaml - $ oc create -f <name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选: 要确认 - PodCR 中是否存在注解,请输入以下命令将- <name>替换为 pod 的名称。- oc get pod <name> -o yaml - $ oc get pod <name> -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在以下示例中, - example-podpod 附加到- net1额外网络:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- k8s.v1.cni.cncf.io/networks-status参数是对象的 JSON 数组。每个对象描述附加到 pod 的额外网络的状态。注解值保存为纯文本值。
 
13.5.1.1. 指定特定于 pod 的地址和路由选项
将 pod 附加到额外网络时,您可能需要在特定 pod 中指定有关该网络的其他属性。这可让您更改路由的某些方面,并指定静态 IP 地址和 MAC 地址。要达到此目的,您可以使用 JSON 格式的注解。
先决条件
- pod 必须与额外网络处于相同的命名空间。
- 
								安装 OpenShift CLI (oc) 。
- 您必须登录集群。
流程
要在指定地址和/或路由选项的同时将 pod 添加到额外网络,请完成以下步骤:
- 编辑 - Pod资源定义。如果要编辑现有- Pod资源,请运行以下命令在默认编辑器中编辑其定义。将- <name>替换为要编辑的- Pod资源的名称。- oc edit pod <name> - $ oc edit pod <name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 - Pod资源定义中,将- k8s.v1.cni.cncf.io/networks参数添加到 pod- metadata映射中。- k8s.v1.cni.cncf.io/networks接受 JSON 字符串,该字符串除指定附加属性外,还引用- NetworkAttachmentDefinition自定义资源(CR)名称的对象。- metadata: annotations: k8s.v1.cni.cncf.io/networks: '[<network>[,<network>,...]]'- metadata: annotations: k8s.v1.cni.cncf.io/networks: '[<network>[,<network>,...]]'- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将<network>替换为 JSON 对象,如下例所示。单引号是必需的。
 
- 在以下示例中,通过 - default-route参数,注解指定了哪个网络附加将使用默认路由。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
默认路由将导致任何没有在其它路由中指定的流量被路由到网关。
将 OpenShift Container Platform 的默认路由设置为默认网络接口以外的接口时,可能会导致应该是 pod 和 pod 间的网络流量被路由到其他接口。
						要验证 pod 的路由属性,可使用 oc 命令在 pod 中执行 ip 命令。
					
oc exec -it <pod_name> -- ip route
$ oc exec -it <pod_name> -- ip route
							您还可以引用 pod 的 k8s.v1.cni.cncf.io/networks-status 来查看哪个额外网络已经分配了默认路由,这可以通过 JSON 格式的对象列表中的 default-route 键实现。
						
要为 pod 设置静态 IP 地址或 MAC 地址,您可以使用 JSON 格式的注解。这要求您创建允许此功能的网络。这可以在 CNO 的 rawCNIConfig 中指定。
- 运行以下命令来编辑 CNO CR: - oc edit networks.operator.openshift.io cluster - $ oc edit networks.operator.openshift.io cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
以下 YAML 描述了 CNO 的配置参数:
Cluster Network Operator YAML 配置
以下对象描述了使用 macvlan CNI 插件的静态 MAC 地址和 IP 地址的配置参数:
使用静态 IP 和 MAC 地址的 macvlan CNI 插件 JSON 配置对象
以上网络附加可能会以 JSON 格式的注解引用,同时使用相关的键来指定将哪些静态 IP 和 MAC 地址分配给指定 pod。
使用以下内容编辑 pod:
oc edit pod <name>
$ oc edit pod <name>使用静态 IP 和 MAC 地址的 macvlan CNI 插件 JSON 配置对象
静态 IP 地址和 MAC 地址不需要同时使用,您可以单独使用,也可以一起使用。
						要验证一个带有额外网络的 pod 的 IP 地址和 MAC 属性,请使用 oc 命令在 pod 中执行 ip 命令。
					
oc exec -it <pod_name> -- ip a
$ oc exec -it <pod_name> -- ip a