我对k8s还是很陌生,我正在尝试组装一个内部api基础结构-这意味着它仅在k8s中可用。我希望能够以例如入口控制器的方式映射api端点。
有没有一种方法,而无需使用入口控制器或使用未在外部公开的入口控制器?
答案 0 :(得分:2)
与部署到集群的其他工作负载/服务相比,入口控制器并不是真正的特殊工作负载。将外部流量映射到群集中是因为入口控制器的Service
使用type: LoadBalancer
暴露在外部(在大多数情况下),这触发了云基础架构提供公共IP和云负载均衡器映射到群集VM(在服务公开端口上)。
没有人阻止您不将该服务类型设置为LoadBalancer
,从而有效地使您的入口控制器内部化。如果要使用自定义域名,则将需要一些DNS CNAME记录,指向您的入口控制器的群集本地服务名称,但这绝对是可能的。
请确保您选择的入口控制器是如何正确部署的。出于性能原因,有些用户使用DaemonSet
和HostPort
s,这意味着您需要格外注意防火墙的设置。
尽管如此,您应该考虑是否真的要像在内部运行真实服务那样在此处使用入口控制器,您已经拥有可以使用的稳定DNS名称。使用Ingress-Controller时,请求首先进入Ingress Controller实例(该实例可能在另一个节点上运行),然后转发给实际的目标工作负载,因此会引入额外的数据包跃点。
如果您有一组固定的工作负载,则还可以使用nginx部署来处理URL和路径的代理/重写。检查the nginx docs以获得一些示例配置。从网络的角度来看,这与入口控制器的设置并没有什么不同,并且还引入了额外的跃点。