Django项目k8s部署方案
k8s部署上线Django方案
一、容器构建
建议将Django项目环境与uWSGI服务器在同一容器中构建。
1. Docker镜像构建
1 | |
start.sh基本内容(容器启动时需要执行的操作)
1 | |
2.运行命令构建镜像
1 | |
2. 推送私有镜像仓库
- 在内网搭建Harbor或使用Docker Registry或阿里云镜像仓库
- 推送镜像:
docker push 仓库地址/django:v1
二、Kubernetes资源配置
1. Deployment配置
1 | |
2. Service暴露
1 | |
三、网络
1. 网络配置
Ingress配置:搭配Nginx Ingress Controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: django-service
port:
number: 8080网络策略(按需配置):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
spec:
podSelector:
matchLabels:
app: django
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
policyTypes:
- IngressDNS配置
在k8s的CoreDNS中配置私有域解析
1
2
3
4# coredns configmap添加
internal.domain.com {
forward . 10.100.0.100 # 指向内部DNS服务器
}
2.存储方案
- 数据库分离:使用独立的数据库集群(非容器化)
四、配置与密钥管理
1. ConfigMap配置容器环境
1 | |
2. Secret管理
1 | |
五、运维监控
健康检查:确保
/health/接口返回200日志收集:
1
2
3
4
5
6
7# 容器内日志直接输出到stdout
containers:
- name: django-app
...
volumeMounts:
- name: logs
mountPath: /var/log/app监控集成:部署Prometheus Operator+Grafana,监控Pod资源使用率和Django性能指标
Django项目k8s部署方案
http://example.com/2025/02/21/Django项目k8s部署方案/