Docker Kubernetes使用Gitlab安装入口返回&引用;作为外部IP

Docker Kubernetes使用Gitlab安装入口返回&引用;作为外部IP,docker,kubernetes,continuous-integration,gitlab,nginx-ingress,Docker,Kubernetes,Continuous Integration,Gitlab,Nginx Ingress,我已成功地将Kubernetes群集连接到Gitlab。我还可以通过Gitlab UI安装Helm(操作->Kubernetes) 我的问题是,如果单击Ingress Gitlab的“安装”按钮,将创建Ingress控制器所需的所有nessecary内容。但有一件事会被遗漏:外部IP。外部IP将标记为“?” 如果我运行这个命令: kubectl get svc --namespace=gitlab-managed-apps ingress-nginx-ingress- controller -o

我已成功地将Kubernetes群集连接到Gitlab。我还可以通过Gitlab UI安装Helm(操作->Kubernetes) 我的问题是,如果单击Ingress Gitlab的“安装”按钮,将创建Ingress控制器所需的所有nessecary内容。但有一件事会被遗漏:外部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,使用法兰绒作为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入口控制器服务的状态将保持为挂起状态。无法检测外部IP的原因。我还修改了服务的yaml文件,并手动放置了“externalIPs:-外部IP”行。输出结果是它不再挂起。但我仍然无法通过键入上述命令找到外部IP,Gitlab也无法找到任何外部IP

编辑: 安装后会发生这种情况:

编辑2: 通过运行以下命令:

kubectl describe svc ingress-nginx-ingress-controller -n gitlab-managed-apps
我得到以下结果:

在事件日志中,您将看到我将类型切换到“NodePort”一次,然后返回到“LoadBalancer”,并在yaml文件中添加了“externalIP:-192.168.50.235”行。正如您所看到的,存在externalIP,但Git没有检测到它


<> p>我不使用任何云提供商,如AWS或GCE,我发现LoadBalancer不是这样工作的。但是没有LoadBalancer的话,必须有一个解决方案。

< P>我会考虑在你的集群中寻找负载平衡服务的主要供应者。如果你不使用任何云提供商来获得。作为
入口
资源的入口点(外部IP),裸机环境可以选择切换到
MetalLB
解决方案,该解决方案将在不在云提供商上运行的集群中创建类型为
LoadBalancer
的Kubernetes服务,因此它也可以用于

通常,
metallib
可以通过Kubernetes清单文件或使用所述的包管理器安装

MetalLB
在Kubernetes集群中部署自己的服务,它可能需要保留IP地址池,以便能够拥有
ingress nginx
服务的所有权。此池可以在名为
config
ConfigMap
中定义,该池与
MetalLB
位于同一命名空间中控制器:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 203.0.113.2-203.0.113.3
一旦入口服务从此地址池获得IP地址,外部IP将分配给您的
负载平衡器


在官方网站上查找更多关于NGINX Ingress Controller的
MetalLB
实现的详细信息。

经过一些研究,我发现这是一个Gitlab问题。如上所述,我成功地建立了与集群的连接。由于我使用的Kubernetes没有云提供商,因此不可能使用“LoadBalancer”类型。因此,您需要添加外部IP或将类型更改为“节点端口”。通过这种方式,您可以在外部访问入口控制器

看看这个:


我刚刚继续了Gitlab教程,它成功了。

您是如何配置k8s cluster(云提供商、裸机解决方案)的?你能检查一下kubectl描述svc ingress nginx ingress controller-n gitlab管理的应用程序吗?@mk_sta Im在Ubuntu 18.04.1 LTS(仿生海狸)虚拟机上运行Kubernetes。查看第二张图片以查看说明。谢谢!我会考虑的。我面临一个新问题。当我尝试(通过Gitlab)部署某些东西时,我得到以下错误:$deploy错误:升级失败:未提供发布错误:作业失败:执行远程命令时出错:命令以非零退出代码终止:在Docker容器中执行时出错:1 Im使用Gitlab的默认DevOps。在构建管道时,一切都很好。但是,当涉及到生产时,我得到了上面的错误代码。为此错误创建单独的问题,这与我的回答无关。您好,我尝试了您的建议,但Gitlab似乎仍然无法识别入口,请参阅: