我们在kubernetes集群中有一个nignx入口,它将流量转发到cluster-ip服务。
我们认为流量将直接从运行入口的节点转到运行目标服务的pod的节点。然而,我们看到了与此相矛盾的行为(避免细节,因为它很复杂,会分散注意力)。
我们的假设是,aws-node/kube-proxy守护进程将在每个节点上设置ip表,以便直接转到正确的节点以获得cluster-ip服务。这是真的还是假的,为什么?由于某种原因,cluster-ip服务是否可能通过集群中的其他节点路由?
在花了很多时间之后,我发现了一些很好的资源:
- https://ronaknathani.com/blog/2020/07/kubernetes-nodeport-and-iptables-rules/
- https://docs.google.com/drawings/d/1MtWL8qRTs6PlnJrW4dh8135_S9e2SaawT410bJuoBPk/preview
第一个链接中的信息帮助我们跟踪IP表,从nginx-ingress-controllers到目标cluster-ip服务的目标pod。
在这种情况下,我可以确认流量直接在两个节点之间流动,而不经过任何其他节点。
我们仍然有问题,但显然它们与通过额外节点路由的流量无关。