Какой CSI-драйвер вы использовали в манифестах Kubernetes?

«Какой CSI-драйвер вы использовали в манифестах Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я работал с различными CSI-драйверами в зависимости от облачного провайдера или on-premise инфраструктуры. Основная задача — динамически предоставлять блочные или файловые хранилища для StatefulSet'ов и Deployment'ов.

1. AWS EBS CSI Driver (ebs.csi.aws.com): Использовал для stateful-приложений (базы данных, Kafka) в AWS. Настройка включает создание StorageClass с параметрами типа диска и IOPS.

# StorageClass для gp3 томов
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-gp3
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
  iops: "3000"          # Опционально
  throughput: "125"     # Опционально, MB/s
volumeBindingMode: WaitForFirstConsumer  # Важно для зональных томов
reclaimPolicy: Retain
allowVolumeExpansion: true
---
# PersistentVolumeClaim, использующий этот StorageClass
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-data
spec:
  storageClassName: ebs-gp3
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

2. CSI Driver для Ceph (RBD и CephFS): В on-premise кластерах использовал rbd.csi.ceph.com для блочных устройств (подходит для баз данных) и cephfs.csi.ceph.com для разделяемого файлового хранилища (логи, статика).

3. Azure Disk CSI Driver (disk.csi.azure.com): Настраивал для приложений в Azure AKS, используя управляемые диски с разными уровнями производительности (StandardSSD_LRS, Premium_LRS).

Ключевые моменты при работе с CSI:

  • volumeBindingMode: WaitForFirstConsumer — критически важная настройка для облачных провайдеров, которая гарантирует, что том будет создан в той же зоне доступности (AZ), что и под, который его использует.
  • allowVolumeExpansion: true — позволяет увеличивать размер тома без его пересоздания (поддерживается не всеми драйверами).
  • Snapshot и Clone: Современные CSI-драйверы поддерживают создание снапшотов томов и клонов, что полезно для тестирования и восстановления данных.
  • Перед использованием драйвера необходимо установить его в кластер (обычно через Helm chart или набор манифестов от провайдера) и создать соответствующие ServiceAccount и RBAC-правила.