Kubernetes создает постоянный том и использует его в моем приложении django

Я хочу создать постоянный том на моем кластере kubernetes (gcp) и использовать его в моем приложении django в качестве, например, медиа-папки. На стороне kubernetes я делаю:

Сначала создайте претензию на объем:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-zeus
  namespace: ctest
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

, затем в моем deployments.yaml я создаю том и связываю его с pod:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: django
  namespace: ctest
  labels:
    app: django
spec:
  replicas: 3
  selector:
    matchLabels:
      app: django
  template:
    metadata:
      labels:
        app: django
    spec:
      volumes:
        - name: cc-volume
          persistentVolumeClaim:
           claimName: pvc-zeus 
      containers:
        - name: django
          image: gcr.io/direct-variety-3066123/cc-mirror
          volumeMounts:
           - mountPath: "/app/test-files"
             name: cc-volume
      ...

затем в моих настройках django:

MEDIA_URL = '/test-files/'

Вот мой Dockerfile:

FROM python:3.8-slim

ENV PROJECT_ROOT /app
WORKDIR $PROJECT_ROOT

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .

RUN chmod +x run.sh

CMD python manage.py runserver --settings=settings.kube 0.0.0.0:8000

когда я применил утверждение тома на моем кластере, все было сделано (утверждение тома было создано), но после применения deployment.yaml том не был создан для стручков (также если я подключусь в bash к моим стручкам, папка test-files не существует).

Как я могу создать том в моих развертывающих капсулах и использовать его в моем приложении django?

Заранее большое спасибо

Для создания PVC необходимо наличие одного из двух объектов Kubernetes: PersistentVolume(PV) или StorageClass(SC).

Как вы показали, ваш PVC не указывает на PV или SC, из которых можно создать том.

Обычно, когда вы не указываете PV или SC в PVC, используется SC по умолчанию, и вы должны указывать .resources не в PVC, а в SC по умолчанию.

Возможно, если вы просто хотите работать с SC по умолчанию, вы захотите проверить, активен ли он в вашем конкретном кластере или вам нужно создать/активировать его.

Вернуться на верх