Kubernetes/Kubernetes Advanced

📌 [DaemonSet 심화편 #17] DaemonSet과 Multus를 활용한 멀티 네트워크 구성

ygtoken 2025. 3. 22. 20:53
728x90

1️⃣ 개요

기본적으로 Kubernetes Pod은 하나의 기본 네트워크(CNI)를 통해 통신합니다. 하지만,
멀티 네트워크가 필요한 경우에는 Multus CNI를 사용해 Pod에 여러 개의 네트워크 인터페이스를 부여할 수 있습니다.

이 글에서는 DaemonSet에 Multus를 적용하여 노드마다 멀티 네트워크가 연결된 Pod를 실행하는 방법을 설명합니다.


2️⃣ Multus란?

항목 설명
역할 Kubernetes CNI 플러그인으로, Pod에 여러 개의 네트워크 인터페이스 부여 가능
용도 데이터/관리 네트워크 분리, SR-IOV, DPDK 환경, 이중화 등
주요 기능 기본 네트워크 외의 추가 네트워크 (Secondary Network) 연결 지원

✅ Multus는 **다양한 네트워크 플러그인(CNI)**과 함께 사용할 수 있으며, 각 Pod에 맞춤 네트워크 구성을 제공할 수 있습니다.


3️⃣ 네트워크 정의: NetworkAttachmentDefinition 생성

Multus를 활용하려면 먼저 **추가 네트워크 정의(NetworkAttachmentDefinition, NAD)**가 필요합니다.

apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: custom-bridge-net
  namespace: default
spec:
  config: |
    {
      "cniVersion": "0.3.1",
      "type": "bridge",
      "bridge": "br0",
      "ipam": {
        "type": "static",
        "addresses": [
          {
            "address": "192.168.100.10/24",
            "gateway": "192.168.100.1"
          }
        ]
      }
    }

📌 설명

  • 이 네트워크는 br0라는 브리지를 통해 Pod에 추가 인터페이스를 부여합니다.
  • IP는 static 방식이며, 다수의 Pod가 사용할 경우 이 설정은 동적으로 생성되어야 합니다.

4️⃣ DaemonSet에 Multus 적용 예시

Multus 네트워크를 Pod에 적용하려면 annotations를 설정해야 합니다.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: multus-agent
spec:
  selector:
    matchLabels:
      app: multus-agent
  template:
    metadata:
      labels:
        app: multus-agent
      annotations:
        k8s.v1.cni.cncf.io/networks: custom-bridge-net  # Multus 네트워크 연결 지정
    spec:
      containers:
        - name: multus-agent
          image: busybox
          command: ["sh", "-c", "ip a && sleep 3600"]

📌 설명

  • annotations를 통해 custom-bridge-net NAD에 연결합니다.
  • Pod 내부에서는 eth0(기본 인터페이스) 외에 net1 등의 이름으로 추가 인터페이스가 생성됩니다.

5️⃣ Multus 적용 후 네트워크 확인

kubectl exec -it <pod-name> -- ip a

출력 예시:

1: lo: ...
2: eth0: ...  # 기본 CNI
3: net1: ...  # Multus로 연결된 추가 인터페이스

✅ 멀티 네트워크가 정상적으로 붙었다면 net1 인터페이스가 표시됩니다.


6️⃣ 운영 시 고려사항

항목 설명
NAD는 네임스페이스별로 생성됨 DaemonSet이 배포되는 네임스페이스와 NAD의 네임스페이스가 일치해야 함
IP 중복 방지 Static IP 할당 시 자동화 또는 DHCP 고려
privileged 모드 필요 여부 SR-IOV, DPDK 같은 고성능 NIC를 사용하는 경우 Privileged 권한 필요
네트워크 보안 정책 네트워크 간 트래픽 분리를 위해 NetworkPolicy와 함께 사용 가능

🔥 7️⃣ 결론

Multus를 사용하면 DaemonSet Pod에 여러 개의 네트워크를 부여할 수 있어 다양한 네트워크 구조를 지원할 수 있습니다.
NetworkAttachmentDefinition을 먼저 정의하고, 해당 네트워크를 Pod의 annotation에 지정하는 방식으로 구성합니다.
로그 수집, 트래픽 감시, 고속 NIC 사용 등의 시나리오에 유용하며, 보안과 자원 할당에 대한 추가 고려가 필요합니다.

728x90