解决 `no live upstreams while connecting to upstream` 错误

100次阅读
没有评论

问题描述

在尝试使用 jwilder/nginx 反向代理(Reverse Proxy)来代理 Jenkins 时,遇到了 no live upstreams while connecting to upstream 错误。他在使用 Docker Compose 配置的过程中遇到了这个问题。

解决方案

请注意以下操作可能会因版本差异而有所不同。

方案1 – 修正配置问题

根据您提供的 Docker Compose 配置和错误信息,可能是由于配置问题导致该错误。您需要检查以下几个方面:

  1. 检查端口配置:在您的 Docker Compose 文件中,您配置了 Jenkins 容器的 VIRTUAL_PORT 为 8083,但是您应该将其设置为 Jenkins 容器内部实际运行的端口,即 8080。这个设置用于告诉反向代理将请求转发到容器内的哪个端口。请将以下行修改为:
    “`yaml
  2. VIRTUAL_PORT=8080
    “`

  3. 检查网络配置:您在 Jenkins 容器和反向代理容器之间设置了 rproxy 网络。确保这两个容器都加入了这个网络。您可以在 Docker Compose 文件中的 networks 部分进行检查。

  4. 检查映射端口:在 Jenkins 容器的端口映射中,您将主机的 8083 端口映射到容器的 8080 端口。这看起来是不必要的,您可以将以下行删除:
    “`yaml

  5. 127.0.0.1:8083:8080
    “`

方案2 – 使用 Jenkins Helm

考虑到您在尝试修复配置问题时遇到困难,您还可以考虑使用 Jenkins Helm Chart 来部署 Jenkins。Helm 是 Kubernetes 的包管理工具,可以帮助您更方便地管理应用程序的部署和配置。

以下是使用 Helm 部署 Jenkins 的一些步骤:

  1. 安装 Helm:如果您还没有安装 Helm,您可以按照 Helm 官方文档中的指示进行安装。

  2. 添加 Jenkins Helm 仓库:运行以下命令添加 Jenkins 的 Helm 仓库:
    sh
    helm repo add jenkins https://charts.jenkins.io
    helm repo update

  3. 安装 Jenkins:使用以下命令安装 Jenkins Chart。您可以根据需要自定义配置参数。
    sh
    helm install jenkins jenkins/jenkins

  4. 访问 Jenkins:一旦安装完成,您可以使用 Helm 提供的指令获取 Jenkins 的访问信息。
    sh
    kubectl get svc jenkins

通过使用 Helm,您可以更加方便地管理 Jenkins 的部署和配置,并可能避免与反向代理相关的问题。

总结

通过检查 Docker Compose 配置和考虑使用 Jenkins Helm Chart,您应该能够解决 no live upstreams while connecting to upstream 错误,并成功地配置和访问您的 Jenkins 实例。如果问题仍然存在,请考虑进一步检查您的网络配置和容器映射,以确保一切正确。

正文完