Úvod
Kubernetes je jedním z nejoblíbenějších řešení orchestrace pro hostování kontejnerů v produkčním prostředí. Platforma umožňuje uživatelům automatizovat nasazení mnoha instancí aplikace a zároveň škálovat nahoru a dolů podle poptávky.
Kvůli nestálé povaze modulů Kubernetes však bylo nutné vyřešit objemy úložiště zcela novým přístupem.
Tento článek vysvětluje, co jsou trvalé svazky Kubernetes a proč jsou tak významné.
Co jsou trvalé svazky Kubernetes
Trvalé svazky Kubernetes jsou uživatelsky zřízené svazky úložiště přiřazené ke clusteru Kubernetes. Životní cyklus trvalých svazků je nezávislý na jakémkoli modulu, který jej používá. Trvalé svazky jsou tedy ideální pro případy použití, kdy potřebujete uchovávat data bez ohledu na nepředvídatelný proces životnosti modulů Kubernetes.
Bez trvalých svazků by nebylo možné udržovat služby tak běžné, jako je databáze. Kdykoli bude modul vyměněn, data získaná během životního cyklu tohoto modulu budou ztracena. Díky trvalým objemům jsou však data obsažena v konzistentním stavu.
Typy svazků Kubernetes
Abychom pochopili, co jsou trvalé svazky, musíme nejprve vysvětlit, jak se liší typy svazků. V podu Kubernetes můžete použít různé typy svazků:
- Lokální paměť uzlu (
emptyDir
ahostPath
) - Objem cloudu (např.
awsElasticBlockStore
,gcePersistentDisk
, aazureDiskVolume
) - Svazky pro sdílení souborů, jako je Network File System (
nfs
) - Systémy distribuovaných souborů (např.
cephfs
,rbd
aglusterfs
) - Speciální typy svazků, jako je
PersistentVolumeClaim
,secret
agitRepo
Oba emptyDir
a hostPath
jsou připojeny k modulu, uloženy buď v paměti RAM nebo v trvalém úložišti na disku. Protože závisí na modulu, jejich obsah je k dispozici, dokud modul běží. Pokud selže, data se ztratí.
S objemy cloudu , nfs
a PersistentVolumeClaim
, hlasitost je nezávislá a umístěná mimo modul. Ačkoli jsou v podstatě všechny navrženy tak, aby chránily data, objemy cloudu je výrazně obtížnější se s nimi manipulovat. Pro připojení modulu k poskytovateli musí uživatel znát mnoho podrobností o úložišti.
Síťové souborové systémy a trvalé svazky jsou mnohem praktičtější. Ve skutečnosti tyto dva typy svazků fungují na stejných principech.
NFS umožňuje připojit se ke svazku prostřednictvím yaml soubor. Bez modulu je obsah svazku odpojen, ale zůstává dostupný. I pro nastavení NFS však musíte odeslat Persistent Volume Claim (PVC) žádost.
Proto jsouPersistent Volume Claims základním řešením pro trvalé svazky v Kubernetes.
Co jsou trvalé objemové nároky
Trvalé nároky na svazky jsou objekty, které se připojují ke svazkům úložiště typu back-end prostřednictvím řady abstrakcí. Požadují úložné prostředky, které vaše nasazení potřebuje.
Hlavní výhodou je, že PVC jsou mnohem uživatelsky přívětivější, což umožňuje vývojářům je používat, aniž by museli znát příliš mnoho podrobností o cloudovém prostředí, ke kterému se připojují. Administrátor uvádí úplné podrobnosti nároku v PVC, ale samotný modul vyžaduje pro přístup pouze odkaz.
Proto modul využívající trvalý svazek také zahrnuje řadu abstraktních vrstev mezi ním a úložištěm.
Používání trvalých svazků
Chcete-li svázat pod s trvalým svazkem, musí obsahovat připojení svazku a požadavek trvalého svazku (PVC). Tyto nároky umožňují uživatelům připojit trvalý svazek do modulu, aniž by museli znát podrobnosti o cloudovém prostředí.
V deklaraci trvalého svazku uživatelé specifikují, jak velké úložiště chtějí mít, selektor, směrování na příslušnou PV a třídu úložiště. Třída úložiště odkazuje na typ zřizování, ať už je statické nebo dynamické.
Statické zajišťování je funkce, ve které správci využívají stávající úložná zařízení a zpřístupňují je uživatelům clusteru. Správce clusteru vytvoří několik trvalých svazků, které jsou dostupné pro spotřebu a existují v rozhraní Kubernetes API.
Dynamické zajišťování dochází, když žádný ze statických trvalých objemů neodpovídá PVC. V tomto případě je zřizování založeno na třídách úložiště, které vytvořili a nakonfigurovali správci.
Životní cyklus trvalých svazků
Jakmile smažete PVC, uvolníte PV jeho nároku. V závislosti na nastavení zásad pro navrácení bude svazek buď zachován, recyklován nebo odstraněn.
- Pokud nastavíte zásadu vrácení na zachovat , objem v úložišti zůstává i po uvolnění z reklamace.
- Případně můžete recyklovat svazek, který odstraní obsah v něm a zpřístupní jej pro jiné PVC.
- Zásady navracení musí být nakonfigurovány na smazání jakmile je odpojen od PVC, znamená to, že objem a úložiště jsou zcela odstraněny.
Jak vytvořit trvalý svazek
1. Chcete-li vytvořit trvalý svazek, začněte vytvořením .yaml soubor v editoru dle vašeho výběru. V tomto příkladu pojmenujeme soubor example-pv.yaml a upravte jej pomocí nano editoru:
nano example-pv.yaml
2. Přidejte do souboru následující obsah:
apiVersion: v1
kind: PersistentVolume
metadata:
name: [pv_name]
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
mountPath: [path of where the volume is accessible from within the container]
volumeID: [your_volume_id]
3. Nahraďte specifikace name
, storage
, mountpath
a volumeID
s vašimi respektovanými hodnotami.
4. Uložte a ukončete soubor.
5. Poté nasaďte trvalý svazek pomocí následujícího příkazu s názvem souboru .yaml, který jste vytvořili v předchozím kroku:
kubectl create -f example-pv.yaml
Jak vytvořit trvalý nárok na svazek
Stejně jako u PV vytvoříte PVC s .yaml soubor obsahující následující obsah:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: [pvc_name]
spec:
storageClassName: manual
selector:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
S přidaným obsahem uložte a ukončete soubor.
Jakmile nastavíte a nakonfigurujete trvalý svazek a nárok na trvalý svazek, můžete zadat PVC v požadovaném modulu.