Kubernetes Persistent Volume не разделяется при загрузке файла с помощью Django и Nginx
Я создал 2 постоянных тома, один для статических файлов, а другой для медиафайлов.
Статические файлы работают отлично, nginx обслуживает данные.
Для медиа-тома nginx не видит загруженный файл и содержимое тома не обновляется. Конфигурация nginx в порядке. Расположение работает, но том не содержит загруженного файла.
Вот мои медиа pv и pvc:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mediafiles-pv
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/usr/src/app/backend/media"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mediafiles-pvc
namespace: default
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: mediafiles-pv
Вот мое развертывание для бэкенда (django):
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
labels:
app: backend
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
volumes:
- name: staticfiles
persistentVolumeClaim:
claimName: staticfiles-pvc
- name: mediafiles
persistentVolumeClaim:
claimName: mediafiles-pvc
containers:
- name: backend
image: loopedupl/backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8000
volumeMounts:
- name: staticfiles
mountPath: "/usr/src/app/backend/static"
- name: mediafiles
mountPath: "/usr/src/app/backend/media"
и для nginx:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: staticfiles
persistentVolumeClaim:
claimName: staticfiles-pvc
- name: mediafiles
persistentVolumeClaim:
claimName: mediafiles-pvc
containers:
- name: nginx
image: loopedupl/nginx:latest
imagePullPolicy: Always
ports:
- containerPort: 80
volumeMounts:
- name: staticfiles
mountPath: "/usr/src/app/backend/static"
- name: mediafiles
mountPath: "/usr/src/app/backend/media"
При обращении к django pod я вижу загруженный файл в этой директории. При обращении к nginx pod данные отсутствуют. Папка media пуста.
При локальном использовании на docker-compose все выглядит нормально.
Не вижу разницы между медиа и статическим объемом.