Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kubernetes在单个公共ip中公开服务_Kubernetes - Fatal编程技术网

kubernetes在单个公共ip中公开服务

kubernetes在单个公共ip中公开服务,kubernetes,Kubernetes,我已经在virtualBox中使用三个VM安装了kubernetes群集,我的主机IP是192.168.50.166,群集中的节点信息是 vm1 192.168.50.28 worker-node-1 vm2 192.168.50.29 worker-node-2 vm3 192.168.50.30 master-node 如果我的主机上有一个公共IP(140.112.1.1),我如何公开我的服务 http://140.112.1.1:xxxx/services 我想也许我应该在

我已经在virtualBox中使用三个VM安装了kubernetes群集,我的主机IP是192.168.50.166,群集中的节点信息是

vm1 192.168.50.28  worker-node-1 
vm2 192.168.50.29  worker-node-2 
vm3 192.168.50.30  master-node 
如果我的主机上有一个公共IP(140.112.1.1),我如何公开我的服务

http://140.112.1.1:xxxx/services

我想也许我应该在我的主机上购买另一个网络接口,并将公共IP分配给该接口,但我不知道如何与我的群集通信。

您正在搜索的是LoadBalancer服务和入口资源

Kubernetes可以提供负载平衡服务(),这基本上是一种将流量从外部负载平衡器传输到后端POD的方式

如果您将Kubernetes群集托管在云服务(Azure、Google等)之上,那么很有可能您已经拥有为群集提供负载平衡器功能的功能

如果情况并非如此,并且您希望在Kubernetes群集上承载负载平衡器服务,以便所有节点都参与公共IP(或多个公共IP)的服务,那么一种常见的方法是在Kubernetes()上部署MetalLB

其次,通过使用入口资源(),可以根据请求路径(通常是HTTP或HTTPS)管理对不同POD(和服务)的外部访问

它基本上是根据请求的路径将传入流量路由到集群中的不同服务(和不同的pod)的一种方法,并且可以提供SSL和许多其他功能

为集群上的入口资源提供服务的常用方法是使用NGINX入口()

通过LoadBalancer+Ingress的组合,您可以在连接到外部IP地址的LoadBalancer后面公开所有服务,所有内容都可以在HTTP或HTTPS中使用证书等等

假设您正在几乎裸机上托管Kubernetes群集(普通虚拟机就像裸机一样),您可以:

  • 让您拥有的公共地址可供虚拟机在其网络接口上使用
  • 在集群上安装MetalLB,这将提供内部负载平衡,您可以指定它可以使用哪个IP范围(或单个IP)
  • 在集群上安装NGINX入口,这将为入口资源提供支持。安装时,nginx控制器应通过MetalLB接收负载平衡中的外部IP
  • 最后,创建一个入口,以在您想要的路径下为您想要的所有服务提供服务。如果一切正常,nginx控制器应该开始在外部IP地址上为您的服务