(비공개)Calico 스터디

icurfer·2024년 9월 27일

kubernetes

목록 보기
5/5

라우팅 모드 종류

IP in IP

IP를 또 다른 IP 안에 넣어 캡슐화 수행
전송되는 패킷에는 외부헤더와 내부헤더가 있음.
외부 헤더에는 호스트 네트워크의 출발지와 목적지 IP가 들어있으며 내부 헤더에는 Pod 네트워크 출발지와 목적지 IP가 들어 있다.

Direct

캡슐화를 하지 않는, 즉 터널링을 사용하지 않는 라우팅을 의미.
Direct 모드에서는 패킷을 캡슐화하지 않고 Pod에서 바로 패킷을 보낸 것처럼 동작
이 모드에서는 캡슐화, 디캡슐화 오버헤드가 없기 때문에 성능상 이점이 있음
Direct를 사용하기 위해서는 Calico IPPool의 IP-in-IP 기능이 활성화되어 있으면 안된다.

calicoctl get ippool

Direct 모드 활성시 파드간 통신이 안되는 경우가 있다
이는 노드가 다른 subnet에 위치하는 경우, 노드에 대한 라우팅 테이블이 노드가 아니라 게이트웨이로 지정되면 이러한 현상이 발생할 수 있다.
패킷이 네트워크 게이트웨이에 도달하게 되면 게이트웨이는 해당 IP를 어디로 전달해야 할지 모르는 상황이 된다.
Direct이기 때문에 Pod IP가 그대로 게이트웨이로 전달되는데 게이트웨이는 해당 IP가 호스트 네트워크 IP가 아니기 때문에 어디로 전달할지 알 수 없다.
이럴 경우 subnet간 통신에만 IP-in-IP 기능을 활성화시키는 CrossSubnet을 기능을 사용한다.
이 기능을 사용하면 다른 Subnet으로 패키시이 라우팅 될 때에는 자동으로 IP-in-IP 모드로 동작하게 된다.
이를 통해 Subnet 안에서는 direct로 빠른 통신을 하고 subnet간 통신도 캡슐화를 활용하여 전송가능하게 할 수 있다.
다만, 이는 모든 경우에 발생하지는 않기때문에 이런 문제가 발생했을 때만 사용하자

VxLAN

Calico 3.7 이상부터 지원.
이 기능은 Calico와 Flannel을 동시에 사용하여 구현.
보통 Canal이라 불려졌었음.
VxLAN과 IP-in-IP는 네트워크 구조에 따라 선택하게 된다.
VxLAN은 가상 layer2 네트워크를 구성하기 위해 사용
그래서 일반적인 패킷보다는 조금 더 큰 헤더 사이즈를 가지게 되고 약간의 성능 저하가 발생
VxLAN은 Azure와 같이 IP-in-IP 기능이 지원되지 않는 환경이나 BGP를 지원하지 않는 환경에서 사용하기 용이
VxLAN은 Calico가 동작하는 근본적인 방법과 다르기 때문에 IPPool 설정값을 바꾸는 선에서 해결할 수는 없고 Calico를 클러스터에 새롭게 재배포해야 한다.

profile
낮에는 클라우드엔지니어, 밤에는 나홀로 개발자...

0개의 댓글