我已经成功地将我的 Kubernetes-Cluster 与 Gitlab 连接起来。此外,我还能够通过 Gitlab UI(操作->Kubernetes)安装 Helm。我的问题是,如果我单击 Ingress 的“安装”按钮,Gitlab 将创建 Ingress-Controller 所需的所有必要的东西。但是会错过一件事:外部IP。外部 IP 将标记为“?”。
如果我运行这个命令:
kubectl get svc --namespace=gitlab-managed-apps ingress-nginx-ingress- controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}'; echo
它什么也不会显示。就像我不会有一个暴露外部 IP 的负载均衡器。
Kubernetes 集群
我通过 kubeadm 安装了 Kubernetes,使用 flannel 作为 CNI
kubectl 版本:
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2"}
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2"}
在安装 Ingress 之前有什么需要配置的吗?我是否需要一个外部负载均衡器(我的想法:Gitlab 将为我创建该服务)?
再提示:安装后,Nginx-Ingress-Controller Service 的状态将保持在pending。原因是它无法检测到外部 IP。我还修改了服务的 yaml-File 并手动输入了“externalIPs : -External-IP”行。输出结果是它不再处于挂起状态。但我仍然无法通过键入上述内容找到外部 IP命令和 Gitlab 也找不到任何外部 IP
编辑:安装后会发生这种情况: 见图
EDIT2:通过运行以下命令:
kubectl describe svc ingress-nginx-ingress-controller -n gitlab-managed-apps
我得到以下结果:
在事件日志中,您将看到我将类型切换为“NodePort”一次,然后切换回“LoadBalancer”,并在 yaml 文件中添加了“externalIPs:-192.168.50.235”行。如您所见,有一个外部 IP,但 Git 没有检测到它。
顺便提一句。我没有使用任何这些云提供商,如 AWS 或 GCE,我发现 LoadBalancer 不是这样工作的。但是必须有一个没有 LoadBalancer 的解决方案。