dav*_*idb 2 django nginx kubernetes
我在为 kubernetes 中部署的 django 应用程序创建 nginx 配置文件时遇到困难。Nginx 和 app 是同一个集群中的两个独立容器。据我所知,容器可以通过 127.0.0.1:XX 和主机名相互通信。我正在为此使用 minikube。我的应用程序容器是从这个文件构建的:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: website
labels:
name: website
spec:
template:
metadata:
labels:
name: website
spec:
containers:
- name: website
image: killabien/web
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: website
labels:
name: website
spec:
type: LoadBalancer
ports:
- port: 8000
targetPort: 8000
selector:
name: website
Run Code Online (Sandbox Code Playgroud)
和 nginx 从这个:
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: website
tier: frontend
type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: frontend
spec:
template:
metadata:
labels:
app: website
tier: frontend
spec:
containers:
- image: killabien/nginx
name: nginx
Run Code Online (Sandbox Code Playgroud)
我可以访问应用程序本身(不提供静态文件),但是当我尝试访问 nginx 时,我收到 502 Bad Gateway 错误。这是nginx配置文件:
upstream website {
server 127.0.0.1:8000;
}
server {
listen 80;
location /static {
alias /www/davidbien/static;
}
location / {
proxy_pass http://website;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试用容器名称(网站)和 localhost:8000 替换 127.0.0.1:8000 但没有任何改变。我究竟做错了什么?
对于您的特定问题:
现在,k8s 的理念是 pod 是部署单位,而容器是包装单位。如果您的 nginx 和网站总是一起扩展,那么将它们放在同一个 pod 中并通过 localhost 进行通信,就好像它们是同一台机器上的两个进程一样。如果您的前端要处理多个网站并且它们分别扩展,那么选项 2 或 3(通过服务名称或 FQDN 进行通信)就可以了。
归档时间: |
|
查看次数: |
3340 次 |
最近记录: |