Kube-proxy란?
- K8s service의 backend를 구현
- Endpoint 연결을 위한 iptables 구성
- worker node에서 확인 가능
iptables -t nat -S | grep 80
-A KUBE-MARK-DROP -j MARK --set-xmark 0x8000/0x8000
-A KUBE-SEP-HHZALBXPKUQGKXIS -p tcp -m comment --comment "default/clusterip-service" -m tcp -j DNAT --to-destination 192.168.11.73:80
-A KUBE-SEP-KTW4ECSLTAZBS6DP -p tcp -m comment --comment "default/clusterip-service" -m tcp -j DNAT --to-destination 192.168.221.10:80
-A KUBE-SEP-ZLBN6JBW2CKLO4TA -p tcp -m comment --comment "default/clusterip-service" -m tcp -j DNAT --to-destination 192.168.11.74:80
-A KUBE-SERVICES -d 10.100.100.100/32 -p tcp -m comment --comment "default/clusterip-service cluster IP" -m tcp --dport 80 -j KUBE-SVC-KUSV3H3OUX7H3MDQ
-A KUBE-SVC-KUSV3H3OUX7H3MDQ -m comment --comment "default/clusterip-service -> 192.168.11.73:80" -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-HHZALBXPKUQGKXIS
-A KUBE-SVC-KUSV3H3OUX7H3MDQ -m comment --comment "default/clusterip-service -> 192.168.11.74:80" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-ZLBN6JBW2CKLO4TA
-A KUBE-SVC-KUSV3H3OUX7H3MDQ -m comment --comment "default/clusterip-service -> 192.168.221.10:80" -j KUBE-SEP-KTW4ECSLTAZBS6DP
- Nodeport로의 접근과 pod연결을 구현 (iptables 구성)
- kubectl get pods --all-namespaces로 확인 가능
kubectl get pods --all-namespaces
kube-system kube-proxy-7k8bd 1/1 Running 2 (58m ago) 42h
kube-system kube-proxy-hnl4w 1/1 Running 2 (59m ago) 42h
kube-system kube-proxy-kwpwk 1/1 Running 2 (59m ago) 42h
kube-system kube-proxy-t2phw 1/1 Running 0 41h
<이미지 출처 : [따배쿠] 7-3. 쿠버네티스 Headless Service와 Kube Proxy 강좌 >
Kube-proxy mode
- userspace
- 클라이언트의 서비스 요청을 iptables를 거쳐 kube-proxy가 받아서 연결
- kubernetes 초기 버전에 잠깐 사용
- iptables
- default kubernetes network mode
- kube-proxy는 service API 요청 시 iptables rule이 생성
- 클라이언트 연결은 kube-proxy가 받아서 iptables rule을 통해 연결
- IPVS
- Linux kernel이 지원하는 L4 로드밸런싱 기술을 이용
- 별도의 ipvs 지원 모듈을 설정한 후 적용 가능
- 지원 알고리즘 : rr(round-robin), lc(least connection), dh(destination hashing), sh(source hashing), sed(shortest expected delay), nc(new queue)
참고 : https://www.youtube.com/watch?v=ilQSgu8qt0o&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=27
'INFRA > DevOps' 카테고리의 다른 글
Devops란 무엇인가? (0) | 2022.12.19 |
---|---|
[K8s] Ingress 개념 및 Ingress Controller 설치, 활용 (0) | 2022.12.19 |
GitOps와 ArgoCD란? (0) | 2022.12.11 |
Amazon GameLift 란? (0) | 2022.12.11 |
http status code (0) | 2022.12.10 |
댓글