12

我是 Kubernetes 新手,想了解如何将在 Kubernetes 中运行的服务暴露给外界。我已经使用集群上的 NodePort 公开了它。因此,例如:服务在主机上公开端口 31234,我可以通过https://kubeserverIP:31234从另一台服务器访问该服务。

我想要实现的是通过 nginx(在不同的服务器上,不受 Kube 控制)通过 URL 提供此服务,例如http://service.example.com。我尝试使用指向该服务的上游来部署 nginx,但这不起作用并且出现错误的网关错误。

有什么我在这里想念的吗?或者有没有更简洁的方法来实现这一点。

我有 Kubernetes 集群的裸机安装,无法访问 gce 负载均衡器或其他供应商 LB。

谢谢

4

2 回答 2

10

您快到了!您的下一步将是设置一个入口控制器。有一个 NGINX Ingress 控制器插件,你可以在这里查看

编辑:这是一个示例配置:https ://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example

于 2018-07-11T18:11:37.260 回答
10

感谢您指出正确的方向。

基本步骤大致是:

  1. 创建一个应用程序及其服务定义。

  2. 为入口创建命名空间。

  3. 创建默认后端部署和服务,以重定向所有未在 Ingress 规则中定义的请求。在入口空间中创建这些
  4. 创建 nginx 入口控制器部署。
  5. 创建 RBAC 规则。
  6. 最后为具有路径和端口的应用程序创建入口规则。

找到了一个非常有用的指南,详细解释了事情: https ://akomljen.com/kubernetes-nginx-ingress-controller/

于 2018-07-13T12:52:35.293 回答