Kube Proxy
Num cluster Kubernetes, todos os pods têm acesso a todos os outros pods. Para viabilizar essa conectividade, uma solução de rede é implantada no cluster Kubernetes, estabelecendo uma rede virtual interna. Mais adiante, exploraremos as diversas opções disponíveis para essa finalidade.
É importante ressaltar que não há garantia de que o IP de um pod será sempre o mesmo, pois ele pode falhar e ser recriado pelo replication controller com um IP diferente. Por essa razão, referenciamos os pods através de services usando nomes, os quais resolvem os IPs correspondentes. É para isso que os services e seus endpoints existem, sendo gerenciados pelo kube-proxy.
Um service não se vincula diretamente a um pod, pois é uma entidade virtual que não possui interfaces ou um processo de escuta ativa. O service existe exclusivamente na memória do Kubernetes. O kube-proxy monitora a criação de novos services e, sempre que um novo service é criado, ele configura as regras apropriadas em cada nó para encaminhar o tráfego para as portas corretas dos pods. Isso é realizado através do uso do iptables
ou do ipvs
.
O kube-proxy roda em cada node como um serviço ou como pod, mas depende da instalação.
Observe que rodando como pod o controller é um daemon set que garante um kube-proxy por node.