Kubernetes版本:1.10在Barematel 上运行
没有。主控数量:3
我们在一个Kubernetes集群中运行我们的多个微服务。目前,我们正在使用NodePort
在集群之外公开这些服务。每个微服务都有自己的NodePort,所以我们必须维护一个相应微服务的列表。由于我们在Barematel上运行,在公开微服务时,我们没有像LodeBalancer这样的功能。
问题:-由于集群内有多个主机和工作程序,因此我们必须一次为任何主机使用静态IP或DNS。如果我想从集群之外访问任何服务,我必须使用-IP_ADDRESS:NODEPORT
或DNS:NODEPORT
。一次我可以使用任何一位大师的地址。如果那个主机出故障,那么我必须用其他主机的地址更改微服务地址。我不想使用任何主机的静态IP或DNS。
在没有NodePort的情况下,我们有什么更好的方式来公开这些微服务?Baremetal上有类似LoadBalancer的功能吗?INGRESS
或Nginx
能帮助我们吗?
Baremetal有一个LoadBalancer,它被称为METALLB。Project在GitHub上可用,不幸的是,这个解决方案处于alpha状态,而且更复杂。
您也可以按照NGINX的说明,为TCP或UDP设置循环方法。
Ingress
仅支持端口80443上的http。你当然可以设置自己的入口控制器,但这将是一项大量的额外工作。
NodePort
的缺点是可用端口数量有限,从30000到32767,如果机器的IP发生更改,您的服务将无法访问。