...
Verify Multus Installation
Once installed, verify that the Multus pod is running in the
kube-system
namespace:microk8s kubectl get pods -n kube-system
Look for the multus pod. The pod should be in a
Running
state. If it is not, inspect the logs to troubleshoot:microk8s kubectl logs <multus-pod-name> -n kube-system
Modify NetworkAttachmentDefinition
To use Multus, you will need to define additional networks for your pods. This is done by creating a NetworkAttachmentDefinition.
Here's an example YAML file for our testbeamline it adds access to the gigavision network of our cameras:.
enp4s0f0 is the network interface that is connected with the cams
rangeStart- rangeEnd are the address that the pod can acquire (note this addresses should not be assigned to HW)Code Block language yaml title Network attachement configuration apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: gigevision-network namespace: testbeamline spec: config: '{ "cniVersion": "0.3.1", "type": "bridge", "master": "enp4s0f0", "bridge": "br0", "ipam": { "type": "host-local", "subnet": "192.168.115.0/24", "rangeStart": "192.168.115.220", "rangeEnd": "192.168.115.254", "routes": [ { "dst": "192.168.115.0/24", "gw": "192.168.115.2" } ], "gateway": "192.168.115.2" } }'
Apply the NetworkAttachmentDefinition with:
microk8s kubectl apply -f <filename>.yaml
Deploy Pods Using Multiple Networks
After Multus is installed and your custom networks are defined, you can deploy pods with multiple network interfaces. Here's an example pod spec using two networks (one default and one from Multus):
Code Block language yaml title Test gige camera access apiVersion: v1 kind: Pod metadata: name: pod-with-multus annotations: k8s.v1.cni.cncf.io/networks: gigevision-network spec: containers: - name: app-container image: https://baltig.infn.it/epics-containers/ioc-chart.git command: ["/bin/sh", "-c", "sleep 3600"]
...