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 간 통신하는 방법 : Pod IP 사용

컨테이너 간 네트워킹과 달리 Pod 간 통신은 Pod를 클러스터의 동일한 노드나 다른 노드에 배포하든 실제 IP를 사용하여 이루어짐

쿠버네티스를 사용하면 모든 노드에 Pod에 대한 지정된 CIDR IP 범위가 있음

이를 통해 모든 Pod가 클러스터의 다른 Pod가 볼 수 있는 고유한 IP 주소를 수신함

새 Pod가 생성되면 IP 주소가 겹치지 않음

네트워크 연결 과정

Pod A에서 Pod B로 데이터가 전송될 때의 이벤트 흐름은 다음과 같음

  1. Pod A 트래픽은 eth0를 통해 루트 네트워크 네임스페이스의 가상 인터페이스 veth0로 흐름
  2. 트래픽은 veth0를 거쳐 cni0 가상 브리지로 이동
  3. 트래픽은 cni0 가상 브리지를 통해 veth1로 이동
  4. 트래픽은 veth1을 통해 Pod 2의 eth0 인터페이스에 도달
728x90

+ Recent posts