0Pricing
DevOps Bootcamp · Урок

Постоянные тома и заявки

Узнайте, как предоставлять Pods постоянное хранилище с помощью Persistent Volumes и Persistent Volume Claims.

«Постоянные тома и заявки» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Pod и эфемерные данные

Pod создаются и завершают работу, а данные приложения часто должны сохраняться. Например, это может быть база данных или файлы, загруженные пользователями.

  • При перезапуске Pod или его переназначении любые данные, сохранённые непосредственно в файловой системе контейнера, теряются.
  • Такая эфемерность подходит для приложений без состояния, но для важных данных требуется надёжное постоянное хранилище.
  • Kubernetes предоставляет мощную систему управления постоянным хранилищем, которое переживает жизненный цикл Pod.

PersistentVolume: хранилище кластера

PersistentVolume (PV) — это часть хранилища в кластере Kubernetes.

  • Это ресурс уровня кластера, то есть он не относится к конкретному пространству имён.
  • PV подготавливаются администратором или динамически с помощью StorageClass.
  • Они скрывают подробности технологии, лежащей в основе хранилища, например Google Persistent Disk, AWS EBS или общей папки NFS.

Определение PersistentVolume

PV определяются такими параметрами, как ёмкость, режимы доступа и тип хранилища. В этом YAML-файле описан PV с использованием hostPath (для локального тестирования) и хранилищем объёмом 5 гигабайт.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-local-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/mnt/data"

Примечание: hostPath обычно используется при разработке для одного узла и не рекомендуется для рабочей среды.

PersistentVolumeClaim: запрос Pod

PersistentVolumeClaim (PVC) — это запрос пользователя или приложения на хранилище в определённом пространстве имён.

  • Pod не используют PV напрямую: они запрашивают хранилище через PVC.
  • PVC относятся к определённому пространству имён, поэтому находятся в области конкретного проекта или команды.
  • В них указываются желаемый размер, режимы доступа и, при необходимости, класс хранилища.

PV и PVC: подбор пары

Kubernetes автоматически сопоставляет PVC с доступным PV посредством процесса, который называется связыванием.

  • После создания PVC Kubernetes ищет PV, соответствующий требованиям PVC: размеру, режимам доступа и классу хранилища.
  • Когда подходящий PV найден, они связываются в отношение «один к одному».
  • Это связывание гарантирует, что PVC получит именно запрошенное хранилище.

Режимы доступа для PV и PVC

Режимы доступа определяют, как хранилище может подключаться и использоваться Pod. Эти режимы запрашиваются PVC и поддерживаются PV:

  • ReadWriteOnce (RWO): том можно подключить для чтения и записи на одном узле.
  • ReadOnlyMany (ROX): том можно подключить только для чтения на нескольких узлах.
  • ReadWriteMany (RWX): том можно подключить для чтения и записи на нескольких узлах.

Доступность этих режимов зависит от конкретного поставщика хранилища.

Классы хранилищ для автоматизации

Классы хранилищ позволяют администраторам описывать «классы» хранилищ, например «fast-ssd» и «slow-hdd».

  • Вместо ручного создания PV StorageClass может динамически подготовить PV, когда PVC запрашивает его.
  • Это автоматизирует создание PV на основе заранее определённых шаблонов.
  • Подготовка хранилища отделяется от его использования, что упрощает работу пользователей.

Пример создания PVC

Создадим PVC, запрашивающий 1 гигабайт хранилища с доступом ReadWriteOnce. Этот PVC будет искать существующий PV или запустит динамическое выделение через StorageClass.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-app-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard # Optional: if you have a 'standard' StorageClass

Сохраните это как pvc.yaml и примените с помощью команды kubectl apply -f pvc.yaml.

Использование PVC в Pod

После связывания PVC Pod может использовать его, указав имя PVC в конфигурации тома. Pod не нужно знать о лежащем в основе PV — достаточно знать PVC.

apiVersion: v1
kind: Pod
metadata:
  name: my-data-pod
spec:
  containers:
    - name: data-container
      image: busybox
      command: ["/bin/sh", "-c", "echo 'Hello from CoddyKit!' > /mnt/data/hello.txt && sleep 3600"]
      volumeMounts:
        - name: persistent-storage
          mountPath: /mnt/data
  volumes:
    - name: persistent-storage
      persistentVolumeClaim:
        claimName: my-app-pvc

Этот Pod запишет файл в подключённый постоянный том.

Мониторинг PV и PVC

Вы можете отслеживать состояние ресурсов постоянного хранилища с помощью kubectl:

  • Чтобы просмотреть все PV: kubectl get pv
  • Чтобы просмотреть все PVC в своём пространстве имён: kubectl get pvc
  • Чтобы получить подробные сведения, включая состояние и события:
    • kubectl describe pv <pv-name>
    • kubectl describe pvc <pvc-name>

Убедитесь, что ваши PV имеют состояние Bound, а PVC связаны (Bound) с правильным PV.

Понимание различий между PV и PVC

Пользователь хочет развернуть базу данных, которой требуется 50 ГБ постоянного хранилища. Какой ресурс Kubernetes непосредственно представляет запрос приложения пользователя на это хранилище?

Итоги: постоянное хранилище

Мы рассмотрели, как Kubernetes управляет надёжным хранилищем для Ваших приложений:

  • PersistentVolumes (PVs) — это ресурсы кластера, представляющие фактическое хранилище.
  • PersistentVolumeClaims (PVCs) — это пользовательские запросы на хранилище.
  • Kubernetes связывает PVC с подходящими PV на основе требований.
  • Режимы доступа определяют, как можно использовать хранилище (RWO, ROX, RWX).
  • Классы хранилищ обеспечивают динамическую подготовку PV и автоматизируют настройку.

Эта система обеспечивает сохранность данных приложения, даже если Pod создаются и завершают работу, что повышает надёжность приложений с состоянием.

Часто задаваемые вопросы

Урок «Постоянные тома и заявки» бесплатный?

Да — полный текст урока «Постоянные тома и заявки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Постоянные тома и заявки»?

Узнайте, как предоставлять Pods постоянное хранилище с помощью Persistent Volumes и Persistent Volume Claims. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Постоянные тома и заявки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. ConfigMaps для конфигурации
  2. Секреты для конфиденциальных данных
  3. Постоянные тома и заявки
  4. StorageClasses и динамическое выделение
← Назад к DevOps Bootcamp