본문으로 건너뛰기

NetworkAttachmentDefinition

Network 설정하기

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: ipoib
spec:
config: |
{
"cniVersion": "0.3.1",
"name": "ipoib",
"type": "ipoib",
"master": "ib0",
"ipam": {
"type": "whereabouts",
"range": "172.16.0.0/16"
}
}

Node별 Network 설정하기

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> } ]
      • name: <networkAttachmentDefinitionName>
      • namespace: <namespace>
      • interface: <ifName>: Pod 내부에서 사용할 인터페이스 이름입니다.