我已经在裸机主机上的每个节点上设置了三个节点集群(1个主节点,2个工人)。为了让流量进入集群,我使用了NGINX Ingress控制器,该控制器是通过稳定/ ngix-controller头盔子图安装的。由于我没有使用任何负载均衡器,因此将 externalIPs 字段设置为主节点IP,并将 externalTrafficPolicy 设置为 Local 。>
我的入口对象有3个主机域,每个域都设置为特定服务。这些域已添加到我的计算机/ etc / hosts中,指向masterIP。
如果Pod和入口控制器都未在主服务器上运行,发往给定域的流量如何到达正确的节点和后续Pod?不应如此处Ingress controller NodePort service
所述丢弃数据包提前谢谢!! 干杯!
----编辑----
nginx-ingress:
controller:
config:
hsts: "true"
scope:
namespace: ingress-nginx
service:
externalIPs:
- "10.X.X.X"
externalTrafficPolicy: Local
答案 0 :(得分:0)
如果将externalIp设置为节点之一,则可以毫无问题地使用nginx入口。这是因为nginx将绑定到节点上的端口80,就像您说的那样,主节点中将没有pod。
答案 1 :(得分:0)
允许节点之间通信的机制是kube-proxy。并且该文档具有以下内容:
kube-proxy
kube-proxy是一个网络代理,它在群集中的每个node上运行,实现了Kubernetes Service概念的一部分。
kube-proxy维护节点上的网络规则。这些网络规则允许从群集内部或外部的网络会话与Pod进行网络通信。
kube-proxy使用操作系统数据包筛选层(如果有)并且可用。否则,kube-proxy会转发流量本身。
当ingress-nginx
服务使用NodePort
服务类型时,它将在每个节点上公开。
希望有帮助。