본문 바로가기
🌴 DevOps/Docker & K8s

쿠버네티스로 외부통신하기(1/3) - ClusterIP/Kube-Proxy

by 카프리썬_ 2020. 5. 24.
728x90

Service : ClusterIP

기본적으로 클러스터 내부에서 서로 통신할 수 있는 IP를 가지고 있음

즉, 외부에서 바로 클러스터로 접근 할 수 없음

 

그렇다면, 이러한 구성자체에서 외부랑 통신할 수 있는 방법은? 

Kube-Proxy

하지만, kube-proxy가 외부로의 접근을 허용할 수 있게 한다

출처 https://medium.com/@ahmetb

각 클러스터의 노드마다 실행되고 있으면서 클러스터 내부ip로 연결하는 역할

네트워크를 관리하는 방법 : userspace / iptables / ipv3

proxy-mode 확인 : iptables(default)

 

 

1) userspace 모드

클라이언트는 서비스ip의 한테 요청을 하고,

iptables를 거쳐서 큐브프록시한테 전달,

이걸 각각 적절한 pod한테 연결(round robin방식)

출처 https://arisu1000.tistory.com/27839?category=787056

2) iptables 모드 (default)

kube-proxy가 iptable을 관리하는 역할만 함

직접 client로 부터 트래픽을 받진 않음

client로 부터 오는 요청은 iptables를 거쳐서 직접 pod로 전달 

그래서 userspace보다 빠른 성능을 가짐

userspace차이점
pod하나로 request를 보내는데 실패하면 다른pod로 연결을 재시도하지만,

ipdatables모드에서는 연결요청이 실패하면 재시도하지 않음

출처 https://arisu1000.tistory.com/27839?category=787056

3) ipvs 모드

모든 리눅스 커널에 있는 l4 로드밸런싱 기술

ipvs 커널모듈이 설치되어 있어야하

iptables보다 빠르고 좋은 성능, 더 많은 로드밸런싱 알고리즘

출처 https://arisu1000.tistory.com/27839?category=787056

SelfLinked :  /api/v1/namespaces/default/services/kubernetes

http://localhost:8080/api/v1/proxy/namespaces/services/kubernetes http:/

 

 kube-proxy로 어떻게 접근? 

프록시 시작 kubectl proxy --port =8080

이걸 실행해서 확인할 주소는?

 

 

 

https://kubernetes.io/ko/docs/tutorials/services/source-ip/

 

소스 IP 주소 이용하기

 

kubernetes.io

어떻게 접속가능한지 확인할 수 있지?

https://blog.leocat.kr/notes/2019/08/22/translation-kubernetes-nodeport-vs-loadbalancer-vs-ingress

 

[발번역] Kubernetes NodePort vs LoadBalancer vs Ingress?? 언제 무엇을 써야 할까??

최근, 누군가 NodePort와 LoadBalancer, Ingress가 무엇인지 차이를 물어 왔다. 셋 다 클러스터 내부로 외부 트래픽을 가져오는 방법이지만, 모두 다른 방법으로 구현하고 있다. 각각이 어떻게 작동하는��

blog.leocat.kr

 

반응형