본문 바로가기
INFRA/DevOps

[k8s] Kube-proxy

by BTC_비웃는사나이 2022. 12. 12.

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

댓글