일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- producer
- consumer
- Entity
- offsetdatetime
- Streams
- mysql
- spring
- Kotlin
- AWS
- CodePipeline
- API
- ECS
- bean
- Spring Data JPA
- Kubernetes
- PAGING
- centos7
- kafka
- JPA
- transactionaleventlistener
- QueryDSL
- K8s
- topic생성
- git
- Spring JPA
- cd
- spring kafka
- entity graph
- CI
- mirror maker2
- Today
- Total
Yebali
Kubernetes의 kube-proxy 본문
kube-proxy은 Kubernetes에서 Service를 만들었을 때 Service의 가상 IP, Port를 관리하고 ClusterIP나 NodePort로 접근할 수 있게 하는 컴포넌트이다.
kube-proxy는 DeamonSet이 Control Plane과 각 Node마다 실행되며 클러스터 내부 IP로 연결하려는 트래픽을 적절한 Pod로 전달한다.
kube-proxy가 네트워크를 관리하는 방법은 아래 3가지가 있다.
userspace 모드
클라이언트가 Service의 ClusterIP를 통해 요청을 하면 iptables을 거쳐 kube-proxy가 요청을 받는다.
그리고 Service의 ClusterIP에 연결되어야하는 적절한 Pod로 요청을 매핑한다.
요청을 분배하는 방식은 라운드 로빈 방식을 사용한다.
Pod로의 요청이 실패하면 kube-proxy가 자동으로 다른 Pod에 재시도한다.
iptables 모드
userspace 모드와 다른 점은 kube-proxy가 iptables을 관리하는 역할만 한다는 것이다.
클라이언트에서 오는 모든 요청은 iptables을 거쳐 Pod로 직접 전달한다.
Pod로의 요청이 실패하더라도 다른 Pod로 요청을 재시도하지 않는다.
그렇기 때문에 Container에 readnessProbe healthcheck가 정상이어야 연결 요청이 이루어진다.
IPVS(IP Virtual Server) 모드
IPVS 모드는 리눅스 커널에 있는 L4 로드밸런싱 기술이다. (해당 모드를 사용하기 위해서는 Node에 IPVS가 설치되어 있어야 한다.)
커널 스페이스(kernel space)에서 동작하고 데이터 구조를 해시테이블 형태로 저장하기 때문에 iptables 모드보다 좋은 성능을 낸다.
'Backend Common' 카테고리의 다른 글
Kubernetes의 ConfigMap (0) | 2024.03.16 |
---|---|
Kubernetes의 Ingress (0) | 2024.03.16 |
Kubernetes의 Service (0) | 2024.03.03 |
Kubernetes의 Job, CronJob (0) | 2024.03.03 |
Kubernetes의 Pod와 Controller (0) | 2024.03.03 |