1

我已经使用 Rancher 在我的 VMware 主机上成功设置了一个 Kubernetes 集群。我正在运行 kubernetes-dashboard,并且可以使用 kubectl 对集群执行命令。

现在,我想使用 SaaS 构建工具 (Distelli) 将我的应用程序部署到集群。此构建工具应使用 HTTPS 客户端证书、客户端密钥和集群证书连接到我的主机。

但是,我的 kubernetes API 尚未公开。

这是我当前的 Kubernetes 服务配置:

$kubectl describe services kubernetes
Name:           kubernetes
Namespace:      default
Labels:         component=apiserver
            provider=kubernetes
Selector:       <none>
Type:           ClusterIP
IP:         10.43.0.1
Port:           https   443/TCP
Endpoints:      10.42.173.175:6443
Session Affinity:   ClientIP

如何使该服务在外部 IP 地址上可用?我尝试对服务器使用入口负载均衡器,但它只返回 503 服务不可用。

有任何想法吗?

4

2 回答 2

1

您需要有从公共互联网到 API 服务器的路由。这可以通过将公共 IP 直接分配给运行 api 服务器的机器来完成,或者您也可以让负载均衡器直接进入流量。您提到您在 VMWare 上,因此根据您的网络设置可能会有几个不同的路径。

于 2017-01-05T01:32:04.637 回答
0

我还没有完全掌握这个窍门,因为我有一些与我自己的实现有关的问题(例如,我如何扩展它?)。但这就是我所做的。

首先,您显然有一个域,即“mywonderfulwebsite.com”,在那里您可以编辑 DNS 区域,为 mywonderfulwebsite.com 添加一个“A”记录并指向集群的 IP 地址。

现在,哪个 IP 地址很有趣,因为 Kubernetes 有点要求你运行多个节点,至少一个主节点和一个应用服务器。因此,在这种情况下,要使用的 ip 地址是应用服务器的 ip 地址。顺便说一句,这就是为什么我不确定如何扩展它,因为如果我有 1 个主节点 + 10 个应用程序节点,我现在使用哪个 IP 地址?他们全部?

在应用程序节点上,部署 ingress-nginx-controller,因为这是您的裸机负载均衡器。裸机是一个你在谷歌上经常听到的术语,它基本上是你有一个手动安装 Kubernetes 的空服务器,它不像 AWS、Azure 或其他。

一旦你安装了入口控制器,你就可以开始创建使用它的入口资源了。这就是我最初感到困惑的地方,但现在一切都清楚了。创建入口只是您的应用程序部署的资源,但它需要 LoadBalancer 或 Ingress Controller 将来自外部世界的请求传递到您的集群。

创建另一个入口后,来自该域的任何请求都将从 dns 服务器传递到您的应用程序节点,它将传递到 ingress-nginx-controller,它将尝试将其与任何现有的入口资源进行匹配,并在找到时一,它将为您为应用程序和宾果游戏创建的服务资源配置后端!您的应用程序将收到请求。

我有一个 github 可以帮助你:http: //github.com/christhomas/kubernetes-cluster

于 2018-02-25T12:18:24.587 回答