Testowy klaster OKD (OpenShift)
Poniższy wpis bazuje na konfiguracji klastra przeprowadzonej wg. wpisu https://itadmin.vblog.ovh/klaster-okd-openshift-na-maszynach-wirtualnych-proxmox-opis-instalacji/ a w szczególności konfiguracji serwera NFS opisanej na stronie https://itadmin.vblog.ovh/klaster-okd-openshift-na-maszynach-wirtualnych-proxmox-przygotowanie-maszyny-storage-nfs/
Czym jest OpenShift PVC (PersistentVolumeClaim)?
W OpenShift PersistentVolumeClaim (PVC) to żądanie pamięci masowej przez użytkownika lub aplikację. Umożliwia ono dostęp do PersistentVolumes (PV), które zapewniają zasoby pamięci masowej, takie jak NFS, Ceph, AWS EBS itp. PVC abstrakcyjnie zarządzają pamięcią masową, umożliwiając użytkownikom żądanie pamięci masowej bez martwienia się o jej podstawową implementację.
Kluczowe komponenty PVC
PersistentVolume (PV): PersistentVolume to część pamięci masowej udostępniana przez administratora lub dynamicznie tworzona na podstawie klasy pamięci masowej. Reprezentuje rzeczywisty zasób pamięci masowej (np. udział NFS, cel iSCSI lub dysk pamięci masowej w chmurze).
PersistentVolumeClaim (PVC): PVC to żądanie pamięci masowej przez pod. Określa szczegóły, takie jak:
Rozmiar: wymagana ilość pamięci masowej.
Tryb dostępu: sposób dostępu do woluminu (np. ReadWriteOnce, ReadOnlyMany itd.).
Klasa pamięci masowej: określa typ pamięci masowej (np. SSD, HDD lub określone klasy pamięci masowej w chmurze).
StorageClass: określa sposób dynamicznego udostępniania pamięci masowej dla PVC.
Jak działa PVC w OpenShift
Utwórz PVC: programista tworzy PVC, aby zażądać określonej ilości pamięci masowej z określonymi trybami dostępu.
Powiąż z PV: OpenShift automatycznie dopasowuje PVC do odpowiedniego PV na podstawie rozmiaru, trybów dostępu i klasy pamięci masowej. Jeśli zostanie znaleziony pasujący PV, PVC jest z nim powiązany.
Użycie w kontenerach: PVC jest odwoływany w konfiguracji kontenera, a pamięć masowa jest montowana jako wolumin wewnątrz kontenera do użytku przez aplikację.
Tryby dostępu PVC
ReadWriteOnce Może być montowany jako do odczytu i zapisu przez pojedynczy węzeł.
ReadOnlyMany Może być montowany jako tylko do odczytu przez wiele węzłów.
ReadWriteMany Może być montowany jako do odczytu i zapisu przez wiele węzłów (nieobsługiwane przez wszystkie zaplecza pamięci masowej).
Utworzenie rejestru obrazów
Rejestr obrazów zostaje usunięty podczas instalacji. Na platformach, które nie zapewniają współdzielonej pamięci masowej obiektów, operator rejestru obrazów OpenShift uruchamia się jako Usunięty. Umożliwia to programowi openshift-installer ukończenie instalacji na tych typach platform. Po instalacji należy edytować konfigurację operatora rejestru obrazów, aby zmienić stan zarządzania z Usuniętego na Zarządzany. Po zakończeniu tej czynności należy skonfigurować pamięć masową. Więcej informacji można znaleźć tutaj https://docs.openshift.com/container-platform/4.15/registry/configuring_registry_storage/configuring-registry-storage-baremetal.html.
Opis utworzenia volumenu lvm o rozmiarze 100 GB i jego udostępnienie po stronie serwera NFS opisane jest tutaj https://itadmin.vblog.ovh/klaster-okd-openshift-na-maszynach-wirtualnych-proxmox-przygotowanie-maszyny-storage-nfs/#8-konfigurowanie-rejestru-obraz%C3%B3w-dla-klastra-okd-openshift
Przygotowujemy plik definicji nowego PV w pliku /home/bastuser/nfs-pv-registry.yaml bazując na konfiguracji naszego serwera NFS
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv-registry
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteMany
nfs:
path: /mnt/lv_registry # NFS export path
server: 192.168.40.20 # NFS server IP
persistentVolumeReclaimPolicy: Retain # Reclaim policy (Retain, Recycle, or Delete)i tworzymy na jego podstawie nowy obiekt typu pv o nazwie nfs-pv-registry
oc apply -f /home/bastuser/nfs-pv-registry.yaml
Weryfikujemy jego powstanie na klastrze
oc get pv

Teraz tworzymy pvc o nazwie nfs-pvc-registry który będzie używany bezpośrednio do przechowywania obrazów OKD (OpenShift)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc-registry
namespace: openshift-image-registry
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
oc apply -f /home/bastuser/nfs-pvc-registry.yaml
Teraz musimy skonfigurować Image Registry ustawiając ręcznie parametr pvc
oc edit configs.imageregistry.operator.openshift.io
...
spec:
storage:
pvc:
claim: nfs-pvc-registrylub dużo wygodniej używając oc patch zwracając uwagę na nazwę naszego pvc czyli w tym przypadku nfs-pvc-registry
oc patch configs.imageregistry.operator.openshift.io cluster \
--type=merge \
-p '{"spec": {"storage": {"pvc": {"claim": "nfs-pvc-registry"}}}}'Po wszystkim weryfikujemy czy pody w projekcie openshift-image-registry są poprawnie uruchomione a pvc w tym projekcie ma status Bound
oc get pods -n openshift-image-registry oc get pvc -n openshift-image-registry

oc get pod -n openshift-image-registry -l docker-registry=default oc get clusteroperator image-registry

Utworzenie PV i PVC do przechowywania danych podów
Przygotowujemy plik definicji nowego PV w pliku /home/bastuser/pv-05.yaml na podstawie konfiguracji naszego serwera NFS np. z tego opisu https://itadmin.vblog.ovh/klaster-okd-openshift-na-maszynach-wirtualnych-proxmox-przygotowanie-maszyny-storage-nfs/

apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pvc-05
spec:
capacity:
storage: 10Gi # Specify the size of the volume
accessModes:
- ReadWriteMany # Access mode (can also use ReadWriteMany or ReadOnlyMany)
nfs:
path: /mnt/lv_pvc_05 # NFS export path
server: 192.168.40.20 # NFS server IP
persistentVolumeReclaimPolicy: Retain # Reclaim policy (Retain, Recycle, or Delete)oc create -f /home/bastuser/pv-05.yaml
Weryfikujemy powstanie persistent volume
oc get pv


