728x90
pod는 동일한 호스트에 배치된 하나 이상의 컨테이너로 구성되며, 네트워크 스택 및 볼륨과 같은 리소스를 공유하도록 구성된다
“네트워크 스택 공유”는 pod의 모든 컨테이너가 localhost를 통해 서로 연결될 수 있음을 의미한다
네트워크 네임스페이스
- Host Network Namespace:
- eth0 (Host NIC): 호스트 시스템의 물리적 네트워크 인터페이스로, 외부 네트워크와 통신함
- kube-proxy:
- Kubernetes 컴포넌트로, 클러스터 내의 네트워크 프록시 역할을 수행함
- iptables 또는 IPVS를 사용하여 클러스터 내의 서비스 트래픽을 적절한 Pod로 라우팅함
- cni0 (bridge): 호스트 네트워크 네임스페이스에서 사용하는 가상 브리지로, 쿠버네티스 CNI (Container Network Interface) 플러그인에 의해 생성됨. 여러 포드 네트워크 네임스페이스를 연결하는 역할을 함
- veth0 (veth): 호스트 네트워크 네임스페이스와 포드 네트워크 네임스페이스를 연결하는 가상 이더넷 인터페이스 페어의 한 쪽 끝으로, 호스트 네트워크 네임스페이스의 cni0 브리지와 연결됨
- Pod Network Namespace
- eth0 (veth) : 포드 내 모든 컨테이너는 동일한 네트워크 네임스페이스를 공유하며, 이 네트워크 네임스페이스 내에서 eth0 인터페이스를 사용하여 통신함
- pause 컨테이너: 포드 네트워크 네임스페이스를 설정하고 유지하며, 이 네트워크 네임스페이스를 다른 컨테이너들과 공유함
- container1, container2, container3: 사용자 컨테이너들이며, 모두 pause 컨테이너가 설정한 네트워크 네임스페이스를 공유함
네트워크 연결 과정
- pod가 생성되고 함께 PAUSE 컨테이너가 생성될 때, PAUSE 컨테이너에 네트워크 인터페이스(eth0)가 생성됨
- pod가 생성되는 Node의 host network namespace에도 가상의 인터페이스(veth0)가 하나 생성되며, PAUSE 컨테이너와 직접 연결됨
- 이후 PAUSE 컨테이너는 해당 인터페이스에 새로운 IP주소도 자동으로 할당받아 갖게 됨
- k8s는 PAUSE 컨테이너가 가진 네트워크 인터페이스를 pod 내 모든 컨테이너가 사용할 수 있도록 구성함
- pod 내 모든 컨테이너는 PAUSE 컨테이너를 통해 동일한 IP를 사용하게 되며, 포트를 통해 컨테이너를 구분하게 됨
728x90
'Kubernetes' 카테고리의 다른 글
쿠버네티스 네트워크 - 5. pod ↔ service 네트워크 (0) | 2024.07.07 |
---|---|
쿠버네티스 네트워크 - 4. 노드 내의 pod ↔ pod 네트워크 (0) | 2024.07.07 |
쿠버네티스 네트워크 - 2. 일반 도커 컨테이너 네트워킹 (0) | 2024.07.07 |
쿠버네티스 네트워크 - 1. CNI (0) | 2024.07.07 |
Multi-container pod 패턴 (0) | 2024.05.07 |