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 - [리뷰/도서] - [도서]쿠버네티스 입문
'Cloud-native > Kubernetes' 카테고리의 다른 글
[Kubernetes]How to use Label and Selector - Example (0) | 2022.06.05 |
---|---|
[Kubernetes]How to use Label and Selector - Concept (0) | 2022.06.05 |
[Kubernetes]What is Pause Container(Infra Container) (0) | 2022.06.03 |
[Kubernetes]What are Label and Annotation in Kubernetes (0) | 2022.06.01 |
[Kubernetes]Install EFK for Kubernetes logging with helm chart in Kubernetes (0) | 2022.05.28 |