kube-proxy 역할

574 단어·2 분·원문(.md)

kube-proxy는 쿠버네티스 클러스터의 각 노드에서 실행되는 네트워크 프록시 컴포넌트로 Service가 제공하는 가상 IP(Cluster IP)를 실제 Pod들로 라우팅되도록 네트워크 규칙을 관리하는 역할을 한다.

즉, Service와 Pod를 연결해주는 네트워크 관리자.

1. Service -> Pod Routing #

Service가 가진 ClusterIP로 들어온 요청을 실제 Pod IP로 전달하는 필수 네트워크 규칙을 만듦

  1. iptables mode
  2. ipvs mode

위 두 방식중에 하나로 라우팅 규칙을 생성함.

Pod Endpoint 변화 감지 및 규칙 자동 업데이트 #

새로운 파드가 생기면 라우팅 대상에 추가하고 죽으면 바로 라우팅 대상에서 제거한다.

Ready상태가 아니면 트래픽 전달 대상에서 제외한다.

즉, kube-proxy는 Service 뒤에 있는 Pod List를 최신 상태로 유지하는 역할도 진행한다.

NodePort 구현 #

NodePort Service는 모든 노드의 특정 포트를 개방한다.

kube-proxy가 이포트를 열고 그 포트로 들어온 요청을 적절한 pod로 보내주는 역할도 한다.

Load Balancing #

여러 파드가 뒤에 있을때 트래픽을 골고루 분산한다.

  • 라운드 로빈 ipvs
  • 랜덤 iptables
  • session 기반 옵션 ipvs

즉 kube-proxy가 존재하지 않는다면 Service는 ip만 잇는 껍데기가 되고 트래픽을 파드에 전달할 수 없게 된다.

kube-proxy = Service를 실제 Pod에 연결해주는 네트워크 라우팅 담당자
정의: 노드 단위 네트워크 프록시 핵심 역할:

  • Service 가상 IP → Pod 실제 IP 라우팅
  • 엔드포인트(Pod) 변화에 따라 규칙 갱신
  • NodePort 처리
  • 트래픽 로드밸런싱
SRE/question/q_2.md