Kā notiek pastāvīgā apjoma sadale pa dažādām zonām, lai nodrošinātu piekļuvi glabāšanai dažādām domēnām un zonām?
sobes.tech AI
Atbilde no AI
Izmantojot Kubernetes un publiskās mākoņpakalpojumu sniedzējus (piemēram, AWS, GCP, Azure), pastāvīgie diski (PV) tiek sadalīti zonās atbilstoši mākoņpakalpojumu sniedzējam un PV piesaistīšanai pie mezgliem:
- PV izveide: Pastāvīgais disks (PersistentVolume) tiek izveidots administratora vai automātiski, izmantojot StorageClass. Tā izveides laikā tiek norādīti glabāšanas parametri: tips (EBS, GCE Persistent Disk, Azure Disk), izmērs, piekļuves režīms.
- Zonas/Regiones apzināšanās: StorageClass var tikt konfigurēts konkrētiem mākoņa glabāšanas veidiem ar pieejamības zonu atbalstu. Izveidojot PV ar šādu StorageClass, mākoņa pakalpojumu sniedzējs var izvietot fizisko glabāšanas resursu (piemēram, disku) noteiktā zonā vai padarīt to zonāli rezistentu (atkarībā no glabāšanas veida un iestatījumiem). Ar
volumeBindingMode: WaitForFirstConsumerparametrs PV piesaisti var atlikt līdz brīdim, kad pirmais pods, kas izmanto šo PVR, tiks plānots konkrētā zonā. - PersistentVolumeClaim (PVC): Lietotājs izveido PVC ar prasību par noteiktu apjomu un īpašībām.
- PV piesaiste PVC: Kubernetes sasaista PVC ar atbilstošo PV. Ja tika izmantots
WaitForFirstConsumer, piesaiste notiek, kad pirmais pods, kas izmanto šo PVC, tiek plānots uz mezgla. - Pod izvietošana uz mezgla: Kubernetes plānotājs (Scheduler) nosaka, kurā zonā tiks palaists pods. Tas ņem vērā dažādus kritērijus, tostarp resursu prasības, affinitātes/anti-affinitātes politiku, Taints/Tolerations.
- PV piesaiste mezglam: Ja pods, kas izmanto PVC (kas ir saistīts ar PV), tiek plānots uz mezgla konkrētā zonā, Kubernetes (īpaši Volume Controller un mākoņa pakalpojumu sniedzējs) nodrošina, ka PV būs pieejams (montēts) šim mezglam. Mākoņa diski parasti tiek piesaistīti tam pašam zonai virtuālajās mašīnās. Kubernetes ņem vērā PV zonu, plānojot podus, lai izvairītos no mēģinājumiem montēt PV no citas zonas uz mezgla, kas atrodas citā zonā.
StorageClass ar zonu apzināšanās režīmu piemērs:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: regional-storage
provisioner: kubernetes.io/aws-ebs # vai gce-pd, microsoft.com/azure-disk utt.
parameters:
type: gp2 # vai ssd, pd-standard utt.
fsType: ext4
volumeBindingMode: WaitForFirstConsumer # svarīgs parametrs zonu plānošanai
reclaimPolicy: Retain
allowVolumeExpansion: true
Izmantojot volumeBindingMode: WaitForFirstConsumer, Kubernetes gaida, kamēr pods tiks plānots uz mezgla konkrētā zonā (piemēram, us-east-1a), pirms galīgi piesaistīt PVC ar PV un izveidot atbilstošo mākoņa disku šajā zonā.
Domenes (plašākā nozīmē, kā loģiska sadalījuma veids starp lietojumprogrammām vai komandām) sadalījums netiek panākts ar fizisko PV sadalījumu, bet ar RBAC (Role-Based Access Control), resursu kvotām (Resource Quotas) un izolāciju namespaces līmenī:
- Namespaces: Dažādas domēni/komandas var izmantot savus namespace'us resursu izolācijai, tostarp PVC un podus.
- RBAC: Nosaka, kuri lietotāji vai grupas var izveidot, lasīt, atjaunināt vai dzēst PVC un citus resursus noteiktos namespace'os.
- Resource Quotas: Ierobežo kopējo resursu daudzumu (ieskaitot pastāvīgās glabāšanas apjomu), kas var tikt izmantots katrā namespace, nodrošinot godīgu sadali starp "domēniem".