7.2. 将 Pod 附加到额外网络
作为集群用户,您可以将 Pod 附加到额外网络。
7.2.1. 将 Pod 添加到额外网络
您可以将 Pod 添加到额外网络。Pod 继续通过默认网络发送与集群相关的普通网络流量。
先决条件
- Pod 必须与额外网络处于相同的命名空间。
-
安装 OpenShift 命令行界面 (CLI),通常称为
oc
。 - 您必须登录集群。
流程
要添加带有额外网络的 Pod,请完成以下步骤:
在 Pod 资源定义中,将
k8s.v1.cni.cncf.io/networks
参数添加到 Podmetadata
映射中。k8s.v1.cni.cncf.io/networks
接受由一个或多个 NetworkAttachmentDefinition 自定义资源 (CR) 名称组成并用逗号分隔的字符串:metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...] 1
- 1
- 将
<network>
替换为要与 Pod 关联的额外网络的名称。要指定多个额外网络,请使用逗号分隔各个网络。逗号之间不可包括空格。如果您多次指定同一额外网络,则 Pod 会将多个网络接口附加到该网络。
在以下示例中,两个额外网络附加到 Pod:
apiVersion: v1 kind: Pod metadata: name: example-pod annotations: k8s.v1.cni.cncf.io/networks: net1,net2 spec: containers: - name: example-pod command: ["/bin/bash", "-c", "sleep 2000000000000"] image: centos/tools
运行以下命令来创建 Pod:
$ oc create -f pod.yaml
可选:通过运行以下命令,确认 Pod CR 中是否存在注解。将
<name>
替换为 Pod 的名称。$ oc get pod <name> -o yaml
在以下示例中,
example-pod
Pod 附加到net1
额外网络:$ oc get pod example-pod -o yaml apiVersion: v1 kind: Pod metadata: annotations: k8s.v1.cni.cncf.io/networks: macvlan-bridge k8s.v1.cni.cncf.io/networks-status: |- 1 [{ "name": "openshift-sdn", "interface": "eth0", "ips": [ "10.128.2.14" ], "default": true, "dns": {} },{ "name": "macvlan-bridge", "interface": "net1", "ips": [ "20.2.2.100" ], "mac": "22:2f:60:a5:f8:00", "dns": {} }] name: example-pod namespace: default spec: ... status: ...
- 1
k8s.v1.cni.cncf.io/networks-status
参数是对象的 JSON 数组。每个对象描述附加到 Pod 的额外网络的状态。注解值保存为纯文本值。