【问题标题】:Exposing a Kubernetes service on a bare-metal cluster over the external network architecture通过外部网络架构在裸机集群上公开 Kubernetes 服务
【发布时间】:2020-08-18 08:31:33
【问题描述】:
我已经构建了一个裸机多节点、多服务器 Kubernetes 集群,这是我的第一次体验。
但我想通过外部网络公开服务。
如果我使用 Minikube,我会使用 LoadBalancer 将服务公开到外部。
疑难解答:
- 我正在考虑使用入口控制器或 NodePort 服务作为访问 pod 网络的解决方案。
- 我尝试公开一个 NodePort 服务,但没有获得外部 ip。
我在问是否有人可以帮助我设置一个运行中的 hello-world,但要为这个裸机集群选择正确的架构。
谢谢。
【问题讨论】:
标签:
networking
kubernetes
kubernetes-ingress
【解决方案1】:
我建议使用MetalLB,它是裸机集群的负载平衡器。
您也可以将其与裸机 Ingress 控制器(如 Nginx)结合使用。
关于 Nginx 你可以找到更多细节here。
我已成功使用此组合以及指向集群 IP 之一的通配符域(例如 *.mydomain)。这允许定义任意数量的组合,以指向部署在集群上的不同服务(例如 service1.mydomain、service2.mydomain 等)。
我还建议安装Helm,因为这将极大地帮助您进行部署。您可以为大多数广泛传播的服务找到很多图表,并且它使您能够轻松配置它们。此外,为您未来的服务以及良好的维护和定制创建图表也是一个很好的做法。
【解决方案2】:
Nodeport 服务在这里提供帮助
在裸机中,您可以将 host1、master 作为集群成员。
如果在节点端口 ex 上创建节点端口服务:31000
您可以使用 http://host1IP:31000/ 进行质量检查