Django、Nginx、uwsgi、Kubernetes:无法将Nginx连接到uwsgi流

Django、Nginx、uwsgi、Kubernetes:无法将Nginx连接到uwsgi流,django,docker,kubernetes,uwsgi,Django,Docker,Kubernetes,Uwsgi,我有一个django容器和一个Ngix容器。它们与docker compose配合得很好,现在我正在尝试使用kubernetes的图像。除了nginx容器无法连接到uwsgi上游之外,一切正常。未返回任何响应 以下是我的配置: # Nginx congifuration upstream django { server admin-api-app:8001 max_fails=20 fail_timeout=10s; # for a web port socket (we'll use

我有一个django容器和一个Ngix容器。它们与docker compose配合得很好,现在我正在尝试使用kubernetes的图像。除了nginx容器无法连接到uwsgi上游之外,一切正常。未返回任何响应

以下是我的配置:

# Nginx congifuration
upstream django {
    server admin-api-app:8001 max_fails=20 fail_timeout=10s;  # for a web port socket (we'll use this first),
}

server {
    # the port your site will be served on
    listen  80;
    server_name server localhost my-website-domain.de;
    charset     utf-8;


    location / {
        uwsgi_pass django;
        include     /etc/nginx/uwsgi_params;
    }
}



您可能需要更改django upstream中的主机,因为据我所知,您希望连接到与nginx位于同一pod中的django应用程序,因此请尝试更改:

server admin-api-app:8001 max_fails=20 fail_timeout=10s;

编辑:
要使其正常工作,您需要将socket更改为http socket,但这可能会很痛苦/毫无意义,如此处所述:

是的,我想连接到容器,但应用程序没有公开任何端口。它更像是一个Unix套接字,这是两个容器通信的方式。至少这是我所知道的关于
uwsgi
你试过登录到那些容器并检查它们是否能够相互连接吗?一些建议:-使用
server\u name$host
而不是
server\u name server localhost我的网站域。de
-用
localhost
替换
admin api app
(从Pod中的localhost可以看到您的容器)-强制将您的套接字设置为
0.0.0:8001
而不是
:8001
-删除uwsgi容器定义中的
端口部分。我会尝试一下。我最终将nginx和应用程序放在同一个容器中。这很好,这是一种不好的做法,但我想您已经知道;)我一直这么认为,但在谷歌搜索之后,从我读到的某些来源来看,这似乎并不是一个坏习惯。我介于两者之间,最后意识到这真的很糟糕。我的容器最后会有app+nginx。这听起来不像是一种反模式或糟糕的做法。除非你能试着说服我
# Kubernetes

# Backend Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: container-backend
  labels:
    app: backend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
      - name: container-backend
        image: my-djangoimage:latest
        command: ["./docker/entrypoint.sh"]
        ports:        
        - containerPort: 8001        
          name: uwsgi        

      - name: nginx
        image: my-nginx-image:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          name: http        

---

# Backend Service
kind: Service
apiVersion: v1
metadata:
  name: admin-api-app
spec:
  selector:
    app: backend
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer
server admin-api-app:8001 max_fails=20 fail_timeout=10s;
server localhost:8001 max_fails=20 fail_timeout=10s;