Написать в техподдержку Позвонить нам
Админпанель Выход

Содержание статьи:

    Persistent volumes и StatefulSet

    StatefulSet — это удобный способ работы со Stateful-приложениями, которым требуется обрабатывать события об остановке работы Pod и осуществления Graceful Shutdown. Обычно, такие приложения — это базы данных и очереди сообщений, которые работают в нескольких экземплярах, синхронизируемых друг с другом посредством репликации или кластеризации.

    Существует несколько способов организации таких схем: с использованием общих Persistent Volumes (RWX) и с помощью индивидуальных Persistent Volumes (RWO).

    В случае RWX Persistent Volumes (NFS, GlusterFS) вы можете использовать существующий Persistent Volume Claim в декларации StatefulSet. Однако, такой способ не подойдет для RWO Persistent Volumes (Block Storage), т.к. блочное хранилище монтируется в эксклюзивном режиме к каждому Pod. В результате, если StatefulSet будет иметь 2 или более реплики Persistent Volume будет примонтирован только к 1 из Pod, а монтирование ко всем остальным Pod завершится неудачей.

    Для того, чтобы избежать подобных проблем, вы должны использовать volumeClaimTemplates в декларации StatefulSet

    volumeClaimTemplates:
     - metadata: name: www
     spec: accessModes: [ "ReadWriteOnce" ]
     storageClassName: "csi-dp1-ssd"
     resources: 
    requests: 
    storage: 1Gi

    В этом случае для каждой реплики StatefulSet будет создан PVC с именем data-0, data-1, data-2 и т.д. в зависимости от количества реплик. Каждый из этих PVC выделит Persistent Volume нужного объема, который и будет примонтирован к подам, соответствующим репликам StatefulSet.


    Полезна ли была эта статья?