Недавно, занимаясь кубернетами, я обнаружил, что нет документа и примера, конкретно объясняющего, как правильно использовать золу в кубернетах.
Итак, как настроить использование cinder в кубернетах?
Недавно, занимаясь кубернетами, я обнаружил, что нет документа и примера, конкретно объясняющего, как правильно использовать золу в кубернетах.
Итак, как настроить использование cinder в кубернетах?
Я провел небольшой эксперимент и придумал, как настроить cinder с кубернетами. Просто найдите подходящий документ и поделитесь им.
Подготовка
Фон
Согласно моему расследованию, компонент kube-controller-manager
отвечает за загрузку подключаемых модулей тома и связанных с Kubernetes. Таким образом, мы могли сделать cinder доступным, настроив kube-controller-manager
конфигурацию.
Шаги
cloud.conf
файл с вашими кредитами openstackПодготовьте свои кредиты openstack и сохраните их как файл, например /etc/kubernetes/cloud.conf
в панели управления kubernetes, где находится 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 в свой контейнер.
Подтверждение
Мы создадим класс хранения и будем использовать этот класс хранения для динамического создания постоянного тома.
standard
:demo-sc.yml:
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
demo-pvc.yml:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cinder-claim
annotations:
volume.beta.kubernetes.io/storage-class: "standard"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Создание PVC от 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