Ən yaxşı 10 Kubernetes fəndləri və məsləhətləri

Ən yaxşı 10 Kubernetes fəndləri və məsləhətləri

İnternetdə çoxlu istinad ədəbiyyatı var, lakin bəzən ən sadə məsləhət ən qiymətli olur. Komanda Mail.ru-dan Kubernetes aaS tərcümə olunub on fəndlər və məsləhətlər seçimi, məqalənin müəllifinin Kubernetes ilə bir il işlədikdən sonra topladığı. Məsləhətlər əhəmiyyətinə görə sıralanmır, lakin hər kəsin özü üçün faydalı bir şey tapacağını düşünürük.

Kubernetes ilə işləmək üçün ən sadə əmr

Başlamaq üçün, Kubernetes ilə işləməkdə bəlkə də ən sadə və ən faydalı hərəkət. Aşağıdakı əmr əmri tamamlamağa imkan verir kubectl bash shell-də:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Avtomatik tamamlayın kubectl .bashrc faylına yazılacaq və hər dəfə shell işə salındıqda avtomatik olaraq aktivləşdiriləcək. Bu, uzun əmrlərin və parametrlərin yazılmasını sürətləndirir all-namespaces. Ətraflı oxu Kubernetes bash köməyi.

Ad məkanında defolt yaddaş və CPU məhdudiyyətləri

Tətbiq səhv yazılıbsa, məsələn, verilənlər bazası ilə hər saniyə yeni bir əlaqə açır, lakin onu heç vaxt bağlamır, o zaman klasterdə yaddaş sızması olur. Və tətbiqetmədə yerləşdirmə zamanı müəyyən edilmiş yaddaş limiti yoxdursa, bu, node uğursuzluğuna səbəb ola bilər.

Bunun qarşısını almaq üçün Kubernetes sizə hər ad məkanı əsasında defolt məhdudiyyətlər qoymağa imkan verir. Onlar yaml faylında müəyyən bir ad sahəsi üçün yazılmışdır. Belə bir faylın bir nümunəsidir:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

Belə yaml yaradın və istənilən ad sahəsinə müraciət edin. Məsələn, ad sahəsinə limit-example. İndi bu ad məkanında yerləşdirilmiş istənilən konteynerin limiti 512Mi olacaq, əgər bu konteyner üçün əlavə olaraq başqa fərdi limit təyin olunmayıbsa.

Kubernetes-in köhnə versiyalarında zibil kolleksiyası

Kubelet defolt olaraq zibil yığmağa başladıqda var/lib/docker mövcud disk sahəsinin 90%-ni tutur. Bu əladır, lakin Kubernetes 1.7-ə qədər fayl sistemindəki faylların sayına uyğun gələn istifadə edilən inodların sayında standart məhdudiyyət yox idi.

Potensial konteyneriniz var/lib/docker disk sahəsinin yalnız 50%-ni istifadə edə bilər, lakin inodlar tükənə bilər ki, bu da işçilər üçün problemlər yarada bilər.

1.4-dən 1.6-a qədər olan köhnə kubelet versiyalarında bu bayrağı əlavə etməli olacaqsınız:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

1.7 və sonrakı versiyalarda bu bayraq defolt olaraq təyin edilir. Bununla belə, əvvəlki versiyalar inode limitinə nəzarət etmir.

Minikube... kiçik, lakin güclü yerli Kubernetes

Minikube yerli Kubernetes klasterini idarə etməyin ən asan yoludur. Sadə bir əmrlə işə salınır:

minikube start

Bu əmrin icrası kompüterinizdə real Kubernetes klasterinin işləməsi ilə nəticələnir.

Ən yaxşı 10 Kubernetes fəndləri və məsləhətləri
İllüstrasiya mənbəyi

Məsələ tətbiqi necə qurmaq və onu həmin klasterdə yerli olaraq işə salmaqdır. Xüsusi göstəriş verilmədiyi təqdirdə, Docker təsviri klasterdə deyil, kompüterinizdə qurulacaq.

Docker-i təsviri yerli Kubernetes klasterinə itələməyə məcbur etmək üçün docker maşınına aşağıdakı əmr verilir:

eval $(minikube docker-env)

İndi yerli Kubernetes klasterində tətbiqlər qura bilərik.

kubectl-ə hər kəsə giriş icazəsi verməyin

Bu açıq görünür, lakin əgər birdən çox komanda öz tətbiqləri üçün eyni klasterdən istifadə edirsə (Kubernetes bunun üçün yaradılmışdır), siz sadəcə olaraq hamıya verməməlisiniz. kubectl. Əmrləri ayırmaq, onların hər birinə öz ad sahəsini təyin etmək və RBAC siyasətlərindən istifadə edərək girişi məhdudlaşdırmaq daha yaxşıdır.

Hər bir pod üçün daxil olmaq, oxumaq, yaratmaq, silmək və digər əməliyyatlara hüquqlar təyin etməklə çaşqınlıq yarana bilər. Ancaq əsas odur ki, sirrlərə girişi məhdudlaşdırmaq, yalnız idarəçilərə icazə verməkdir. Bu yolla biz klasteri idarə edə bilənlərlə sadəcə ona yerləşdirə bilənlər arasında fərq qoyacağıq.

Pod büdcələrini idarə edin

Kubernetes klasterində tətbiqin dayanma müddətini necə təmin etmək olar? PodDisruptionBudget və yenidən PodDisruptionBudget.

Klasterlər vaxtaşırı yenilənir və qovşaqlar boşaldılır. Heç nə dayanmır, reallıq budur. Birdən çox nümunəsi olan hər yerləşdirmə PDB (PodDisruptionBudget) ehtiva etməlidir. O, klasterə tətbiq olunan sadə yaml faylında yaradılmışdır. Müəyyən bir PDB-nin əhatə dairəsi etiket seçiciləri tərəfindən müəyyən edilir.

Qeyd: PDB büdcəsi yalnız büdcə pozuntusunun bərpası mümkün olduqda nəzərə alınır (könüllü pozulma). Aparat nasazlığı kimi vəziyyətlərdə PDB işləməyəcək.

PDB nümunəsi:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

İki əsas parametrdir matchLabels и minAvailable. Birinci parametr büdcənin hansı tətbiqlərə aid olduğunu müəyyənləşdirir. Məsələn, etiketləri olan yerləşdirmələrim varsa app: app-a и app: app-b, onda bu PDB yalnız birincisinə tətbiq olunacaq.

Parametr minAvailable qovşağı boşaltarkən (təmizləyəndə) nəzərə alınır. Məsələn, bizim nümunəmizdə, boşaltma zamanı bütün instansiyalar çıxarılır app: app-a, iki istisna olmaqla.

Bu, istənilən vaxt tətbiqin neçə nümunəsinin işləməli olduğuna nəzarət etməyə imkan verir.

Tətbiqin sağlamlığının monitorinqi

Belə monitorinq iki yolla mümkündür: Hazırlıq və ya Canlılıq testlərindən istifadə etməklə.

Birinci zond (hazırlıq) konteynerin trafiki qəbul etməyə hazırlığını müəyyən edir.

İkinci (canlılıq) konteynerin sağlam olub olmadığını və ya yenidən işə salınmalı olduğunu göstərir.

Müvafiq konfiqurasiyalar yerləşdirmə üçün sadəcə olaraq yaml-a əlavə edilir. Orada siz fasilələri, gecikmə vaxtlarını və təkrar sınaqların sayını təyin edə bilərsiniz. Onlar haqqında daha ətraflı baxın Kubernetes sənədləri.

Etiketlər hər yerdə var

Etiketlər Kubernetes-də əsas anlayışlardan biridir. Onlar obyektlərin bir-biri ilə sərbəst əlaqə saxlamasına imkan verir, həmçinin etiketlər əsasında sorğular yaradır. Kubernetes-də siz hətta müştəriyə gedə və xüsusi etiketlər üçün hadisələrə baxa bilərsiniz.

Teqlərlə demək olar ki, hər şeyi edə bilərsiniz, lakin eyni klasterdə proqramları işə salmaq üçün çoxlu mühit yaratmaq yaxşı bir nümunə ola bilər.

Tutaq ki, siz eyni klasterdən istifadə edirsiniz dev и qa. Bu o deməkdir ki, ərizəniz ola bilər app-a, eyni zamanda hər iki mühitdə işləyir qa и dev. Bu halda, müvafiq parametri təyin etməklə, konkret mühitdə tətbiq nümunəsinə ayrıca daxil ola bilərik environment. Məsələn, app: app-a и environment: dev bir mühit üçün və app: app-a и environment: qa ikinci üçün.

Bu, tətbiqin hər iki nümunəsinə daxil olmağa, məsələn, eyni vaxtda sınaq keçirməyə imkan verir.

Təşkil olun

Kubernetes çox güclü sistemdir, lakin istənilən sistem nəticədə həddən artıq çox proseslə batağa düşə bilər. Kubelet sizin göstərdiyiniz bütün prosesləri və yoxlamaları, eləcə də özünün idarəsini həyata keçirir.

Əlbəttə ki, bir yetim xidmət sistemi yavaşlatmayacaq və Kubernetes sıfırdan miqyasını genişləndirmək üçün nəzərdə tutulmuşdur. Ancaq bir xidmət əvəzinə bir milyon görünsə, kubelet boğulmağa başlayır.

Əgər nədənsə yerləşdirməni (konteyner, şəkil və ya hər hansı) silsəniz, sadəcə olaraq tam təmizləmə apardığınızdan əmin olun.

Go ilə tanış olun

Əsas məsləhəti sona saxladıq. Go proqramlaşdırma dilini öyrənin.

Kubernetes Go-da hazırlanmışdır, bütün genişləndirmələr Go-da yazılmışdır və müştəri-go müştəri kitabxanası da rəsmi olaraq dəstəklənir.

Müxtəlif və maraqlı şeylər üçün istifadə edilə bilər. Məsələn, Kubernetes sistemini zövqünüzə uyğun genişləndirmək üçün. Beləliklə, məlumat toplamaq, tətbiqləri yerləşdirmək və ya sadəcə konteynerləri təmizləmək üçün öz proqramlarınızdan istifadə edə bilərsiniz.

Go proqramlaşdırma dilini öyrənmək və müştəri-go-nu mənimsəmək, bəlkə də yeni Kubernetes istifadəçilərinə verə biləcəyiniz ən vacib məsləhətdir.

Mail.ru Cloud Solutions dəstəyi ilə tərcümə edilmişdir

Başqa nə oxumaq:

  1. Kubernetes-də avtomatik ölçmənin üç səviyyəsi və onlardan necə səmərəli istifadə etmək olar.
  2. Kubernetes işçi qovşaqları: bir çox kiçik və ya bir neçə böyük?
  3. Kubernetləri yerləşdirmək və idarə etmək üçün 25 faydalı alət.

Mənbə: www.habr.com

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