CloudNet@ 팀의 가시다님께서 리딩하시는 KANS Study (Kubernetes Advanced Networking Study) 3주차 스터디 내용 정리
이번에는 칼리코가 제공하는 다양한 네트워크 통신 방법에 대해서 알아보겠습니다.
1. Calico 네트워크 모드
칼리코는 대표적으로 아래와 같은 4가지 네트워크 모드를 지원합니다.
1. IPIP 모드
이전글에서 다루었던 다른 노드의 파드 간 통신에서 활용된 네트워크 모드이며, 파드 IP 위에 노드의 IP 가 한 번 감싸져서 전송되는 방식입니다. (IPIP 인캡슐레이션)
다른 노드의 파드 대역은 BGP 로 전달 받아 호스트 라우팅 테이블에 업데이트 됩니다. Azure 에서는 IPIP 통신을 지원하지 않기 때문에 불가능하며 대신 VXLAN 모드를 사용합니다.
2. Direct 모드
파드 통신 패킷이 목적지 노드로 원본 패킷 그대로 전달됩니다. 인캡슐레이션이 불필요하기 때문에, IPIP 모드에 비해 성능이 좋습니다.
3. VXLAN 모드
IPIP 모드와 비슷하나 IP 로 인캡슐레이션 하지 않고 UDP 로 인캡슐레이션을 하는 차이가 있습니다.
4. Pod 패킷 암호화
wireguard vpn 을 통한 네트워크 암호화 기능을 사용합니다.
2. Direct 모드
칼리코 네트워크 모드 중 Direct 모드를 구현해보겠습니다.
AWS 상에서 Direct 모드를 구현하기 위해서는
EC2 인스턴스의 네트워킹 소스대상확인 변경 (Source/Destination Check) 기능을 비활성화 해야합니다.
2.1. IPIP 모드 비활성화
# 칼리코 IP pool 을 yaml 로 추출
calicoctl get ippool default-ipv4-ippool -o yaml
# IPIP 모드 변경 Always -> Never
calicoctl get ippool default-ipv4-ippool -o yaml | sed -e "s/ipipMode: Always/ipipMode: Never/" | calicoctl apply -f -