Как использовать OpenStack Cinder для создания класса хранения и динамического предоставления постоянного тома в кластере Kubernetes

Недавно, когда я практиковал kubernetes, я обнаружил, что нет никакого документа и примера, конкретно объясняющего, как правильно использовать гари в kubernetes.

Итак, как настроить Cinder для использования в kubernetes?

2 ответа

Я провел некоторый эксперимент и решил, как настроить гари с помощью kubernetes. Просто найдите подходящий документ и поделитесь.

подготовка

  • Кубернетский кластер
  • среда openstack и убедитесь, что служба Cinder доступна

Фон

Из моего расследования, компонент kube-controller-manager отвечает за загрузку плагинов объема и связанных с ним в Kubernetes. Таким образом, мы могли бы сделать доступным шлак, настроив kube-controller-manager конфигурации.

меры

  1. Подготовить cloud.conf файл, содержащий ваши кредиты openstack

Подготовьте кредиты openstack и сохраните их, например, в виде файла. /etc/kubernetes/cloud.conf в кубернетесь панель управления которой kube-controller-manager находит. Ниже приведен пример для cloud.conf

[Global]
auth-url=$your_openstack_auth_url
username=$your_openstack_user
password=$your_user_pw
region=$your_openstack_reigon
tenant-name=$your_project_name
domain-name=$your_domain_name
ca-file=$your_openstack_ca

Большинство можно найти из вашего stackrc файл. А также ca-file Элемент не является обязательным, в зависимости от того, является ли ваш URL-адрес openstack http или же https

  1. регулировать kube-controller-manager начать настройку

Эта ссылка является подробным описанием вариантов kube-controller-manager ( https://kubernetes.io/docs/admin/kube-controller-manager/)

На самом деле мы должны добавить два дополнительных параметра на основе вашего текущего

--cloud-provider=openstack
--cloud-config=/etc/kubernetes/cloud.conf

Есть в основном два способа начать kube-controller-manager: 1) используя systemd 2) используя статический модуль.

Только один совет, если вы используете статический модуль для kube-controller-manager Убедитесь, что у вас есть все файлы, такие как cloud.conf или openstack ca file, в ваш контейнер.

верификация

Мы создадим класс хранилища и используем этот класс хранилища для динамического создания постоянного тома.

  1. Создайте класс хранения с именем standard:

как:

apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "true"
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: EnsureExists
provisioner: kubernetes.io/cinder

Используя команду kubectl create -f demo-sc.yml создать и использовать команду kubectl get sc проверить, правильно ли он создан

NAME                 TYPE
standard (default)   kubernetes.io/cinder 
  1. Создайте PersistentVolumeClaim, чтобы использовать StorageClass для предоставления постоянного тома в Cinder

    вид: PersistentVolumeClaim apiVersion: v1 метаданные: имя: заявка cinder-аннотации: volume.beta.kubernetes.io/storage-class: "стандартная" спецификация: accessModes: - ресурсы ReadWriteOnce: запросы: хранилище: 1Gi

Создание ПВХ путем kubectl create -f demo-pvc.yml

А теперь проверка по команде kubectl get pvc

NAME           STATUS    VOLUME                                         CAPACITY   ACCESSMODES   STORAGECLASS   AGE
cinder-claim   Bound     pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379   1Gi          RWO           standard       23h

И в среде openstack, проверка по команде cinder list | grep pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379

    root@ds0114:~# cinder list | grep pvc-5dd3d62e-9204-11e7-bc43- fa163e0e0379
| ddd8066d-2e16-4cb2-a89e-cd9d5b99ef1b | available | kubernetes-dynamic- pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379 |  1   |   CEPH_SSD  |  false   |                                       |

Так что теперь StorageClass работает хорошо, используя Cinder в Kubernetes.

Большое спасибо за вашу замечательную акцию!
Решение работает для меня ( K8S 1.14.3, OpenStack Queen), и я просто добавил фрагменты параметра/volumeMounts/volume, как показано ниже:

Параметр :

      - --cloud-provider=openstack  
- --cloud-config=/etc/kubernetes/cloud-config  

VolumeMounts:

      -- mountPath: /etc/kubernetes/cloud-config  
   name: cloud  
   readOnly: true  

объем :

      -- hostPath:  
     path: /etc/kubernetes/cloud.conf  
     type: FileOrCreate  
   name: cloud
Другие вопросы по тегам