Kubernetes 仪表板 - 使用 Ingress-Nginx 公开

Kubernetes Dashboard - Exposing with Ingress-Nginx

我是整个 Kubernetes 社区的新手,我目前正在尝试使用 Ingress-Nginx 公开仪表板。我已经尝试了几件事,但我无法找到关于如何使用 Ingress 公开仪表板的很好的解释。我现在所拥有的只是一个可通过 'kubectl port-forward' 访问的仪表板。我还安装了 Ingress-Nginx,控制器是 运行。我应该如何开始为 kubernetes 仪表板创建 Ingress?

对于像您这样的裸机环境,仅靠 Nginx-Ingress 是不够的,因为您缺少通常在 public 云端自动提供的负载均衡器,例如 AWS,Google 云等

要在裸机环境中通过入口资源公开服务,您有两种选择。

节点端口

带有 NodePort 的服务在 Kubernetes 集群的每个节点上的静态端口上公开。为此,只需编辑您的 kubernetes-dashboard 服务(请注意,命名可能会根据您安装 Kubernetes 仪表板的方式而改变):

kubectl -n kubernetes-dashboard edit service kubernetes-dashboard

并将 type: ClusterIP 更改为 type: NodePort。执行此操作后,再次检查您的服务:

kubectl -n kubernetes-dashboard get svc kubernetes-dashboard

NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   10.43.120.193   <none>        443:31120/TCP   9m7s

如果您查看 PORT(S) 输出,您会看到暴露了一个随机端口(在我的示例中为 31120)。现在要访问您的仪表板,您只需使用:

https://node-ip:31120

金属LB

这是一个更酷的解决方案,因为它将允许您使用 LoadBalancer 类型的服务,就像您在 public 云提供商上一样。这需要一些基本的网络知识,但它非常易于使用并且对于测试环境非常灵活。您可以在 MetalLB 网站上找到更多信息。

这里还有几个有用的链接,可以更好地理解我上面解释的概念。

Nginx-Ingress - Bare-metal considerations

Kubernetes Services