[Vivek Grover Linkedin] IPTables vs IPVS in kubernetes
[tistory] Pod 네트워크 (2) : Service 내부 구현 분석 (kube-proxy와 iptables)
[tistory] [k8s] kube-porxy가 네트워크를 관리하는 3가지 모드(userspace, iptables, IPVS)
1. kube-proxy
- kube-proxy is a daemon running on each node.
- kube-proxy is a network proxy that runs on each node in your cluster, implementing part of the Kubernetes Service concept.
- kube-proxy maintains network rules on nodes.
- server Pod의 Cluster IP : 10.3.241.152
client pod > server pod 접속 시도
- client pod > 10.3.241.152(server pod의 Cluster IP) 요청
- 10.3.241.152 - 가상 IP
- veth, eth 모두 어디로 트래픽을 보내야 할 지 판단불가 > Gateway로 전달
- Gateway의 routing table에도 없음 > 트래픽 전달 실패
- server Pod의 Cluster IP : 10.3.241.152
- iptables
- rule : 10.3.241.152 > 10.0.2.2
client pod > server pod 접속 시도
- client pod > 10.3.241.152(server pod의 Cluster IP) 요청 > veth1
- iptables을 통해 10.3.241.152 > 10.0.2.2
- bridge > eth > gateway > ( 10.0.2.0 - 10.100.0.3 )
2. iptables rule을 누가 관리할 것인가? > kube-proxy
- kube-proxy는 API-server와 직접 통신
- 서비스와 엔드포인트 오브젝트의 추가, 삭제를 감시
- 서비스와 엔드포인트가 추가, 삭제가 되면 그에 따라 iptable rule을 추가, 삭제함
- kube-proxy 3가지 모드
[tistory] [k8s] kube-porxy가 네트워크를 관리하는 3가지 모드(userspace, iptables, IPVS)
3. ClusterIP 구현
4. NodePort 구현