CNI - Weave (2)

Yu Sang Min·2025년 6월 26일

CKA

목록 보기
80/110

🚀 Weave CNI 동작 원리 완벽 정리


🧠 핵심 개념

  • Weave는 분산 네트워크 오버레이 솔루션
  • 각 노드에 에이전트(Weave Peer)를 설치 → 서로 통신하여 전체 클러스터의 Pod 네트워크 상태를 동기화
  • Pod 간 통신을 위해 VXLAN 기반 터널링 + 캡슐화(Encapsulation) 사용

🔗 Weave 네트워크 동작 구조

✅ 1. Bridge 생성

  • 각 노드에 weave라는 브릿지 네트워크 생성
  • 이 브릿지는 Docker의 docker0와는 별개

✅ 2. IP 주소 할당

  • Weave는 자체적으로 IPAM을 통해 Pod에 IP 할당
  • 클러스터 전체에 대해 하나의 Flat 네트워크처럼 동작
    → 예시: 10.32.0.0/12

✅ 3. 패킷 라우팅 흐름

▶️ 동일 노드 간 통신

  • 단순히 브릿지를 통해 직접 통신
  • Overlay 터널 필요 없음

▶️ 다른 노드 간 통신

  • Weave Agent가 패킷 캡슐화
  • 원래 패킷을 UDP 패킷으로 감싸고 대상 노드의 Weave Peer로 전달
  • 대상 노드에서 패킷을 디캡슐화하고 목적 Pod로 전달

📦 아키텍처 비유

회사 = Kubernetes Cluster
각 지점 = Node
각 부서 = Pod Network
택배 직원 = Weave Peer Agent

  • 지점 간 택배는 본사 자체 직원이 처리하기 어렵다.
    → **전문 택배 회사(Weave)**가 중간에 개입

  • 택배 회사는 각 지점에 **상주 직원(Weave DaemonSet)**을 두고,
    서로 실시간으로 지점 주소록(Pod IP) 공유

  • 패킷은 택배 박스처럼 캡슐화해서 전달됨 → 대상 도착 시 언패킹 후 전달


🔧 Weave 설치 방법

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
  • 설치 시 kube-system 네임스페이스에 weave-net-* DaemonSet 생성
  • 각 노드에 자동으로 Weave Pod 배포

🛠️ Weave 구성 요소

컴포넌트설명
weave-net Pod각 Node에 하나씩 배포되는 DaemonSet
weave 브릿지Node 내부의 Linux Bridge
VXLAN 터널Node 간 Overlay Tunnel
IPAMWeave가 자체적으로 IP 관리

🔍 트러블슈팅 팁

  • 상태 확인:
kubectl get pod -n kube-system -l name=weave-net -o wide
  • 로그 확인:
kubectl logs -n kube-system -l name=weave-net
  • 네트워크 문제시 → 노드 간 UDP 포트 6783 / 6784 열려 있어야 함

🚩 장점 vs 단점

장점단점
간단한 설치, 자동 IP 관리대규모 환경에서 VXLAN 터널 오버헤드 존재
노드 간 복잡한 라우팅 없이 자동으로 통신 설정하드웨어 네이티브 라우팅 성능보다 낮음
암호화 지원L3 기반 라우팅 솔루션(Calico)에 비해 낮음

🔥 Weave CNI를 이해했다면?

→ Cilium, Calico, Flannel 등 다른 CNI와의 차이도 직관적으로 이해 가능
→ 특히 Cilium의 eBPF 기반 처리나 Calico의 BGP 기반 처리 방식과 비교 시 강력한 인사이트 제공

profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글