这不仅仅是设计问题,而是问题。我们已经在公司中部署了自己的Kubernetes基础架构,并且尝试使用入口和NGINX入口控制器从外部公开我们的服务,但是由于它不是GCP或AWS之类的云环境,因此我们不能使用服务类型“ LoadBalancer ”。我们是否应该通过服务类型“ NodePort”公开我们的入口控制器?这是用于生产环境(非云)的正常方法吗?
根据我在另一本post中所读的内容,一个合适的建议是使用NodePort,然后将另一个外部负载均衡器手动指向Kubernetes节点上的端口。
似乎通过这种机制公开入口控制器在某种程度上不是很实用或不可靠(例如,您不知道服务将分配到哪个端口,并且该端口可能会在某个时候被重新分配,等)
还有其他机制可以将入口控制器暴露给外部世界吗?
答案 0 :(得分:1)
Loadbalancer服务方法是一种实现方法,但在其背后,无非就是集群上的节点端口。
即使您使用在云提供商上创建LB的服务,LB也需要具有目标端口才能与集群通信。
当使用主要用于处理Web请求的Nginx入口时,通常将Ingress放在nodeport服务的前面。
因此,我认为使用NodePort服务是您想要做的一个好主意;)
这是我的看法,我对是否还有其他方法有兴趣。
答案 1 :(得分:0)
您可以通过服务中的nodePort指定端口。这样就不会是随机的。