Как использовать OpenStack Cinder для создания класса хранения и динамического предоставления постоянного тома в кластере Kubernetes
Недавно, когда я практиковал kubernetes, я обнаружил, что нет никакого документа и примера, конкретно объясняющего, как правильно использовать гари в kubernetes.
Итак, как настроить Cinder для использования в kubernetes?
2 ответа
Я провел некоторый эксперимент и решил, как настроить гари с помощью kubernetes. Просто найдите подходящий документ и поделитесь.
подготовка
- Кубернетский кластер
- среда openstack и убедитесь, что служба Cinder доступна
Фон
Из моего расследования, компонент kube-controller-manager
отвечает за загрузку плагинов объема и связанных с ним в Kubernetes. Таким образом, мы могли бы сделать доступным шлак, настроив kube-controller-manager
конфигурации.
меры
- Подготовить
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
- регулировать
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, в ваш контейнер.
верификация
Мы создадим класс хранилища и используем этот класс хранилища для динамического создания постоянного тома.
- Создайте класс хранения с именем
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
Создайте 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