[네떡스터디🔥kans] Calico CNI 알아보기 - VxLAN 모드

 

CloudNet@ 가시다님이 진행하는 쿠버네티스 네트워크 스터디 KANS 3기 내용을 정리한 글입니다.

 

이제는 Calico에서 지원하는 다른 네트워크 오버레이 모드인 VxLAN에 대해서 알아보고자 합니다. 

 

VxLAN 이란

IPIP(IP-in-IP)는 IP 패킷을 또 다른 IP 패킷 안에 캡슐화하여 전달하는 오버레이 네트워크 프로토콜 중 하나입니다. 기존 IP 패킷에 새로운 IP 헤더를 추가하여 캡슐화하는 방식으로, 단순한 구조 덕분에 오버헤드가 적습니다. 다만, 노드 수가 많아질 경우 네트워크 경로 관리가 복잡해질 수 있습니다. 또한, Layer 2 브로드캐스트 트래픽을 지원하지 않지만, 쿠버네티스에서는 파드들이 IP 기반으로 통신하므로 이는 크게 문제되지 않습니다.

 

vxlan 모드 간단 설명

 

VxLAN모드 설치하기

calico 설치 파일 다운받기 

calico의 최신 버전 확인하기

CALICO_LATEST=$( curl --silent "https://api.github.com/repos/projectcalico/calico/releases/latest" | jq '.tag_name' -r )

 

오퍼레이터가 없는 구조의 설치 방식으로 calico에서 제공하는 vxlan설치 파일입니다.

curl https://raw.githubusercontent.com/projectcalico/calico/$CALICO_LATEST/manifests/calico-vxlan.yaml -O

 

calico 설치 전 crd만 먼저 설치 하고 싶다면 다음의 명령어를 수행하면 됩니다.

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/refs/tags/$CALICO_LATEST/manifests/crds.yaml

 

현재 최신 버전은 v3.28.1 입니다.

 

테스트 시 사용한 버전

calico.yaml 파일에 damonset의 calico-node에 환경변수로 CALICO_IPV4POOL_BLOCK_SIZE를 24로 설정해서 사용했습니다. 

            # Block size to use for the IPv4 POOL created at startup. Block size for IPv4 should be in the range 20-32. default 24
            - name: CALICO_IPV4POOL_BLOCK_SIZE
              value: "24"

 

VxLAN모드 뜯어보기

테스트 환경 정보

라우팅 경로 확인하기

 

같은 노드 내 파드 간 통신 흐름

 

다른 노드 간 파드 통신 흐름

 

파드와 외부 인터넷 간 통신 흐름

 

서비스 객체를 통한 통신 흐름