kube-router에 대한 생각

아래 kube-router URL입니다.

https://github.com/cloudnativelabs/kube-router

결론부터 말하자면, kube-router를 통한 성능 향상의 가능성은 높아 보입니다. 물론 실험을 해야 확실히 말할 수 있겠지요. 그러나 제가 기술한 kube-proxy의 문제점이 kube-router에서는 개선될 것으로 보입니다.

kube-router는 ipvs 기술을 이용합니다. ipvs는 LVS 에서 사용하는 기술인데요. ipvs는 kube-proxy가 사용하는 기술인 iptables보다 성능이 우수합니다. ipvs는 hashing기술을 이용하지만, iptables는 chain을 이용합니다. hashing이 chain보다 성능이 우수합니다.

그리고 확실히 중요한 성능 우위 요인은

성능의 발목을 잡았던 kube-proxy의 incoming SNAT이 ipvs에는 없습니다.

그리고 덧붙여 서비스 개수가 늘면 늘수록 iptables는 ipvs에 비해 기하급수적으로 성능 저하가 발생합니다. (hashing vs chain 논리가 여기서도 적용됩니다.) 대규모의 kubernetes cluster 서비스를 한다면, 어차피 서비스 개수가 늘어나는데, 결국 기존의 kube-proxy가 사용하는 iptables 로는 scale-out이 어렵다고 보아야 하겠습니다.

그러면, 왜 kube-proxy에 ipvs를 이용하는 코드를 넣지 않을까요? kube-proxy의 proxy mode는 현재 userspace 와 iptables 모드가 있습니다. 처음에 userspace모드만 있었는데, 성능 문제로 iptables 모드가 추가되었습니다. 이제 iptables 성능 문제로 ipvs 모드를 추가하면 될 것 같은데요. 이유는 저도 모르겠네요.

아무튼 결론을 다시 말하자면,

kube-router의 기반 기술(ipvs) 적용으로 성능 향상을 가질 수 있다고 봅니다.

It’s worth to give it a try!!!