ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kubernetes Network 구성
    Kubernetes 2025. 3. 25. 01:18
    728x90

    Kubernetes는 다음과 같은 네트워크 요구 사항을 기본 가정으로 합니다:

    1. 모든 Pod는 클러스터 내 다른 Pod와 통신 가능해야 한다.
    2. 노드에서 실행 중인 모든 Pod는 동일한 IP 주소 체계를 공유해야 한다.
    3. NAT 없이 Pod 간 직접 통신이 가능해야 한다.

    이러한 요구사항을 충족시키기 위해 Kubernetes는 CNI 플러그인, Service IP, kube-proxy, Network Policy 등을 이용합니다.

     

    주요 구성 요소

    1. CNI 플러그인

    • Pod 간 통신을 위한 네트워크 인터페이스를 설정
    • Pod에 IP를 할당하고 라우팅 설정을 적용
    • 예시: Calico, Flannel, Cilium, Weave

     

    2. kube-proxy

    • Service 리소스의 가상 IP로 요청이 들어오면 실제 Pod IP로 라우팅되도록 설정
    • 내부적으로 iptables 또는 IPVS를 사용해 라우팅 테이블을 구성

    모드 종류

    모드 설명
    iptables 모드 iptables 규칙을 사용해 패킷을 Pod로 전달
    ipvs 모드 Linux IPVS를 사용해 더 효율적이고 고성능의 로드밸런싱 제공

     

    iptables vs IPVS

    항목 iptables IPVS
    구조 규칙 기반 순차적 검사 커널 내 해시 테이블 기반
    성능 규칙 수 많아지면 성능 저하 높은 성능 유지
    관리 단순함 약간 복잡 (의존 모듈 필요)
    사용 시기 소규모 클러스터나 단순 구성 대규모 트래픽 처리, 고성능 요구 시

    예시

    • iptables 모드에서 특정 ClusterIP에 요청 시:
    iptables -t nat -L -n | grep <ClusterIP>

     

    → 해당 ClusterIP로 오는 요청을 실제 Pod IP로 DNAT 설정

    • ipvs 모드에서는:
    ipvsadm -Ln

    → Service IP가 Virtual Server로 설정되고, 그 뒤에 여러 Real Server(Pod IP)가 붙음

     

    외부와의 통신

    • NodePort, LoadBalancer, Ingress Controller 등을 통해 외부 요청을 Cluster 내부로 전달
    • 클러스터 외부에서 Pod에 직접 접근하지 않고, kube-proxy를 통해 요청 분배

     

    네트워크 정책

    • Pod 간 통신을 제어하기 위해 NetworkPolicy 사용
    • 대부분의 CNI 플러그인이 이를 지원하며, 세부적인 보안 정책을 정의 가능

     

    요약

     

    항목 설명
    CNI 플러그인 Pod 네트워크 설정 및 IP 할당
    kube-proxy 서비스 요청을 Pod로 전달 (iptables or IPVS 이용)
    iptables 순차적인 방화벽/라우팅 규칙으로 트래픽 처리
    IPVS 커널 기반 고성능 로드밸런싱
    NetworkPolicy 보안 제어, 허용된 통신만 가능하게 제한
    728x90
Designed by Tistory.