metadata:
annotations:
k8s.v1.cni.cncf.io/networks: <network>[,<network>,...] (1)
As a cluster user you can attach a Pod to an additional network.
You can add a Pod to an additional network. The Pod continues to send normal cluster related network traffic over the default network.
The Pod must be in the same namespace as the additional network.
Install the OpenShift Command-line Interface (CLI), commonly known as oc
.
You must log in to the cluster.
To add a Pod with additional networks, complete the following steps:
Create the Pod resource definition and add the k8s.v1.cni.cncf.io/networks
parameter to the Pod metadata
mapping. The k8s.v1.cni.cncf.io/networks
accepts a comma separated string of one or more NetworkAttachmentDefinition Custom Resource (CR) names:
metadata:
annotations:
k8s.v1.cni.cncf.io/networks: <network>[,<network>,...] (1)
1 | Replace <network> with the name of the additional network to associate
with the Pod. To specify more than one additional network, separate each network
with a comma. Do not include whitespace between the comma. If you specify
the same additional network multiple times, that Pod will have multiple network
interfaces attached to that network. |
In the following example, two additional networks are attached to the 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
Create the Pod by running the following command:
$ oc create -f pod.yaml
Optional: Confirm that the annotation exists in the Pod CR by running the
following command. Replace <name>
with the name of the Pod.
$ oc get pod <name> -o yaml
In the following example, the example-pod
Pod is attached to the net1
additional network:
$ 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 | The k8s.v1.cni.cncf.io/networks-status parameter is a JSON array of
objects. Each object describes the status of an additional network attached
to the Pod. The annotation value is stored as a plain text value. |