kube-proxy는 쿠버네티스의 네트워킹 컴포넌트로, 클러스터 내에서 파드(pod)와 서비스(service) 간의 네트워크 통신을 관리한다.
각 노드에서 실행되며, 쿠버네티스 서비스가 정의한 네트워크 규칙(iptables)을 적용하여 트래픽 라우팅과 로드 밸런싱을 처리합니다
주요 역할
- 서비스 구현: kube-proxy는 쿠버네티스의 서비스(Service) 리소스를 구현하여, 외부 및 내부 트래픽이 적절한 파드로 전달되도록 설정한다.
- 트래픽 라우팅: 서비스의 클러스터 IP를 통해 들어오는 트래픽을 관련 파드로 전달한다.
- 로드 밸런싱: 여러 파드가 서비스에 연결된 경우, 트래픽을 해당 파드로 라운드 로빈 방식으로 분산하여 처리한다.
- 네트워크 규칙 관리: 클러스터 내에서 트래픽 흐름을 제어하기 위해 iptables 또는 IPVS(Linux Virtual Server) 규칙을 생성한다.
동작 원리
- 서비스와 엔드포인트 감시:
- kube-proxy는 쿠버네티스 API 서버로부터 서비스와 엔드포인트 정보를 지속적으로 감시(watch)한다.
- 서비스에 연결된 파드(엔드포인트)가 변경되면 이를 즉시 반영한다.
- 네트워크 규칙 생성:
- 서비스에 대한 네트워크 규칙을 생성하고 업데이트하여, 트래픽이 올바른 파드로 전달되도록 한다.
- 규칙은 iptables, IPVS, 또는 사용자 정의 프록시 메커니즘을 통해 적용된다.
- 트래픽 전달:
- 외부 또는 내부 클라이언트로부터 서비스 IP로 들어오는 요청을 적절한 파드로 전달한다.
주요 기능
- 클러스터 IP 지원: 서비스가 클러스터 내부에서 사용되는 클러스터 IP를 통해 접근 가능하도록 설정
- NodePort 지원: 외부 트래픽을 노드의 특정 포트(NodePort)로 전달하여 파드로 접근 가능하게 함.
- External IP 지원: 클러스터 외부에서 서비스에 접근할 수 있는 IP를 제공.
- LoadBalancer 지원: 클라우드 제공자의 로드 밸런서를 설정하여 외부 트래픽을 자동으로 처리.
- Ingress 지원: HTTP/HTTPS 트래픽 라우팅을 위한 Ingress 컨트롤러와 함께 작동.
kube-proxy와 CNI의 차이
- kube-proxy:
- 서비스와 파드 간의 트래픽을 라우팅하고 로드 밸런싱을 수행
- 주로 서비스에 관련된 네트워크 트래픽을 관리
- CNI (Container Network Interface):
- 쿠버네티스 클러스터 내의 전체 네트워크를 구성 및 관리
- 파드의 IP 할당, 네트워크 정책 적용, 네트워크 플러그인 제공
+ kube-proxy는 daemonset 기반으로 돌아간다.
$ kubectl get daemonset -n kube-system
반응형
'Container > Kubernetes' 카테고리의 다른 글
[K8S] Endpoints (0) | 2025.01.02 |
---|---|
[K8S] Deployment (0) | 2024.12.31 |
[K8S] Kube-controller-manager (0) | 2024.12.24 |
[K8S] Kube-API Server (0) | 2024.12.24 |
[K8S] ETCD (1) | 2024.12.24 |