具有hostNetwork绑定的Kubernetes LoadBalancer服务

时间:2019-07-16 16:38:23

标签: kubernetes kubernetes-service

我对主机网络上LoadBalancer服务的使用情况有疑问

如果将hostNetwork:设置为true,则Pod绑定在外部服务连接到的主机网络上。如果我们只需要运行Pod的一个实例,那么我相信我们不需要LoadBalancer服务来将外部服务连接到Pod。我在这里看不到LoadBalancer服务的任何用例,或者我缺少任何用例吗?

1 个答案:

答案 0 :(得分:0)

不建议使用

hostNetwork = true来将集群暴露在集群外部。它有一些限制:

  1. 只有一个Pod实例可以在同一端口上的特定节点上运行
  2. 您必须使用nodeIP来访问Pod,但是,节点IP可能会更改。
  3. 如果pod发生故障,则k8s调度程序可能会在另一个节点上生成它。

建议的将Pod暴露在集群外部的方法是通过Kubernetes Service Controllers。 无论Service.spec.type属性如何,所有服务控制器都将充当负载平衡器(它们将平衡所有“就绪”容器之间的流量)。 Service.spec.type属性可以是以下之一:

ClusterIP,NodePort,LoadBalancer,ExternalName

LoadBalancer类型意味着k8s将使用云提供程序LoadBalancer将服务公开到集群外部(例如,如果k8s集群在AWS上运行,则为AWS Elastic Load Balancer)。

  

LoadBalancer:使用云提供商的服务在外部公开服务   负载均衡器。 NodePort和ClusterIP服务,外部   负载平衡器路由是自动创建的。

More on k8s service types