728x90
네트워크 네임스페이스
- Host Network Namespace:
- eth0 (Host NIC): 호스트 시스템의 물리적 네트워크 인터페이스로, 외부 네트워크와 통신함
- kube-proxy:
- Kubernetes 컴포넌트로, 클러스터 내의 네트워크 프록시 역할을 수행함
- iptables 또는 IPVS를 사용하여 클러스터 내의 서비스 트래픽을 적절한 Pod로 라우팅함
- cni0 (bridge): 호스트 네트워크 네임스페이스에서 사용하는 가상 브리지로, 쿠버네티스 CNI (Container Network Interface) 플러그인에 의해 생성됨. 여러 포드 네트워크 네임스페이스를 연결하는 역할을 함
- veth0 (veth): 호스트 네트워크 네임스페이스와 포드 네트워크 네임스페이스를 연결하는 가상 이더넷 인터페이스 페어의 한 쪽 끝으로, 호스트 네트워크 네임스페이스의 cni0 브리지와 연결됨
- Pod Network Namespace
- Pod A
- eth0 (veth) : Pod의 네트워크 인터페이스
- pause container : 네트워크 네임스페이스를 유지하는 용도로 사용됨
- container1, container2 : Pod A 내부의 실제 애플리케이션 컨테이너
- localhost : Pod 내부의 컨테이너 간 통신을 위해 사용됨
- Pod B
- eth0 : Pod의 네트워크 인터페이스
- pause container : 네트워크 네임스페이스를 유지하는 용도로 사용됨
- container1 : Pod B 내부의 실제 애플리케이션 컨테이너
- Pod A
Pod 간 통신하는 방법 : Pod IP 사용
컨테이너 간 네트워킹과 달리 Pod 간 통신은 Pod를 클러스터의 동일한 노드나 다른 노드에 배포하든 실제 IP를 사용하여 이루어짐
쿠버네티스를 사용하면 모든 노드에 Pod에 대한 지정된 CIDR IP 범위가 있음
이를 통해 모든 Pod가 클러스터의 다른 Pod가 볼 수 있는 고유한 IP 주소를 수신함
새 Pod가 생성되면 IP 주소가 겹치지 않음
네트워크 연결 과정
Pod A에서 Pod B로 데이터가 전송될 때의 이벤트 흐름은 다음과 같음
- Pod A 트래픽은 eth0를 통해 루트 네트워크 네임스페이스의 가상 인터페이스 veth0로 흐름
- 트래픽은 veth0를 거쳐 cni0 가상 브리지로 이동
- 트래픽은 cni0 가상 브리지를 통해 veth1로 이동
- 트래픽은 veth1을 통해 Pod 2의 eth0 인터페이스에 도달
728x90
'Kubernetes' 카테고리의 다른 글
쿠버네티스 네트워크 - 5. service ↔ external 네트워크 (0) | 2024.07.07 |
---|---|
쿠버네티스 네트워크 - 5. pod ↔ service 네트워크 (0) | 2024.07.07 |
쿠버네티스 네트워크 - 3. 쿠버네티스 pod 내부 컨테이너 네트워킹 (0) | 2024.07.07 |
쿠버네티스 네트워크 - 2. 일반 도커 컨테이너 네트워킹 (0) | 2024.07.07 |
쿠버네티스 네트워크 - 1. CNI (0) | 2024.07.07 |