【发布时间】:2019-03-03 05:53:48
【问题描述】:
我有一个 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;
}
}
# Uwsgi file
module = site_module.wsgi
master = true
processes = 5
socket = :8001
enable-threads = true
vacuum=True
# 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_name $host代替server_name server localhost my-website-domain.de- 将admin-api-app替换为localhost(您的容器可以从 Pod 中的本地主机看到) - 强制使用0.0.0.0:8001上的套接字:8001的 - 删除 uwsgi 容器定义中的ports部分 -
谢谢。我会试试的。我最终将 nginx 和应用程序放在同一个容器中。这工作正常
-
这是不好的做法,但我想你已经知道了 ;)
-
我一直这么认为,但是在谷歌搜索之后,从我读过的某些来源来看,这似乎并不是一个坏习惯。我介于两者之间,最终意识到这真的很糟糕。我的容器最后会有 app + nginx。这听起来不像是反模式或不好的做法。除非你能说服我否则
标签: django docker kubernetes uwsgi