k8s部署nginx-proxy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s部署nginx-proxy相关的知识,希望对你有一定的参考价值。

参考技术A k8s 没有基于deployment daemonset replicaset 维护 nginx-porxy,而是基于/etc/kubernetes/manifests/nginx-proxy.yml来维护

若要删除pod,把该文件清理掉,pod自动即删除。

使用 Docker-Compose 和 nginx-proxy 时出现 502 Bad Gateway 错误

【中文标题】使用 Docker-Compose 和 nginx-proxy 时出现 502 Bad Gateway 错误【英文标题】:502 Bad Gateway error using Docker-Compose and nginx-proxy 【发布时间】:2016-10-23 09:57:04 【问题描述】:

我是 nginx 新手,正在尝试使用 Docker-Compose 设置链接的 DOcker 容器。

根据教程here 和jwilder 的文档here,我正在尝试在我的Django 容器上部署一个Nginx 代理。 docker-compose.yml 的结构如下:

  build: .
  command:  bash -c "sleep 5 && python -u reroute/manage.py runserver 0.0.0.0:8081"
  volumes:
    - .:/code
  environment:
    - PYTHONUNBUFFERED=0
    - VIRTUAL_HOST=site1.com
    - VIRTUAL_PORT=8081
  ports:
    - "8081:8081"
  links:
    - db

db:
  image: postgres:latest
  environment:
    POSTGRES_PASSWORD: xxxxxx
    POSTGRES_USER: xxxxxx
  ports:
    - "5432"
  volumes:
    - ./backups:/home/backups

nginx:
  image: jwilder/nginx-proxy
  restart: always
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock
  ports:
    - "80:80"

Nginx 的 .conf 文件中的配置如下:

server 
    server_name _; # This is just an invalid value which will never trigger on a real hostname.
    listen 80;
    access_log /var/log/nginx/access.log vhost;
    return 503;

upstream urls.mapquest.com 
                ## Can be connect with "bridge" network
            # googleadtrafficredirect_web_1
            server 172.17.0.4:8081;

server 
    server_name urls.mapquest.com;
    listen 80 ;
    access_log /var/log/nginx/access.log vhost;
    location / 
        proxy_pass http://urls.mapquest.com;
    

我希望 nginx 代理重定向到应用程序本身。我在 Ubuntu 上编辑了我的主机文件以指向我指定的新域。但是,当我在本地部署应用程序时,我收到 502 Bad Gateway 错误,并查看 Nginx 容器的日志显示我收到 Connection denied 错误:

nginx.1    | 2016/06/21 17:39:00 [error] 24#24: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: urls.mapquest.com, request: "GET / HTTP/1.1", upstream: "http://172.17.0.4:8081/", host: "site1.com"

谁能指出问题的正确方向?

【问题讨论】:

您的应用程序在没有 nginx-proxy 的情况下可以工作吗?而且我不明白为什么你有 nginx-proxy 的 conf 文件。 nginx-proxy 的要点是,除了将其链接到您的服务之外,您不需要(或很少)配置 nginx-proxy。 我包含了 conf 文件以防万一。无论如何,事实证明应用程序本身存在问题。在对远程实例进行更改之前,我正在本地测试容器,但忘记了我的应用程序需要特定的配置才能运行。 【参考方案1】:

原来应用程序本身存在问题。在对远程版本进行更改之前,我正在本地测试 docker-compose 容器,并且忘记启用我的应用程序运行所需的特定配置。一旦我纠正了该配置,应用程序就会正确加载并且 nginx 重新路由成功。

【讨论】:

我有这个确切的问题,但我的应用程序日志没有显示任何故障,知道吗? 我也有这个问题。我的 undockered 应用程序没有任何问题。

以上是关于k8s部署nginx-proxy的主要内容,如果未能解决你的问题,请参考以下文章

k8s的项目部署

k8s部署Kafka集群

企业级k8s集群部署

XXL-JOB部署到k8s时遇到的问题

k8s部署mongo集群

Debian11最小化部署k8s集群