Files
K3S/addons/csi-ceph/README.md
Sergey Antropoff 38aaadbfb1 docs: sync addon docs with explicit external/internal service modes
Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
2026-04-29 23:21:04 +03:00

4.4 KiB
Raw Permalink Blame History

CSI Ceph (ceph-csi: RBD + CephFS)

Аддон разворачивает именно официальный Ceph Container Storage Interface driver из репозитория ceph/ceph-csi:

  • rbd.csi.ceph.com — блочное хранилище RBD (обычно ReadWriteOnce)
  • cephfs.csi.ceph.com — файловое хранилище CephFS (обычно ReadWriteMany)

Что делает аддон

  1. Создаёт ConfigMap ceph-csi-config (FSID + MON endpointы).
  2. Применяет upstream-манифесты ceph-csi для RBD/CephFS (provisioner + node plugin).
  3. Создаёт Secret для авторизации в Ceph.
  4. Создаёт StorageClass для RBD и/или CephFS.

Аддон не разворачивает Ceph-кластер (MON/OSD/MGR). Кластер Ceph должен уже существовать.


Предварительные требования

  • Рабочий Ceph-кластер.
  • Доступ к ceph CLI (чтобы получить FSID, MON и CephX ключ).
  • Kubernetes-кластер уже установлен (k3s).

Нужно подготовить:

  • clusterID = FSID (ceph fsid)
  • список monitors (host:port)
  • CephX пользователь и ключ для CSI
  • pool для RBD и (опционально) fs/pool для CephFS

Подготовка в Ceph (пример)

1) Получить FSID

ceph fsid

2) Получить список MON

ceph mon dump

Возьми адреса в формате IP:6789 (или ваш порт MON).

3) Создать пользователя для CSI

# пример для RBD + CephFS
ceph auth get-or-create client.kubernetes \
  mon 'allow r' \
  mgr 'allow rw' \
  osd 'allow rwx pool=rbd, allow rwx pool=cephfs_data, allow rw tag cephfs *=*' \
  mds 'allow rw'

4) Вытащить ключ пользователя

ceph auth get-key client.kubernetes

Сохрани его в vault_csi_ceph_user_key.


Настройка в проекте

group_vars/all/addons.yml

addon_csi_ceph: true

csi_ceph_driver_ref: "devel"
csi_ceph_namespace: "kube-system"

csi_ceph_cluster_id: "b9127830-b0cc-4e34-aa47-9d1a2e9949a8"
csi_ceph_monitors:
  - "10.0.0.11:6789"
  - "10.0.0.12:6789"
  - "10.0.0.13:6789"

csi_ceph_user_id: "kubernetes"
csi_ceph_user_key: "{{ vault_csi_ceph_user_key }}"

csi_ceph_rbd_storage_class_name: "ceph-rbd"
csi_ceph_rbd_pool: "rbd"
csi_ceph_rbd_fs_type: "ext4"

csi_ceph_cephfs_storage_class_name: "cephfs"
csi_ceph_cephfs_fs_name: "cephfs"
csi_ceph_cephfs_pool: "cephfs_data"

group_vars/all/vault.yml

vault_csi_ceph_user_key: "<KEY_FROM_ceph_auth_get-key>"

Установка

make addon-csi-ceph

Проверка:

kubectl -n kube-system get pods | rg 'csi-rbd|csi-cephfs'
kubectl get sc

Ожидается наличие StorageClass:

  • ceph-rbd (или имя из csi_ceph_rbd_storage_class_name)
  • cephfs (или имя из csi_ceph_cephfs_storage_class_name)

Пример PVC (RBD)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: app-rbd-data
spec:
  accessModes: [ReadWriteOnce]
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 20Gi

Пример PVC (CephFS)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: app-cephfs-data
spec:
  accessModes: [ReadWriteMany]
  storageClassName: cephfs
  resources:
    requests:
      storage: 20Gi

Частые проблемы

  • failed to fetch monitor list
    Неверный csi_ceph_cluster_id или csi_ceph_monitors.

  • permission denied / rados: ret=-13
    Недостаточные CephX права у client.<csi_ceph_user_id>.

  • PVC в Pending
    Проверь provisioner pods (csi-rbdplugin-provisioner, csi-cephfsplugin-provisioner) и события PVC: kubectl describe pvc <name>.

Официальные ресурсы