Sobes.tech
Middle+

Ինչպես է տեղի ունենում persistent volume-ի բաշխումը տարբեր գոտիներում՝ ապահովելու պահեստավորման հասանելիությունը տարբեր դոմենների և գոտիների համար։

sobes.tech AI

Պատասխան AI-ից

Երբ օգտագործում եք Kubernetes և հանրային ամպային ծառայություններ (օրինակ, AWS, GCP, Azure), persistent volumes (PV) բաշխումը տարածքների միջև կատարվում է ամպային ծառայողի մակարդակում և PV-ների կապակցման ժամանակ:

  1. PV-ի ստեղծում: Persistent volume (PersistentVolume) ստեղծվում է ադմինիստրատորի կողմից կամ ավտոմատ կերպով StorageClass-ի միջոցով: Ստեղծման ժամանակ նշվում են պահեստավորման պարամետրեր՝ տեսակը (EBS, GCE Persistent Disk, Azure Disk), չափը, մուտքի ռեժիմը:
  2. Տարածաշրջանային/զոնային գիտակցություն: Cloud-ում որոշ տեսակի պահեստավորման համար StorageClass-ը կարող է կազմաձևվել՝ աջակցելով հասանելիության զոնաներին: Այդպիսի StorageClass-ի միջոցով PV ստեղծելիս, ամպային ծառայողը կարող է ֆիզիկական պահեստային ռեսուրսը տեղադրել որոշակի զոնայում կամ դարձնել զոնայական-ռեզերվային (վերաբերում է պահեստավորման տեսակին և կարգավորումներին): volumeBindingMode: WaitForFirstConsumer պարամետրը թույլ է տալիս հետաձգել PV-ի կապը մինչև առաջին pod-ի պլանավորումը տվյալ զոնայում:
  3. PersistentVolumeClaim (PVC): Օգտագործողը ստեղծում է PVC՝ պահանջելով որոշակի ծավալ և հատկանիշներ:
  4. PV-ի կապակցում PVC-ի հետ: Kubernetes-ը կապում է PVC-ն համապատասխան PV-ի հետ: Եթե օգտագործվել է WaitForFirstConsumer, կապը կատարվում է, երբ առաջին pod-ը, որը օգտագործում է այդ PVC-ն, պլանավորվում է տվյալ զոնայում:
  5. Pod-ի տեղաշարժը զոնայում: Kubernetes-ի պլանավորիչը որոշում է, թե որ նոդում է գործարկվելու pod-ը: Այս ժամանակ հաշվի են առնվում տարբեր չափանիշներ՝ ռեսուրսների պահանջներ, ֆինիթի/անտիֆինիթի, Taints/Tolerations:
  6. PV-ի կապը նոդի հետ: Եթե pod-ը, որը օգտագործում է PVC-ն (որը կապված է PV-ի հետ), պլանավորվում է տվյալ զոնայի նոդում, Kubernetes-ը (Volume Controller և ամպային ծառայողը) ապահովում է, որ PV-ն հասանելի լինի (մոնտաժված) այդ նոդին: Cloud-դիսքերը սովորաբար միանում են նույն զոնայի վիրտուալ մեքենաներին:

Օրինակ StorageClass՝ զոնան-aware ռեժիմով:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: regional-storage
provisioner: kubernetes.io/aws-ebs # կամ gce-pd, microsoft.com/azure-disk և այլն
parameters:
 type: gp2 # կամ ssd, pd-standard և այլն
 fsType: ext4
 volumeBindingMode: WaitForFirstConsumer # Զոնանային պլանավորման կարևոր պարամետր
reclaimPolicy: Retain
allowVolumeExpansion: true

Եթե օգտագործվում է volumeBindingMode: WaitForFirstConsumer, Kubernetes սպասում է մինչև pod-ը պլանավորվի նոդում տվյալ զոնայում (օրինակ՝ us-east-1a), նախքան վերջնականապես կապել PVC-ն PV-ի հետ և ստեղծել համապատասխան ամպային диск:

Տարածաշրջանների բաշխում (լայն իմաստով՝ որպես կիրառումների կամ թիմերի տրամաբանական բաժանում) իրականացնում է ոչ ֆիզիկական PV-ների բաշխում, այլ RBAC (Role-Based Access Control), ռեսուրսային քվոտաներ (Resource Quotas) և նամական տարածքների (Namespaces) մեխանիզմներով:

  • Namespaces: Տարբեր դոմեններ/թիմեր կարող են օգտագործել իրենց սեփական նամական տարածքները՝ ռեսուրսների, այդ թվում PVC և pod-ների համար՝ մեկուսացման համար:
  • RBAC: սահմանում է, թե որ օգտվողները կամ խմբերը կարող են ստեղծել, կարդալ, թարմացնել կամ ջնջել PVC և այլ ռեսուրսներ որոշ նամական տարածքներում:
  • Resource Quotas: սահմանափակում է յուրաքանչյուր նամական տարածքում օգտագործվող ընդհանուր ռեսուրսների քանակը՝ ներառյալ մշտական պահեստավորման ծավալը՝ ապահովելով «արդար օգտագործում» «դոմենների» միջև։