--- # This net-attach-def defines macvlan-conf with # + ips capabilities to specify ip in pod annotation and # + mac capabilities to specify mac address in pod annotation # default gateway is defined as well apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: macvlan-conf spec: config: '{ "cniVersion": "0.3.1", "plugins": [ { "type": "macvlan", "capabilities": { "ips": true }, "master": "eth0", "mode": "bridge", "ipam": { "type": "static", "routes": [ { "dst": "0.0.0.0/0", "gw": "10.1.1.1" } ] } }, { "capabilities": { "mac": true }, "type": "tuning" } ] }' --- # Define a pod with macvlan-conf, defined above, with ip address and mac, and # "gateway" overrides default gateway to use macvlan-conf's one. # without "gateway" in k8s.v1.cni.cncf.io/networks, default route will be cluster # network interface, eth0, even tough macvlan-conf has default gateway config. apiVersion: v1 kind: Pod metadata: name: samplepod annotations: k8s.v1.cni.cncf.io/networks: '[ { "name": "macvlan-conf", "ips": [ "10.1.1.101/24" ], "mac": "c2:b0:57:49:47:f1", "gateway": [ "10.1.1.1" ] }]' spec: containers: - name: samplepod command: ["/bin/bash", "-c", "trap : TERM INT; sleep infinity & wait"] image: dougbtv/centos-network ports: - containerPort: 80 automountServiceAccountToken: false