PVC. Как создать и привязать к поду

Последние изменения: 24.01.2023

Что такое PV и PVC?
Создать PVC

Привязать PVC к поду

Что такое PV и PVC?

PV (Persistent Volumes или постоянные тома) — это ресурсы хранения в кластере Kubernetes, которые используют поды. PV существуют независимо от подов — их цикл жизни определяет Политика Возврата (Reclaim Policy). В зависимости от Политики возврата, PV может быть сохранён или удалён после удаления пода, который был привязан к этому PV.

PV — это некоторый свободный объём хранилища. Для того, чтобы привязать этот объём хранилища к поду, нужно создать PVC (Persistent Volume Claim или запрос на постоянный том) — запрос на выделение хранилища. После того, как PVC создан, Kubernetes перенаправляет его к компоненту «класс хранилища» (storageclass), который предоставляет хранилище. Класс хранилища автоматически создаёт PV в ответ на PVC.

Создать PVC

Существует 4 класса хранилища в зависимости от типа диска: стандарт, ультра, cold и ssd_hiiops. Класс хранилища с типом диска standard доступен по умолчанию. Поэтому при работе с таким диском необходимо создать только PVC. При работе с дисками других типов необходимо сначала создать класс хранилища с нужным типом диска, а затем создать PVC.

Создать PVC для класса хранилища с типом диска standard

1. Для создания и настройки PVC подготовьте YAML-файл в любом кодовом или текстовом редакторе:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

    где:

    block-pvc — название PVC,
    1Gi — необходимый объём хранилища.

2. Выполните команду kubectl из файловой директории:

kubectl apply -f <имя YAML-файла>.yaml

    Вы получите ответ:

persistentvolumeclaim/<имя созданного PVC> created

Вы создали PVC для класса хранилища с типом диска standard. Чтобы привязать PVC к вашему поду, перейдите
к разделу Привязать PVC к поду.

Создать PVC для класса хранилища с типом диска ultra/cold/ssd_hiiops

Проверьте доступные типы дисков в разных регионах в личном кабинете или с помощью API-запроса.

1. Для создания и настройки класса хранилища с типом диска ultra/cold/ssd_hiiops подготовьте YAML-файл в любом
    кодовом или текстовом редакторе:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-sc-cinderplugin-hiiops
  annotations:
    storageclass.kubernetes.io/is-default-class: "false"
provisioner: cinder.csi.gcorelabs.com
parameters:
  type: ssd_hiiops
allowVolumeExpansion: true

    где:

    csi-sc-cinderplugin-hiiops — название класса хранилища,
    ssd_hiiops — необходимый тип диска.

2. Выполните команду kubectl из файловой директории:

kubectl apply -f <имя YAML-файла>.yaml

    Вы получите ответ:

storageclass/<имя созданного класса хранилища> created

3. Для создания и настройки PVC подготовьте YAML-файл в любом кодовом или текстовом редакторе:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: block-pvc
spec:
  storageClassName: csi-sc-cinderplugin-hiiops
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

    где:

    block-pvc — название PVC,
    csi-sc-cinderplugin-hiiops — название созданного класса хранилища,
    1Gi — необходимый объём хранилища.

4. Выполните команду kubectl из файловой директории:

kubectl apply -f <имя YAML-файла>.yaml

    Вы получите ответ:

persistentvolumeclaim/<имя созданного PVC> created

Вы создали PVC для класса хранилища с необходимым типом диска. Чтобы привязать PVC к вашему поду, перейдите
к следующему разделу.

Привязать PVC к поду

1. Чтобы привязать созданный класс хранилища к поду, подготовьте YAML-файл в любом кодовом или текстовом
    редакторе:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
        - mountPath: "/var/www/html"
          name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: block-pvc

    где:

    mypod — название пода,
    myfrontend — название контейнера,
    “/var/www/html” — место внутри пода, куда необходимо установить класс хранилища,
    mypd — название класса хранилища,
    block-pvc — название созданного PVC.

2. Выполните команду kubectl из файловой директории:           

kubectl apply -f <имя YAML-файла>.yaml

    Вы получите ответ:

pod/<имя пода> created

Теперь вы успешно привязали PVC к вашему поду, а у его контейнеров есть доступ к хранилищу.

Помогла ли вам статья?