Ako sa rozdeľuje persistentný objem medzi rôzne zóny, aby sa zabezpečil prístup k úložisku pre rôzne domény a zóny?
sobes.tech AI
Odpoveď od AI
Pri použití Kubernetes a verejných cloudových služieb (napríklad AWS, GCP, Azure) je rozdelenie persistentných objemov (PV) podľa zón vykonávané na úrovni poskytovateľa cloudových služieb a pri viazaní PV na uzly:
- Vytvorenie PV: Persistentný objem (PersistentVolume) je vytvorený administrátorom alebo automaticky pomocou StorageClass. Pri jeho vytvorení sa zadávajú parametre úložiska: typ (EBS, GCE Persistent Disk, Azure Disk), veľkosť, režim prístupu.
- Zónová/regionálna informovanosť: StorageClass pre určité typy úložísk v cloude môže byť nakonfigurovaný s podporou dostupnostných zón. Pri vytváraní PV cez takýto StorageClass môže poskytovateľ cloudových služieb umiestniť fyzický zdroj úložiska (napríklad disk) do určitej zóny alebo ho spraviť zónovo-redundantným (v závislosti od typu úložiska a nastavení). Použitie StorageClass s parametrom
volumeBindingMode: WaitForFirstConsumerumožňuje odložiť viazanie PV k PVR, kým prvý pod, ktorý tento PVR používa, nebude naplánovaný na uzol v konkrétnej zóne. - PersistentVolumeClaim (PVC): Používateľ vytvorí PersistentVolumeClaim (PVC) s požiadavkou na určitý objem a vlastnosti.
- Viazanie PV k PVC: Kubernetes spojí PVC s vhodným PV. Ak bol použitý
WaitForFirstConsumer, viazanie sa vykoná, keď je prvý pod, ktorý používa tento PVC, naplánovaný na uzol. - Umiestnenie podu na uzol: Plánovač Kubernetes (Scheduler) určuje, na ktorom uzle bude pod spustený. Pri tom sa zohľadňujú rôzne kritériá, vrátane požiadaviek na zdroje, affinity/anti-affinity, Taints/Tolerations.
- Viazanie PV na uzol: Ak je pod, ktorý používa PVC (ktorý je sám prepojený s PV), naplánovaný na uzol v určitej zóne, Kubernetes (Volume Controller a cloudový poskytovateľ) zabezpečí, že PV bude dostupný (pripojený) tomuto uzlu. Cloudové disky sa zvyčajne pripájajú k virtuálnym strojom v rovnakej zóne. Kubernetes zohľadňuje zónovosť PV pri plánovaní podov, aby sa predišlo pokusom o pripojenie PV z jednej zóny k uzlu v inej.
Príklad StorageClass s režimom zónovej informovanosti:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: regional-storage
provisioner: kubernetes.io/aws-ebs # alebo gce-pd, microsoft.com/azure-disk atď.
parameters:
type: gp2 # alebo ssd, pd-standard atď.
fsType: ext4
volumeBindingMode: WaitForFirstConsumer # Dôležitý parameter pre zónové plánovanie
reclaimPolicy: Retain
allowVolumeExpansion: true
Pri použití volumeBindingMode: WaitForFirstConsumer Kubernetes čaká, kým nie je pod naplánovaný na uzol v konkrétnej zóne (napríklad us-east-1a), predtým než definitívne viaže PVC na PV a vytvorí zodpovedajúci cloudový disk v tejto zóne.
Rozdelenie podľa domenov (vo všeobecnom zmysle, ako logické rozdelenie aplikácií alebo tímov) sa dosahuje nie cez rozdelenie fyzických PV, ale cez mechanizmy RBAC (Role-Based Access Control), kvóty zdrojov (Resource Quotas) a izoláciu v rámci priestorov názvov (Namespaces):
- Namespaces: Rôzne domény/tímy môžu používať vlastné priestory názvov na izoláciu zdrojov, vrátane PVC a podov.
- RBAC: Určuje, ktorí používatelia alebo skupiny majú právo vytvárať, čítať, aktualizovať alebo odstraňovať PVC a iné zdroje v určitých priestoroch názvov.
- Resource Quotas: Obmedzujú celkové množstvo zdrojov (vrátane objemu trvalého úložiska), ktoré môžu byť použité v každom priestore názvov, čím zabezpečujú spravodlivé využívanie medzi "doménami".