Ինչպես է տեղի ունենում persistent volume-ի բաշխումը տարբեր գոտիներում՝ ապահովելու պահեստավորման հասանելիությունը տարբեր դոմենների և գոտիների համար։
sobes.tech AI
Պատասխան AI-ից
Երբ օգտագործում եք Kubernetes և հանրային ամպային ծառայություններ (օրինակ, AWS, GCP, Azure), persistent volumes (PV) բաշխումը տարածքների միջև կատարվում է ամպային ծառայողի մակարդակում և PV-ների կապակցման ժամանակ:
- PV-ի ստեղծում: Persistent volume (PersistentVolume) ստեղծվում է ադմինիստրատորի կողմից կամ ավտոմատ կերպով StorageClass-ի միջոցով: Ստեղծման ժամանակ նշվում են պահեստավորման պարամետրեր՝ տեսակը (EBS, GCE Persistent Disk, Azure Disk), չափը, մուտքի ռեժիմը:
- Տարածաշրջանային/զոնային գիտակցություն: Cloud-ում որոշ տեսակի պահեստավորման համար StorageClass-ը կարող է կազմաձևվել՝ աջակցելով հասանելիության զոնաներին: Այդպիսի StorageClass-ի միջոցով PV ստեղծելիս, ամպային ծառայողը կարող է ֆիզիկական պահեստային ռեսուրսը տեղադրել որոշակի զոնայում կամ դարձնել զոնայական-ռեզերվային (վերաբերում է պահեստավորման տեսակին և կարգավորումներին):
volumeBindingMode: WaitForFirstConsumerպարամետրը թույլ է տալիս հետաձգել PV-ի կապը մինչև առաջին pod-ի պլանավորումը տվյալ զոնայում: - PersistentVolumeClaim (PVC): Օգտագործողը ստեղծում է PVC՝ պահանջելով որոշակի ծավալ և հատկանիշներ:
- PV-ի կապակցում PVC-ի հետ: Kubernetes-ը կապում է PVC-ն համապատասխան PV-ի հետ: Եթե օգտագործվել է
WaitForFirstConsumer, կապը կատարվում է, երբ առաջին pod-ը, որը օգտագործում է այդ PVC-ն, պլանավորվում է տվյալ զոնայում: - Pod-ի տեղաշարժը զոնայում: Kubernetes-ի պլանավորիչը որոշում է, թե որ նոդում է գործարկվելու pod-ը: Այս ժամանակ հաշվի են առնվում տարբեր չափանիշներ՝ ռեսուրսների պահանջներ, ֆինիթի/անտիֆինիթի, Taints/Tolerations:
- 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: սահմանափակում է յուրաքանչյուր նամական տարածքում օգտագործվող ընդհանուր ռեսուրսների քանակը՝ ներառյալ մշտական պահեստավորման ծավալը՝ ապահովելով «արդար օգտագործում» «դոմենների» միջև։