Table of Contents

Динамический провижининг Persistent Volumes в bare-metal инсталляциях kubernetes

OpenEBS

Имеет под капотом несколько различных движков, которые обеспечивают различный уровень производительности/отказоустойчивости. Некоторые движки умеют репликацию, но также есть простой DynamicLocal PV. OpenEBS

https://habr.com/ru/company/flant/blog/503712/

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 нужно:

Для данных на нодах есть пустой диск /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