Skip to main content

NetworkAttachmentDefinition


하나의 config 사용하기

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: macvlan-conf-1
spec:
config: |
{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "eth1",
"mode": "bridge",
"ipam": {
"type": "host-local",
"ranges": [
[
{
"subnet": "10.10.0.0/16",
"rangeStart": "10.10.1.20",
"rangeEnd": "10.10.3.50",
"gateway": "10.10.0.254"
}
]
]
}
}

Node 별 config 사용하기

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: macvlan-conf-2
/etc/cni/multus/net.d/macvlan2
{
"cniVersion": "0.3.0",
"type": "macvlan",
"name": "macvlan-conf-2",
"master": "eth1",
"mode": "bridge",
"ipam": {
"type": "host-local",
"ranges": [
[
{
"subnet": "11.10.0.0/16",
"rangeStart": "11.10.1.20",
"rangeEnd": "11.10.3.50"
}
]
]
}
}

NetworkAttachmentDefinition.spec.config를 선언하지 않으면 .metadata.name과 일치하는 name을 가진 설정 파일을 찾아서 사용합니다.

Pod annotation으로 네트워크 할당하기

apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.v1.cni.cncf.io/networks: <networks>
  • <networks>
    • <network>[,<network>]
      • <network> = [<namespace>]<networkAttachmentDefinitionName>[@<ifName>]
    • JSON 형식으로 선언할 수도 있습니다.
      • [ { "<field>": <value> } ]
      • <field>
        • name
        • namespace
        • interface