Kubernetes-də avtomatik ölçmənin üç səviyyəsi: Onları necə səmərəli istifadə etmək olar

Kubernetes-də avtomatik ölçmənin üç səviyyəsi: Onları necə səmərəli istifadə etmək olar
Kubernetes-i tam mənimsəmək üçün klaster resurslarını miqyaslandırmağın müxtəlif yollarını bilməlisiniz: by sistem tərtibatçılarına görə, bu Kubernetes-in əsas vəzifələrindən biridir. Biz üfüqi və şaquli avtomiqyaslama və klaster ölçüsünü dəyişmə mexanizmlərinin yüksək səviyyəli icmalı, eləcə də onlardan səmərəli istifadə etmək üçün tövsiyələr təqdim etmişik.

Məqalə Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler və Vertical Pod Autoscaler avtomatik miqyasda tətbiq edən komanda tərəfindən tərcümə edilmişdir Mail.ru-dan Kubernetes aaS.

Ölçəkləmə haqqında düşünmək niyə vacibdir?

Kubernetes - resursların idarə edilməsi və orkestrasiyası üçün alət. Əlbətdə ki, podların yerləşdirilməsi, monitorinqi və idarə olunmasının gözəl xüsusiyyətləri ilə məşğul olmaq xoşdur (pod sorğuya cavab olaraq işə salınan konteynerlər qrupudur).

Bununla belə, aşağıdakı suallar üzərində də düşünməlisiniz:

  1. Modulları və tətbiqləri necə ölçmək olar?
  2. Konteynerləri necə işlək və səmərəli saxlamaq olar?
  3. İstifadəçilərdən gələn kod və iş yüklərindəki daimi dəyişikliklərə necə cavab vermək olar?

Resursları və performansı tarazlaşdırmaq üçün Kubernetes klasterlərini konfiqurasiya etmək çətin ola bilər və Kubernetes-in daxili işlərinə dair ekspert biliklərini tələb edir. Tətbiqinizin və ya xidmətlərinizin iş yükü gün ərzində və ya hətta bir saat ərzində dəyişə bilər, ona görə də balanslaşdırma ən yaxşı şəkildə davam edən bir proses kimi düşünülür.

Kubernetes avtomatik miqyaslama səviyyələri

Effektiv avtomatik miqyaslama iki səviyyə arasında koordinasiya tələb edir:

  1. Horizontal (Horizontal Pod Autoscaler, HPA) və şaquli avtomiqyaslayıcı (Vertical Pod Autoscaler, VPA) daxil olmaqla, pod səviyyəsi. Bu, konteynerləriniz üçün mövcud resursları genişləndirir.
  2. Klaster daxilində qovşaqların sayını artıran və ya azaldan Cluster Autoscaler (CA) tərəfindən idarə olunan klaster səviyyəsi.

Horizontal Autoscaler (HPA) modulu

Adından göründüyü kimi, HPA pod replikalarının sayını ölçür. Əksər devoplar replikaların sayını dəyişdirmək üçün tetikleyici olaraq CPU və yaddaş yükündən istifadə edirlər. Bununla belə, sistemin miqyasına əsaslanaraq mümkündür fərdi ölçüləronların birləşmə ya da hətta xarici ölçülər.

Yüksək səviyyəli HPA əməliyyat diaqramı:

  1. HPA davamlı olaraq quraşdırma zamanı göstərilən metrik dəyərləri 30 saniyəlik standart intervalla yoxlayır.
  2. HPA müəyyən edilmiş həddə çatdıqda modulların sayını artırmağa çalışır.
  3. HPA yerləşdirmə/replikasiya nəzarətçisi daxilində replikaların sayını yeniləyir.
  4. Daha sonra yerləşdirmə/replikasiya nəzarətçisi istənilən əlavə modulları yerləşdirir.

Kubernetes-də avtomatik ölçmənin üç səviyyəsi: Onları necə səmərəli istifadə etmək olar
HPA metrik həddə çatdıqda modul yerləşdirmə prosesinə başlayır

HPA istifadə edərkən aşağıdakıları nəzərə alın:

  • Standart HPA yoxlama intervalı 30 saniyədir. Bayraq tərəfindən təyin olunur horizontal-pod-autoscaler-sinxronizasiya dövrü nəzarətçi menecerində.
  • Standart nisbi səhv 10% -dir.
  • Modulların sayındakı son artımdan sonra HPA üç dəqiqə ərzində ölçülərin sabitləşməsini gözləyir. Bu interval bayraq tərəfindən təyin edilir horizontal-pod-autoscaler-upscale-gecikmə.
  • Modulların sayında son azalmadan sonra HPA sabitləşmək üçün beş dəqiqə gözləyir. Bu interval bayraq tərəfindən təyin edilir horizontal-pod-autoscaler-downscale-gecikmə.
  • HPA replikasiya nəzarətçiləri ilə deyil, yerləşdirmə obyektləri ilə daha yaxşı işləyir. Üfüqi avtomatik miqyaslama, replikasiya nəzarətçiləri ilə birbaşa manipulyasiya edən yuvarlanan yeniləmə ilə uyğun gəlmir. Yerləşdirmə ilə replikaların sayı birbaşa yerləşdirmə obyektlərindən asılıdır.

Qovşaqların şaquli avtomatik miqyası

Şaquli avtomatik miqyaslama (VPA) mövcud podlara daha çox (və ya daha az) CPU vaxtı və ya yaddaş ayırır. Vəziyyəti olan və ya vətəndaşlığı olmayan qovşaqlar üçün uyğundur, lakin əsasən statistik xidmətlər üçün nəzərdə tutulub. Bununla belə, ilkin olaraq ayrılmış resursların miqdarını avtomatik tənzimləmək lazımdırsa, vətəndaşlığı olmayan modullar üçün VPA-dan da istifadə edə bilərsiniz.

VPA həmçinin OOM (yaddaşdan kənar) hadisələrinə cavab verir. CPU vaxtının və yaddaşın dəyişdirilməsi podların yenidən işə salınmasını tələb edir. Yenidən işə salındıqda, VPA ayırma büdcəsinə hörmət edir (pods paylama büdcəsi, PDB) minimum tələb olunan modul sayına zəmanət vermək.

Siz hər bir modul üçün minimum və maksimum resursları təyin edə bilərsiniz. Beləliklə, ayrılmış yaddaşın maksimum həcmini 8 GB-a qədər məhdudlaşdıra bilərsiniz. Cari qovşaqlar hər konteynerə 8 GB-dan çox yaddaş ayıra bilmirsə, bu faydalıdır. Ətraflı spesifikasiyalar və işləmə mexanizmi burada təsvir edilmişdir rəsmi VPA wiki.

Bundan əlavə, VPA maraqlı tövsiyə funksiyasına malikdir (VPA Recommender). Tarixi ölçülərə əsaslanan ağıllı alqoritm əsasında yeni yaddaş və CPU vaxt dəyərləri təklif etmək üçün bütün modulların resurs istifadəsini və OOM hadisələrini izləyir. Bir pod sapı götürən və təklif olunan resurs dəyərlərini qaytaran bir API də var.

Qeyd etmək lazımdır ki, VPA Recommender resurs "limitini" izləmir. Bu, modulun qovşaqlar daxilində resursları inhisara alması ilə nəticələnə bilər. Böyük yaddaş və ya CPU istehlakının qarşısını almaq üçün limiti ad sahəsi səviyyəsində təyin etmək daha yaxşıdır.

Yüksək səviyyəli VPA əməliyyat sxemi:

  1. VPA davamlı olaraq quraşdırma zamanı göstərilən metrik dəyərləri 10 saniyəlik standart intervalla yoxlayır.
  2. Göstərilən həddə çatdıqda, VPA ayrılan resursların miqdarını dəyişdirməyə çalışır.
  3. VPA yerləşdirmə/replikasiya nəzarətçisi daxilində resursların sayını yeniləyir.
  4. Modullar yenidən işə salındıqda, bütün yeni resurslar yaradılmış nümunələrə tətbiq edilir.

Kubernetes-də avtomatik ölçmənin üç səviyyəsi: Onları necə səmərəli istifadə etmək olar
VPA tələb olunan miqdarda resurs əlavə edir

VPA-dan istifadə edərkən aşağıdakı məqamları yadda saxlayın:

  • Ölçəkləmə podun məcburi yenidən işə salınmasını tələb edir. Dəyişikliklərdən sonra qeyri-sabit əməliyyatın qarşısını almaq üçün bu lazımdır. Etibarlılıq üçün modullar yenidən işə salınır və yeni ayrılmış resurslar əsasında qovşaqlar arasında paylanır.
  • VPA və HPA hələ bir-biri ilə uyğun gəlmir və eyni podlarda işləyə bilməz. Əgər siz hər iki miqyaslama mexanizmini eyni klasterdə istifadə edirsinizsə, əmin olun ki, sizin parametrlər onların eyni obyektlərdə aktivləşməsinə mane olur.
  • VPA yalnız keçmiş və cari istifadəyə əsaslanan resurslar üçün konteyner sorğularını tənzimləyir. O, resursdan istifadə limitini təyin etmir. Tətbiqlərin düzgün işləməməsi və getdikcə daha çox resurs ələ keçirməyə başlaması ilə bağlı problemlər ola bilər, bu, Kubernetesin bu podu söndürməsinə səbəb olacaq.
  • VPA hələ inkişafın erkən mərhələsindədir. Yaxın gələcəkdə sistemin bəzi dəyişikliklərə məruz qala biləcəyinə hazır olun. haqqında oxuya bilərsiniz məlum məhdudiyyətlər и inkişaf planları. Beləliklə, VPA və HPA-nın birgə fəaliyyətinin həyata keçirilməsi, həmçinin modulların onlar üçün şaquli avtomatik miqyaslaşdırma siyasəti ilə birlikdə yerləşdirilməsi (məsələn, “VPA tələb olunur” xüsusi etiketi) nəzərdə tutulur.

Kubernetes klasterinin avtomatik miqyaslanması

Cluster Autoscaler (CA) gözləyən podların sayına əsasən qovşaqların sayını dəyişir. Sistem gözlənilən modulları vaxtaşırı yoxlayır - və daha çox resurs tələb olunarsa və klaster müəyyən edilmiş hədləri keçmirsə, klaster ölçüsünü artırır. CA bulud xidməti təminatçısı ilə əlaqə saxlayır, ondan əlavə qovşaqları tələb edir və ya boş olanları buraxır. CA-nın ilk ümumi versiyası Kubernetes 1.8-də təqdim edildi.

SA əməliyyatının yüksək səviyyəli sxemi:

  1. CA gözlənilən modulları 10 saniyəlik standart intervalla yoxlayır.
  2. Əgər bir və ya bir neçə qovşaq gözləmə vəziyyətindədirsə, çünki klaster onları ayırmaq üçün kifayət qədər mövcud resurslara malik deyilsə, o, bir və ya bir neçə əlavə qovşaq təmin etməyə çalışır.
  3. Bulud xidməti provayderi tələb olunan qovşağı ayırdıqda, o, klasterə qoşulur və podlara xidmət etməyə hazırdır.
  4. Kubernetes planlaşdırıcısı gözlənilən podları yeni qovşaqda paylayır. Bundan sonra bəzi modullar hələ də gözləmə vəziyyətində qalırsa, proses təkrarlanır və klasterə yeni qovşaqlar əlavə edilir.

Kubernetes-də avtomatik ölçmənin üç səviyyəsi: Onları necə səmərəli istifadə etmək olar
Buludda klaster qovşaqlarının avtomatik təmin edilməsi

CA-dan istifadə edərkən aşağıdakıları nəzərə alın:

  • CA CPU yükündən asılı olmayaraq klasterdəki bütün podların işləməsi üçün yer olmasını təmin edir. O, həmçinin klasterdə lazımsız qovşaqların olmamasını təmin etməyə çalışır.
  • CA təqribən 30 saniyədən sonra ölçmə ehtiyacını qeyd edir.
  • Bir node artıq lazım olmadıqda, CA sistemin miqyasını genişləndirməzdən əvvəl 10 dəqiqə gözləməyi tələb edir.
  • Avtomatik ölçmə sistemində genişləndiricilər konsepsiyası var. Bunlar yeni qovşaqların əlavə ediləcəyi qovşaqlar qrupunu seçmək üçün müxtəlif strategiyalardır.
  • Seçimdən məsuliyyətlə istifadə edin cluster-autoscaler.kubernetes.io/safe-to-evict (doğru). Çoxlu podlar quraşdırsanız və ya onların bir çoxu bütün qovşaqlara səpələnibsə, siz klasteri genişləndirmək qabiliyyətini əhəmiyyətli dərəcədə itirəcəksiniz.
  • İstifadə edin PodDisruptionBudgetspodların silinməsinin qarşısını almaq üçün tətbiqinizin hissələrinin tamamilə qırılmasına səbəb ola bilər.

Kubernetes avtoskalyerlərinin bir-biri ilə necə qarşılıqlı əlaqəsi

Mükəmməl harmoniya üçün avtomiqyaslama həm pod səviyyəsində (HPA/VPA), həm də klaster səviyyəsində tətbiq edilməlidir. Onlar bir-biri ilə nisbətən sadə şəkildə qarşılıqlı əlaqə qururlar:

  1. HPA və ya VPA pod replikalarını və ya mövcud podlara ayrılmış resursları yeniləyir.
  2. Planlaşdırılan miqyaslama üçün kifayət qədər qovşaq yoxdursa, CA gözləmə vəziyyətində podların mövcudluğunu qeyd edir.
  3. CA yeni qovşaqlar ayırır.
  4. Modullar yeni qovşaqlara paylanır.

Kubernetes-də avtomatik ölçmənin üç səviyyəsi: Onları necə səmərəli istifadə etmək olar
Birgə Kubernetes miqyasını genişləndirmə sistemi

Kubernetes avtomatik miqyasında ümumi səhvlər

Avtomatik ölçmə tətbiq etməyə çalışarkən inkişaf etdiricilərin qarşılaşdığı bir neçə ümumi problem var.

HPA və VPA ölçülərdən və bəzi tarixi məlumatlardan asılıdır. Əgər kifayət qədər resurslar ayrılmasa, modullar minimuma endiriləcək və ölçüləri yarada bilməyəcək. Bu halda, avtomatik miqyaslama heç vaxt baş verməyəcək.

Ölçəkləmə əməliyyatının özü zamana həssasdır. Biz modulların və klasterin tez bir zamanda genişlənməsini istəyirik - istifadəçilər hər hansı bir problem və ya uğursuzluq görməzdən əvvəl. Buna görə də, podlar və klaster üçün orta miqyaslama müddəti nəzərə alınmalıdır.

İdeal ssenari - 4 dəqiqə:

  1. 30 saniyə. Hədəf ölçülərini yeniləyin: 30−60 saniyə.
  2. 30 saniyə. HPA metrik dəyərləri yoxlayır: 30 saniyə.
  3. 2 saniyədən az. Podlar yaradılır və gözləmə vəziyyətinə keçir: 1 saniyə.
  4. 2 saniyədən az. CA gözləyən modulları görür və təminat qovşaqlarına zənglər göndərir: 1 saniyə.
  5. 3 dəqiqə. Bulud provayderi qovşaqları ayırır. K8s hazır olana qədər gözləyir: 10 dəqiqəyə qədər (bir neçə amildən asılı olaraq).

Ən pis vəziyyət (daha real) ssenari - 12 dəqiqə:

  1. 30 saniyə. Hədəf ölçülərini yeniləyin.
  2. 30 saniyə. HPA metrik dəyərləri yoxlayır.
  3. 2 saniyədən az. Podlar yaradılır və gözləmə vəziyyətinə keçir.
  4. 2 saniyədən az. CA gözləyən modulları görür və qovşaqları təmin etmək üçün zənglər edir.
  5. 10 dəqiqə. Bulud provayderi qovşaqları ayırır. K8s hazır olana qədər gözləyir. Gözləmə müddəti satıcı gecikməsi, OS gecikməsi və dəstək alətləri kimi bir neçə amildən asılıdır.

Bulud provayderlərinin miqyaslaşdırma mexanizmlərini bizim CA ilə qarışdırmayın. Sonuncu Kubernetes klasterində işləyir, bulud provayderi mühərriki isə qovşaq paylama əsasında işləyir. Qovşaqlarınız və ya tətbiqinizlə nə baş verdiyini bilmir. Bu sistemlər paralel işləyir.

Kubernetes-də miqyaslaşdırmanı necə idarə etmək olar

  1. Kubernetes resurs idarəetmə və orkestrasiya vasitəsidir. Podların və klaster resurslarının idarə edilməsi əməliyyatları Kubernetes-in mənimsənilməsində əsas mərhələdir.
  2. HPA və VPA nəzərə alınmaqla pod miqyaslılığının məntiqini anlayın.
  3. CA yalnız qablarınızın və qablarınızın ehtiyaclarını yaxşı başa düşsəniz istifadə edilməlidir.
  4. Klasteri optimal şəkildə konfiqurasiya etmək üçün müxtəlif miqyaslama sistemlərinin birlikdə necə işlədiyini başa düşməlisiniz.
  5. Ölçmə vaxtını qiymətləndirərkən, ən pis və ən yaxşı vəziyyət ssenarilərini nəzərə alın.

Mənbə: www.habr.com

Добавить комментарий