새소식

Cloud-native/Kubernetes

[Kubernetes]What is kube-proxy (userspace, iptables, IPVS)

  • -

Concept

  • 쿠버네티스에서 서비스를 만들었을 때 클러스터 IP나 노드 포트로 접근할 수 있게 만들어 실제 조작을 하는 컴포넌트
  • 쿠버네티스 클러스터의 노드마다 실행되면서 클러스터 내부 IP로 연결하려는 요청을 적절한 파드로 전달한다.

kube-proxy의 네트워크 관리 방법

  • userspace, iptables, IPVS
  • 초기 → userspace
  • 현재 → iptables
  • 앞으로의 예상 → IPVS

userspace

  • 클라이언트 요청 → 서비스의 클러스터 IP → iptables → kube-proxy
  • 그리고 서비스의 클러스터 IP는 연결되어야 하는 적절한 파드(애플리케이션)로 연결해준다.
  • 이때, 요청은 RR 방식으로 분배.
  • 파드 하나로의 연결 요청이 실패하면 자동으로 다른 파드에 연결을 재시도.

iptables

  • userspace모드와 다른 점은 kube-proxy가 iptables 를 관리하는 역할만 한다는 것이다.
  • 직접 클라이언트에서 트래픽을 받지 않는다.
  • 클라이언트에서 오는 모든 요청은 iptables을 거쳐서 파드(애플리케이션)로 직접 전달된다.
  • 파드 하나로의 연결 요청이 실패하면 재시도하지 않고 그냥 요청이 실패한다.
  • 컨테이너에 readinessProbe가 설정되었고 그에 따른 Health Check가 정상적으로 되어야 연결 요청이 이루어진다.

IPVS

  • 리눅스 커널에 있는 L4 로드밸런싱 기술
  • 리눅스 커널 안 네트워크 관련 프레임워크인 넷필터에 포함되어 있다. 따라서 IPVS 커널 모듈이 노드에 설치되어야 한다.
  • IPVS 모드는 커널 공간(장치 드라이버 대부분을 실행하는 공간)에서 동작하고 데이터 구조를 해시 테이블로 저장하기 때문에 iptables 모드보다 빠르고 좋은 성능을 낸다.
  • 또한 다른 로드밸런싱 알고리즘도 이용할 수 있다.

kubernetes kube-proxy doc
https://kubernetes.io/docs/concepts/overview/components/#kube-proxy https://kubernetes.io/ko/docs/reference/command-line-tools-reference/kube-proxy/

2022.05.01 - [리뷰/도서] - [도서]쿠버네티스 입문
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.