Назад | Перейти на главную страницу

Постоянный том OpenShift Origin и Ceph

Я установил OpenShift Origin из последней установленной версии. (CentOS 7 - 3 мастера и 7 узлов)

[root@master-1 ~]# openshift version
openshift v1.1.0.1-1-g2c6ff4b
kubernetes v1.1.0-origin-1107-g4c8e6f4
etcd 2.1.2

Я пытаюсь создать постоянное хранилище CEPH через плагин rbd. У меня есть рабочий кластер Ceph, и я следовал официальному руководству по ceph из документации:

https://docs.openshift.org/latest/install_config/persistent_storage/persistent_storage_ceph_rbd.html

Я могу без проблем создать persistentVolume и persistentVolumeClaim, но когда Kubernetes пытается смонтировать том, он сообщает об ошибке:

FailedMount  {kubelet node-4} Unable to mount volumes for pod "php55-rzat2_xyz": unsupported volume type
Pod  FailedSync   {kubelet node-4}   Error syncing pod, skipping: unsupported volume type

Я установил цеф, ceph-common и ceph-предохранитель пакеты на всех узлах (и на мастерах, конечно, я тоже устанавливал).

persistentVolume запрашивается persistentVolumeClaim, как и ожидалось.

Файл конфигурации pv:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: "ceph-ssd-0000-11"
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - "ReadWriteOnce"
  rbd:
    monitors:
      - "10.0.0.5:6789"
      - "10.0.0.6:6789"
      - "10.0.0.7:6789"
    pool: ssdvolumes
    image: ssd-shift-pv-0001
    user: ssdvolumes
    secretRef:          
       name: "QVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="
    fsType: ext4
    readOnly: false
  persistentVolumeReclaimPolicy: "Recycle"

Я также могу без проблем подключиться через rbd в cli.

Кто-нибудь может мне с этим помочь? Я думал, что плагин rbd автоматически устанавливается в кубернетах с установкой openshift.

Вот и разобрался. Официальная документация немного неясна о создании ceph pv. Вы должны создать еще один объект "секрет" с секретом ceph, а затем просто сослаться на него в конфигурации pv.

pv.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: "ceph-ssd-0000-06"
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - "ReadWriteOnce"
  rbd:
    monitors:
      - "10.2.70.51:6789"
      - "10.2.70.81:6789"
      - "10.2.70.82:6789"
    pool: ssdvolumes
    image: ssd-shift-pv-0006
    user: ssdvolumes
    secretRef:           
       name: "ceph-secret"
    fsType: ext4
    readOnly: false
  persistentVolumeReclaimPolicy: "Recycle"

ceph-secret.yml

apiVersion: v1
kind: Secret
metadata:
  # coresponds to secretRef in pv.yml
  name: ceph-secret
data:
  # base64 encoded ceph secret
  key: QVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxltZFE9PQ==

а затем выполнить

oc create -f pv.yml
oc create -f ceph-secret.yml

Также сообщение об ошибке: неподдерживаемый тип тома сбивает с толку, так как сообщается, даже если том rbd поддерживается. Ошибка из-за отсутствия секрета.

О проблеме сообщают и предположительно собираются решить: https://github.com/kubernetes/kubernetes/issues/18444

Edit2: Дополнительная информация о монтировании постоянного тома ceph: перед монтированием вы создали образ в пуле ceph. Openshift (или кубернеты) сами по себе не создают изображения.

Edit3: вы также должны вручную mkfs.ext4 это изображение перед его использованием.