Kubernetes에서의 프록시

Kubernetes에서의 프록시 (Proxies in Kubernetes)

Kubernetes에서 사용되는 다양한 프록시의 종류와 역할을 설명할게요. 어떤 프록시가 어떤 목적에 쓰이는지 옆에서 차근차근 짚어드릴게요.

출처: Kubernetes 공식 문서 — Proxies in Kubernetes

프록시 (Proxies)

Kubernetes를 사용할 때 만날 수 있는 프록시는 여러 종류가 있어요.

  1. kubectl proxy

    • 사용자의 데스크톱이나 파드 안에서 실행됩니다.
    • localhost 주소에서 Kubernetes apiserver로 프록시합니다.
    • 클라이언트→프록시는 HTTP를 사용합니다.
    • 프록시→apiserver는 HTTPS를 사용합니다.
    • apiserver를 찾아내고 인증 헤더를 추가해요.
  2. apiserver proxy

    • apiserver에 내장된 배스천(bastion)이에요.
    • 클러스터 외부의 사용자를, 그렇지 않으면 도달할 수 없는 클러스터 IP와 연결해줍니다.
    • apiserver 프로세스 안에서 실행됩니다.
    • 사용 가능한 정보를 바탕으로 프록시→대상은 HTTP나 HTTPS를 선택할 수 있어요.
    • Node, Pod, Service에 도달하는 데 사용할 수 있어요.
    • Service에 도달할 때는 로드 밸런싱을 수행합니다.
  3. kube proxy

    • 각 노드에서 실행됩니다.
    • UDP, TCP, SCTP를 프록시합니다.
    • HTTP를 이해하지 못합니다.
    • 로드 밸런싱을 제공합니다.
    • 서비스에 도달할 때만 사용됩니다.
  4. apiserver 앞의 프록시/로드 밸런서

    • 존재와 구현은 클러스터마다 다릅니다(예: nginx).
    • 모든 클라이언트와 하나 이상의 apiserver 사이에 위치합니다.
    • apiserver가 여러 개라면 로드 밸런서 역할을 합니다.
  5. 외부 서비스의 클라우드 로드 밸런서

    • 일부 클라우드 제공자(예: AWS ELB, Google Cloud Load Balancer)가 제공합니다.
    • Kubernetes 서비스의 타입이 LoadBalancer일 때 자동으로 생성됩니다.
    • 보통 UDP/TCP만 지원합니다.
    • SCTP 지원 여부는 클라우드 제공자의 로드 밸런서 구현에 달려 있습니다.
    • 구현은 클라우드 제공자마다 다릅니다.

Kubernetes 사용자는 일반적으로 처음 두 종류 외에는 신경 쓸 필요가 없어요. 클러스터 관리자는 보통 나머지 유형이 올바르게 설정되도록 보장합니다.

리다이렉트 요청 (Requesting redirects)

프록시는 리다이렉트 기능을 대체했어요. 리다이렉트는 더 이상 사용되지 않습니다(deprecated).

더 알아보기 (Learn more)