R&D/클라우드

kubernetes Multus CNI: POD에 두개의 네트워크를 연결하기

sunshout 2025. 1. 12. 01:46

Kubernetes에서 Pod에 두 개 이상의 네트워크를 연결하려면 기본적으로 제공되는 단일 네트워크 인터페이스(CNI) 외에 멀티 네트워크 인터페이스를 지원하는 방법을 사용해야 합니다. 이를 위해 Multus CNI와 같은 플러그인을 활용할 수 있습니다. Multus CNI는 Kubernetes에서 다중 네트워크를 설정할 수 있도록 지원합니다.

다음은 이를 설정하는 방법입니다:


1. Multus CNI 설치

Multus는 Kubernetes 클러스터에 설치하는 추가 플러그인입니다. Multus를 설치하면 기본 CNI 플러그인 외에 추가 네트워크를 연결할 수 있습니다.

kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/main/deployments/multus-daemonset.yml

2. 네트워크 추가 설정 (NetworkAttachmentDefinition)

추가 네트워크를 정의하려면 NetworkAttachmentDefinition 리소스를 사용해야 합니다. 예를 들어, 두 개의 네트워크를 정의합니다.

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
  name: custom-network-1
  namespace: default
spec:
  config: '{
    "cniVersion": "0.3.1",
    "type": "bridge",
    "bridge": "br0",
    "ipam": {
      "type": "host-local",
      "subnet": "192.168.1.0/24",
      "rangeStart": "192.168.1.100",
      "rangeEnd": "192.168.1.200",
      "routes": [{"dst": "0.0.0.0/0"}],
      "gateway": "192.168.1.1"
    }
  }'
---
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
  name: custom-network-2
  namespace: default
spec:
  config: '{
    "cniVersion": "0.3.1",
    "type": "bridge",
    "bridge": "br1",
    "ipam": {
      "type": "host-local",
      "subnet": "10.10.1.0/24",
      "rangeStart": "10.10.1.100",
      "rangeEnd": "10.10.1.200",
      "routes": [{"dst": "0.0.0.0/0"}],
      "gateway": "10.10.1.1"
    }
  }'

3. Pod에 네트워크 연결

이제 Pod을 생성할 때 여러 네트워크를 연결합니다. 아래는 Pod에서 기본 네트워크와 추가 네트워크를 설정하는 예입니다.

apiVersion: v1
kind: Pod
metadata:
  name: multi-network-pod
  annotations:
    k8s.v1.cni.cncf.io/networks: '[ 
      { "name": "custom-network-1" },
      { "name": "custom-network-2" }
    ]'
spec:
  containers:
  - name: app-container
    image: nginx
    ports:
    - containerPort: 80

4. 확인

Pod이 생성되면 여러 네트워크 인터페이스가 추가된 것을 확인할 수 있습니다.

kubectl get pods multi-network-pod -o wide
kubectl exec -it multi-network-pod -- ip a

ip a 명령어를 통해 Pod에 연결된 네트워크 인터페이스와 IP 주소를 확인할 수 있습니다.

728x90