Динамический провижининг Persistent Volumes в bare-metal инсталляциях kubernetes
OpenEBS
Имеет под капотом несколько различных движков, которые обеспечивают различный уровень производительности/отказоустойчивости. Некоторые движки умеют репликацию, но также есть простой DynamicLocal PV.
OpenEBS
Local Persistence Volume Static Provisioner
https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner
git clone --depth=1 https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner.git kubectl create ns pv-provisioner helm upgrade --install -n pv-provisioner local ./sig-storage-local-static-provisioner/helm/provisioner \ --set common.mountDevVolume="false" \ --set classes[0].name="rmq" \ --set classes[0].hostDir="/var/lib/rmq" \ --set classes[0].volumeMode="Filesystem" \ --set classes[0].storageClass="true" \ --set classes[1].name="default" \ --set classes[1].hostDir="/var/lib/kubernetes_volumes" \ --set classes[1].volumeMode="Filesystem" \ --set classes[1].storageClass.isDefaultClass="true" \ --set classes[2].name="redis" \ --set classes[2].hostDir="/var/lib/redis" \ --set classes[2].volumeMode="Filesystem" \ --set classes[2].storageClass="true"
Как Local Static Volumes Provisioner работает
Local Static Volumes Provisioner следит за указанной в конфиге директорией на хостах кластера и все смонтированные в эти дииректории блочные устройства представляет в кубере как PV.
То есть, чтобы сделать PV нужно:
- Создать на ноде LogicalVolume
- Отформатировать его в ext4
- Смонтировать в заданной директории
Для данных на нодах есть пустой диск /dev/sdb.
Подотовим его:
sudo yum install gdisk sudo sgdisk -p /dev/sdb sudo sgdisk -n 1:2048:0 /dev/sdb sudo sgdisk -t 1:8E00 /dev/sdb sudo pvcreate /dev/sdb1
И создадим VolumeGroup - data
sudo vgcreate data /dev/sdb1
Теперь можно создавать LogicalVolumes и монтировать их:
sudo lvcreate -L6.3G -nelk-master-0 data sudo mkfs.ext4 /dev/data/elk-master-0 sudo mkdir /var/lib/kubernetes_volumes/elk-master-0 sudo mount /dev/data/elk-master-0 /var/lib/kubernetes_volumes/elk-master-0
Discussion