개요
k8s의 네트워크 종류에 대하여 살펴 보겠습니다.
네트워크 종류
1. node network
master node와 worker node간의 물리적으로 구성된 network를 말합니다.
2. pod network
Pod간의 network를 말하며, Pod간의 network는 CNI를 통하여 구현됩니다.
CNI의 역활은 pod가 생성/삭제 될 때 마다 IP를 할당 및 제거하는 것입니다.
3. cluster network
k8s에서 제공하는 service들을 통해서 이루어지는 network를 말합니다.
k8s에서의 network 통신
1. Pod 내부에서의 통신
Pod에는 한개의 IP만 할당이 됩니다. 그렇게 때문에 Pod내부의 container간 통신은 localhost를 사용하여 통신을 합니다
그래서 Pod에 contianer를 여러개 올릴때 port가 겹치면 안됩니다.
2. Node 내부의 Pod간의 통신
node 내부에서의 pod간 통신은 bridge 를 통해서 이루어집니다.
상세한 구현 방법은 [k8s] 1. 네트워크 구현 방식 을 통해서 확인이 가능합니다.
3. 개별 Node의 Pod간의 통신
Overlay network를 통해서 마치 같은 network에 있는 것처럼 통신을 합니다.
그리고 Overlay network를 실제로 구현한것이 CNI라고 보면 됩니다.
CNI(Container Network Interface)란?
Pod가 생성, 삭제될 때 호출되는 API의 규격과 인터페이스를 정의 한 것입니다.
k8s에서는 CNI 스펙만 주고 network에 관여하지 않습니다. 그래서 수많은 CNI plugin이 존재하는 것입니다.
1. CNI 스펙 문서
https://github.com/containernetworking/cni/blob/main/SPEC.md
2. CNI 종류
https://github.com/containernetworking/cni
3. CNI plug-in 기본 동작 방식
1) k8s API는 kubelet를 이용하여 CNI plug-in을 배포 합니다.
2) Pod network namespace를 생성
3) veth를 생성하여 Pod network Name Space와 Host Network Name Space를 연결
4) Pod Network Name Space에 할당된 veth0에 IP를 할당 하고 default route 설정
5) Host Network Name Space에 Pod Network Name Space로 갈수 있는 route 추가
4. CNI-Flannel
간단하고 오래된 CNI 입니다.
VXLAN을 사용하여 개별 Node의 Pod간의 통신을 지원 합니다.
Flannel 동작 큰 그림,
Flannel 구현 및 상세 동작은 다음에 알아보겠습니다.
참조 영상
'Cloud > k8s' 카테고리의 다른 글
[급한 k8s] 4. 외부 서비스 (0) | 2023.01.01 |
---|---|
[k8s] k8s 관련 지식 (0) | 2022.11.26 |
[k8s] 1. 네트워크 구현 방식 (0) | 2022.11.19 |
[급한 k8s] 2. k8s 설치 (0) | 2022.11.12 |
[kubernetes] cheat sheet (0) | 2022.10.14 |