Sobes.tech
Middle+

Hogyan történik a tartós volumen elosztása különböző zónák között, hogy biztosítsa a hozzáférést a tároláshoz különböző domainek és zónák számára?

sobes.tech MI

Válasz az MI-től

Amikor Kubernetes-t és nyilvános felhőket (például AWS, GCP, Azure) használunk, a tartós tárolók (PV) elosztása a felhős szolgáltató és a PV-kötés szintjén történik:

  1. PV létrehozása: A tartós tároló (PersistentVolume) az adminisztrátor vagy automatikusan a StorageClass segítségével jön létre. A létrehozás során a tárolási paramétereket adjuk meg: típus (EBS, GCE Persistent Disk, Azure Disk), méret, hozzáférési mód.
  2. Zóna/Regionális tudatosság: A StorageClass bizonyos típusú tárolásokhoz a felhőben támogatja a rendelkezésre állási zónákat. Ilyen StorageClass esetén a PV létrehozásakor a felhős szolgáltató elhelyezheti a fizikai tároló erőforrást egy adott zónában, vagy zónák közötti redundanciát biztosíthat (a tárolás típusától és beállításaitól függően). A volumeBindingMode: WaitForFirstConsumer paraméterrel a PV kötése késleltethető, amíg az első pod, amely ezt a PV-t használja, egy adott zónában nem kerül ütemezésre.
  3. PersistentVolumeClaim (PVC): A felhasználó egy PVC-t hoz létre meghatározott mérettel és jellemzőkkel.
  4. PV és PVC összekapcsolása: A Kubernetes összekapcsolja a PVC-t a megfelelő PV-vel. Ha a WaitForFirstConsumer van használatban, akkor a kötés akkor történik meg, amikor az első pod, amely ezt a PVC-t használja, egy adott node-ra kerül ütemezésre.
  5. Pod elhelyezése a node-on: A Kubernetes ütemezője (Scheduler) meghatározza, hogy melyik node-on fusson a pod. Figyelembe veszi a különböző kritériumokat, beleértve a erőforrásigényeket, affinity/anti-affinity, Taints/Tolerations.
  6. PV kötése a node-hoz: Ha a PVC-t használó pod egy adott zónában kerül ütemezésre, a Kubernetes (Volume Controller és a felhős szolgáltató) biztosítja, hogy a PV elérhető legyen (csatolva legyen) erre a node-ra. A felhős diszkek általában ugyanabban a zónában lévő virtuális gépekhez csatlakoznak. A Kubernetes figyelembe veszi a PV zónális tulajdonságát a podok ütemezésekor, hogy elkerülje a PV-k egyik zónából a másikba történő csatolását.

Zóna-tudatos StorageClass példa:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: regional-storage
provisioner: kubernetes.io/aws-ebs # vagy gce-pd, microsoft.com/azure-disk stb.
parameters:
 type: gp2 # vagy ssd, pd-standard stb.
 fsType: ext4
 volumeBindingMode: WaitForFirstConsumer # Fontos paraméter zónás ütemezéshez
reclaimPolicy: Retain
allowVolumeExpansion: true

A volumeBindingMode: WaitForFirstConsumer használatakor a Kubernetes megvárja, amíg a pod egy adott zónában nem kerül ütemezésre (pl., us-east-1a), mielőtt véglegesen összekapcsolná a PVC-t a PV-vel és létrehozná a megfelelő felhős diszket ebben a zónában.

A tartományok (tágabb értelemben, mint alkalmazások vagy csapatok logikai elkülönítése) elosztása nem a fizikai PV-k elosztásán keresztül történik, hanem a RBAC (Role-Based Access Control), erőforrás kvóták (Resource Quotas) és a névterek (Namespaces) mechanizmusával:

  • Namespaces: Különböző tartományok/csapatok saját névtereket használhatnak az erőforrások izolálására, beleértve a PVC-ket és podokat.
  • RBAC: Meghatározza, hogy mely felhasználók vagy csoportok rendelkeznek jogokkal PVC-k és más erőforrások létrehozására, olvasására, frissítésére vagy törlésére adott névtereken belül.
  • Resource Quotas: Korlátozzák az adott névtérben felhasználható erőforrások összvolumenét (beleértve a tartós tárolókapacitást), így biztosítva az "igazságos használatot" a "tartományok" között.