1 분 소요

개요

쿠버네티스는 컨테이너화된 애플리케이션을 효율적으로 관리하기 위한 플랫폼으로, 네트워킹은 그 핵심 요소 중 하나입니다. 이번 글에서는 쿠버네티스 네트워크의 주요 개념과 구조를 살펴보겠습니다.

1. 쿠버네티스 클러스터 네트워크

쿠버네티스는 클러스터 내에서는 모든 Pod(이하 ‘파드’라고 지칭)가 서로 직접 통신할 수 있도록 설계되어 있습니다.

  • 파드 IP 할당: 각 파드는 클러스터 내에서 고유한 IP를 부여받아, NAT 없이 직접 통신할 수 있습니다.
  • CNI (Container Network Interface): 네트워크 플러그인(예: Calico, Flannel 등) 을 통해 파드 간의 네트워크 연결이 구성됩니다.
  • Flat 네트워크: 클러스터 내 모든 노드와 파드는 동일한 네트워크 평면 위에 존재하여, 서로 간의 직접적인 통신이 가능합니다.

2. 서비스 디스커버리와 로드 밸런싱

파드는 동적으로 생성되고 삭제되므로, 고정 IP에 의존한 통신이 어렵습니다. 이를 해결하기 위해 쿠버네티스에서는 서비스(Service) 객체를 사용합니다.

  • ClusterIP: 클러스터 내부에서만 접근 가능한 가상 IP를 제공합니다.
  • NodePort: 각 노드의 특정 포트를 통해 외부에서 접근할 수 있습니다.
  • LoadBalancer: 클라우드 환경에서 외부 로드밸런서를 활용하여 서비스에 접근할 수 있습니다.
  • kube-proxy: 서비스의 트래픽을 적절한 파드로 분배하기 위해 iptables 또는 IPVS를 사용합니다.

3. 외부 트래픽 관리: Ingress와 Egress

쿠버네티스에서는 클러스터 외부와의 트래픽을 효율적으로 관리할 수 있는 방법을 제공합니다.

  • Ingress: 주로 HTTP/HTTPS 트래픽을 관리하며, Nginx Ingress Controller와 같은 구현체를 사용하여 경로 기반 및 도메인 기반 라우팅을 제공합니다.
  • Egress: 파드가 클러스터 외부의 서비스(예: 데이터베이스, 외부 API)와 통신할 때, 특정 네트워크 정책을 적용하여 트래픽을 제어할 수 있습니다.

4. 네트워크 보안: Network Policy

네트워크 보안 측면에서 쿠버네티스는 NetworkPolicy를 통해 파드 간 트래픽을 세밀하게 제어할 수 있습니다.

  • 트래픽 제어: 특정 네임스페이스 또는 파드에 대해 허용하거나 차단할 규칙을 설정하여 보안을 강화합니다.
  • 유연한 정책 적용: 다양한 조건 (예: IP, 포트, 네임스페이스 등)에 따라 정책을 정의할 수 있습니다.

결론

쿠버네티스 네트워크는 클러스터 내 파드 간 통신, 서비스 디스커버리 및 로드 밸런싱, 외부 트래픽 관리, 그리고 보안 정책 등 여러 측면에서 중요한 역할을 합니다.
이 기본 개념을 잘 이해하고, 이후 Calico와 같은 CNI 플러그인을 통한 고급 네트워크 구성과 정책 적용으로 확장할 수 있는 토대를 마련할 수 있습니다.
이후 글에서는 Calico를 사용한 실제 네트워크 구성 및 정책 설정 방법에 대해 자세히 다뤄보겠습니다.

댓글남기기