Kubernetes에서의 프록시
Kubernetes에서의 프록시 (Proxies in Kubernetes)
Kubernetes에서 사용되는 다양한 프록시의 종류와 역할을 설명할게요. 어떤 프록시가 어떤 목적에 쓰이는지 옆에서 차근차근 짚어드릴게요.
프록시 (Proxies)
Kubernetes를 사용할 때 만날 수 있는 프록시는 여러 종류가 있어요.
-
kubectl proxy
- 사용자의 데스크톱이나 파드 안에서 실행됩니다.
- localhost 주소에서 Kubernetes apiserver로 프록시합니다.
- 클라이언트→프록시는 HTTP를 사용합니다.
- 프록시→apiserver는 HTTPS를 사용합니다.
- apiserver를 찾아내고 인증 헤더를 추가해요.
-
apiserver proxy
- apiserver에 내장된 배스천(bastion)이에요.
- 클러스터 외부의 사용자를, 그렇지 않으면 도달할 수 없는 클러스터 IP와 연결해줍니다.
- apiserver 프로세스 안에서 실행됩니다.
- 사용 가능한 정보를 바탕으로 프록시→대상은 HTTP나 HTTPS를 선택할 수 있어요.
- Node, Pod, Service에 도달하는 데 사용할 수 있어요.
- Service에 도달할 때는 로드 밸런싱을 수행합니다.
-
kube proxy
- 각 노드에서 실행됩니다.
- UDP, TCP, SCTP를 프록시합니다.
- HTTP를 이해하지 못합니다.
- 로드 밸런싱을 제공합니다.
- 서비스에 도달할 때만 사용됩니다.
-
apiserver 앞의 프록시/로드 밸런서
- 존재와 구현은 클러스터마다 다릅니다(예: nginx).
- 모든 클라이언트와 하나 이상의 apiserver 사이에 위치합니다.
- apiserver가 여러 개라면 로드 밸런서 역할을 합니다.
-
외부 서비스의 클라우드 로드 밸런서
- 일부 클라우드 제공자(예: AWS ELB, Google Cloud Load Balancer)가 제공합니다.
- Kubernetes 서비스의 타입이
LoadBalancer일 때 자동으로 생성됩니다. - 보통 UDP/TCP만 지원합니다.
- SCTP 지원 여부는 클라우드 제공자의 로드 밸런서 구현에 달려 있습니다.
- 구현은 클라우드 제공자마다 다릅니다.
Kubernetes 사용자는 일반적으로 처음 두 종류 외에는 신경 쓸 필요가 없어요. 클러스터 관리자는 보통 나머지 유형이 올바르게 설정되도록 보장합니다.
리다이렉트 요청 (Requesting redirects)
프록시는 리다이렉트 기능을 대체했어요. 리다이렉트는 더 이상 사용되지 않습니다(deprecated).