Sobes.tech
Middle+

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:

  1. 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.
  2. 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: WaitForFirstConsumer umožň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.
  3. PersistentVolumeClaim (PVC): Používateľ vytvorí PersistentVolumeClaim (PVC) s požiadavkou na určitý objem a vlastnosti.
  4. 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.
  5. 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.
  6. 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".