这两种规范方法都不能满足您的需求。
典型的解决方案包括使用LoadBalancer服务类型或节点报告,并手动配置网络LB以指向节点报告服务的端口。
我将在这里做3个假设:
-
您没有可用的LB服务,因此要将HTTP连接到主服务器的IP。
-
您的主主机在6443之类的端口上承载kube api,或者除了80/443之外,您希望用于Web通信的任何其他端口。
-
你说的是单主人,把它用在交通上。这是一个明显的配偶,所以我想你不会那么在乎哈。
有鉴于此,您需要调整入口部署以满足您的需要。
nginx入口,在它的网络名称空间中,监听标准端口(80/443)。如果,而不是用
Service
你和他一起跑
hostNetwork: true
,您将看到入口在80/443上直接收听。要确定它正在您的主服务器上运行,您需要允许它在主服务器上调度(可能通过公差),并确保它在主服务器上调度,而不是在其他节点上调度(nodeselector/nodeaffinity或守护进程在集群中的每个节点上运行它)。
另一个解决方案可以是按照规范的方式,让入口监听一些节点报告,然后让另一个软件作为负载均衡器,通过kube部署到master。(
hostNetwork
)或者通过完全自主的机制(即作为SystemD服务单元),监听80/443和TCP将流量转发到节点报告。