Middle+
როგორ ხდება მუდმივი მოცულობის განაწილება სხვადასხვა ზონებში, რათა უზრუნველყოს შენახვის წვდომა სხვადასხვა დომენებისა და ზონებისთვის?
sobes.tech AI
პასუხი AI-სგან
Kubernetes და საჯარო ღრუბლოვანი სერვისების (მაგალითად, AWS, GCP, Azure) გამოყენებისას, persistent volumes (PV) განაწილება ზონებში ხორციელდება ღრუბლოვანი პროვაიდერის და PV-ს კავშირზე:
- PV-ის შექმნა: Persistent volume (PersistentVolume) ქმნის ადმინისტრატორი ან ავტომატურად StorageClass-ის მეშვეობით. მისი შექმნისას მითითებულია შენახვის პარამეტრები: ტიპი (EBS, GCE Persistent Disk, Azure Disk), ზომა, წვდომის რეჟიმი.
- Zone/Region Awareness: StorageClass-ი გარკვეული ტიპის შენახვისთვის ღრუბლში შეიძლება იყოს კონფიგურირებული ზონების მხარდაჭერით (Availability Zones). PV-ის შექმნისას ასეთი StorageClass-ის გამოყენებით, ღრუბლოვანი პროვაიდერი შეიძლება განთავსდეს ფიზიკური რესურსი კონკრეტულ ზონაში ან გახდეს ზონალურად-რეზისტენტული (შენახვის ტიპისა და კონფიგურაციის მიხედვით).
volumeBindingMode: WaitForFirstConsumerპარამეტრის გამოყენება საშუალებას აძლევს, რომ PV-ის binding-ის გადადება მოხდეს, სანამ პირველი პოდი, რომელიც ამ PVR-ს იყენებს, კონკრეტულ ზონაში განთავსდება. - PersistentVolumeClaim (PVC): მომხმარებელი ქმნის PersistentVolumeClaim-ს მოთხოვნით კონკრეტული მოცულობის და მახასიათებლების.
- PV-ის დაკავშირება PVC-სთან: Kubernetes აკავშირებს PVC-ს შესაბამის PV-სთან. თუ გამოიყენებოდა
WaitForFirstConsumer, დაკავშირება ხდება, როდესაც პირველი პოდი, რომელიც ამ PVC-ს იყენებს, განთავსდება ზონაში. - პოდის განთავსება ზონაში: Kubernetes-ის სქედულატორი (Scheduler) განსაზღვრავს, რომელ ზონაში განთავსდება პოდი. ეს პროცესი მოიცავს სხვადასხვა კრიტერიუმებს, მათ შორის რესურსების მოთხოვნებს, აინფინიტის/ანტი-აინფინიტის პოლიტიკას, Taints/Tolerations-ს.
- PV-ის დაკავშირება ზონასთან: თუ პოდი, რომელიც იყენებს PVC-ს (რომელიც თავის მხრივ დაკავშირებულია PV-ს), განთავსდება ზონაში, Kubernetes (ძირითადად Volume Controller და ღრუბლოვანი პროვაიდერი) უზრუნველყოფს, რომ PV იქნება ხელმისაწვდომი (მონტაჟი) ამ ზონაში. ღრუბლოვანი დისკები ჩვეულებრივ უკავშირდებიან ვირტუალურ მანქანებს იმავე ზონაში. Kubernetes-ის ზონალურობა განიხილება, როდესაც სქედულატორი ადგენს პოდებს, რათა თავიდან აიცილოს PV-ის მონტაჟი ერთ ზონაში, ხოლო ზონიდან სხვა ზონაში მდებარე ნოდზე.
StorageClass-ის მაგალითი ზონალ-ცნობადი რეჟიმით:
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 ელოდება, სანამ პოდი განთავსდება ზონაში (მაგალითად, us-east-1a), სანამ საბოლოოდ არ დაუკავშირებს PVC-ს PV-სთან და არ შექმნის შესაბამის ღრუბლოვან დისკს ამ ზონაში.
დომენების (მოკლედ, როგორც ლოგიკური განყოფილება აპლიკაციების ან გუნდების) განაწილება არ ხდება ფიზიკური PV-ების განაწილებით, არამედ RBAC-ის (Role-Based Access Control), რესურსების კვოტების (Resource Quotas) და სივრცეების (Namespaces) მეშვეობით:
- Namespaces: სხვადასხვა დომენები/გუნდი იყენებს საკუთარი სივრცეების გამოყენებას რესურსების, მათ შორის PVC და პოდების, იზოლაციისთვის.
- RBAC: განსაზღვრავს, რომელი მომხმარებლები ან ჯგუფები имеют უფლება შექმნან, წაიკითხონ, განაახლონ ან წაშალონ PVC და სხვა რესურსები კონკრეტულ სივრცეებში.
- Resource Quotas: აკონტროლებს საერთო რესურსების რაოდენობას (შეიცვლით მუდმივი შენახვის მოცულობას), რომელიც შეიძლება გამოყენებულ იქნას თითოეულ სივრცეში, უზრუნველყოფს სამართლიან გამოყენებას "დომენებს" შორის.