Kubernetes 1.14: Yeniliklərin əsas məqamları

Kubernetes 1.14: Yeniliklərin əsas məqamları

Bu gecə yer tutur Kubernetes-in növbəti buraxılışı - 1.14. Bloqumuz üçün formalaşmış ənənəyə uyğun olaraq, biz bu gözəl Açıq Mənbə məhsulunun yeni versiyasındakı əsas dəyişikliklərdən danışırıq.

Bu materialı hazırlamaq üçün istifadə olunan məlumatlar buradan götürülür Kubernetes təkmilləşdirmələri izləmə cədvəlləri, DƏYİŞİKLİK-1.14 və əlaqəli məsələlər, çəkmə sorğuları, Kubernetes Təkmilləşdirmə Təklifləri (KEP).

SIG klaster-həyat dövründən vacib bir girişlə başlayaq: dinamik uğursuz klasterlər Kubernetes (daha dəqiq desək, HA yerləşdirmələri) indidir yaradıla bilər tanış (tək qovşaqlı klasterlər kontekstində) əmrlərdən istifadə etməklə kubeadm (init и join). Bir sözlə, bunun üçün:

  • klasterin istifadə etdiyi sertifikatlar sirrlərə ötürülür;
  • K8s klasterində etcd klasterindən istifadə etmək imkanı üçün (yəni əvvəllər mövcud olan xarici asılılıqdan xilas olmaq) etcd-operatoru;
  • Arızaya dözümlü konfiqurasiyanı təmin edən xarici yük balanslayıcısı üçün tövsiyə olunan parametrləri sənədləşdirir (gələcəkdə bu asılılığın aradan qaldırılması planlaşdırılır, lakin bu mərhələdə deyil).

Kubernetes 1.14: Yeniliklərin əsas məqamları
kubeadm ilə yaradılmış Kubernetes HA klasterinin arxitekturası

İcra təfərrüatları ilə tanış ola bilərsiniz dizayn təklifi. Bu xüsusiyyət həqiqətən çoxdan gözlənilən idi: alfa versiyası K8s 1.9-da yenidən gözlənilirdi, ancaq indi ortaya çıxdı.

API

Komanda apply və ümumiyyətlə deklarativ obyektin idarə edilməsi keçdi haqqında kubectl apiserverdə. Tərtibatçılar özləri qərarlarını qısaca belə izah edirlər kubectl apply - Kubernetes-də konfiqurasiyalarla işləməyin əsas hissəsidir, lakin "bu, səhvlərlə doludur və düzəltmək çətindir" və buna görə də bu funksiyanı normal vəziyyətə gətirmək və idarəetmə müstəvisinə köçürmək lazımdır. Bu gün mövcud olan problemlərin sadə və aydın nümunələri:

Kubernetes 1.14: Yeniliklərin əsas məqamları

İcra ilə bağlı təfərrüatlar var KEP. Hazırkı hazırlıq alfa səviyyəsindədir (beta versiyaya irəliləmə Kubernetesin növbəti buraxılışı üçün planlaşdırılır).

Alfa versiyada hazırlanıb imkan üçün OpenAPI v3 sxemindən istifadə etməklə CustomResources üçün OpenAPI sənədlərinin yaradılması və dərc edilməsi (CR) K8s istifadəçi tərəfindən müəyyən edilmiş resursları (CustomResourceDefinition, CRD) yoxlamaq üçün istifadə olunur (server tərəfi). CRD üçün OpenAPI-nin nəşri müştərilərə imkan verir (məs. kubectl) öz tərəfinizdə doğrulama həyata keçirin (daxili kubectl create и kubectl apply) və sxemə uyğun olaraq sənədləri verin (kubectl explain). Təfərrüatlar - daxil KEP.

Əvvəlki qeydlər indi açılır bayraqla O_APPEND (lakin yox O_TRUNC) bəzi hallarda logların itirilməsinin qarşısını almaq və fırlanma üçün xarici yardım proqramları ilə logların kəsilməsinin rahatlığı üçün.

Həmçinin Kubernetes API kontekstində qeyd etmək olar ki, in PodSandbox и PodSandboxStatus əlavə etdi sahə runtime_handler haqqında məlumatları qeyd etmək RuntimeClass podda (bu barədə ətraflı mətndə oxuyun Kubernetes 1.12 buraxılışı, bu sinfin alfa versiyası kimi göründüyü yer) və Qəbul Webhooks-da həyata keçirilən hansı versiyaları müəyyən etmək imkanı AdmissionReview dəstəkləyirlər. Nəhayət, Qəbul Webhooks qaydaları indi məhdudlaşdırıla bilər ad fəzaları və klaster çərçivələri tərəfindən istifadə dərəcəsi.

Tonozlar

PersistentLocalVolumesburaxılışdan bəri beta statusu olan K8s 1.10, elan etdi stabil (GA): bu xüsusiyyət qapısı artıq deaktiv edilməyib və Kubernetes 1.17-də silinəcək.

Imkan adlı mühit dəyişənlərindən istifadə etməklə Aşağıya doğru API (məsələn, pod adı) kimi quraşdırılmış qovluqların adları üçün subPath, işlənmişdir - yeni sahə şəklində subPathExpr, indi istədiyiniz kataloq adını müəyyən etmək üçün istifadə olunur. Xüsusiyyət əvvəlcə Kubernetes 1.11-də ortaya çıxdı, lakin 1.14 üçün alfa versiya statusunda qaldı.

Əvvəlki Kubernetes buraxılışında olduğu kimi, aktiv şəkildə inkişaf edən CSI (Container Storage Interface) üçün bir çox əhəmiyyətli dəyişikliklər təqdim olunur:

CSI

Mövcud oldu (alfa versiyasının bir hissəsi kimi) dəstək CSI həcmləri üçün ölçüsünün dəyişdirilməsi. Onu istifadə etmək üçün çağırılan xüsusiyyət qapısını aktivləşdirməlisiniz ExpandCSIVolumes, həmçinin müəyyən bir CSI sürücüsündə bu əməliyyat üçün dəstəyin olması.

Alfa versiyasında CSI üçün başqa bir xüsusiyyət - imkan pod spesifikasiyası daxilində birbaşa (yəni PV/PVC istifadə etmədən) CSI həcmlərinə istinad edin. Bu CSI-nin yalnız uzaqdan məlumat yaddaşı kimi istifadəsinə qoyulan məhdudiyyəti aradan qaldırır, onlar üçün dünyaya qapılar açır yerli efemer həcmlər. İstifadə üçün (sənədlərdən nümunə) aktivləşdirilməlidir CSIInlineVolume xüsusiyyət qapısı.

Son istifadəçilər (sistem inzibatçıları) üçün o qədər də görünməyən CSI ilə əlaqəli Kubernetes-in "daxili hissələrində" də irəliləyiş var ... Hal-hazırda tərtibatçılar hər saxlama plagininin iki versiyasını dəstəkləməyə məcburdurlar: biri - "daxili" köhnə yol”, K8s kod bazası daxilində (ağacda), ikincisi isə yeni CSI-nin bir hissəsi kimi (bu barədə daha çox oxuyun, məsələn, burada). Bu, CSI-nin özü sabitləşdiyi üçün həll edilməli olan başa düşülən narahatlıqlara səbəb olur. Buna görə daxili (ağacdaxili) plaginlərin API-sini sadəcə olaraq ləğv etmək mümkün deyil müvafiq Kubernetes siyasəti.

Bütün bunlar alfa versiyasının çatmasına səbəb oldu miqrasiya prosesi daxili plagin kodu, ağacdaxili olaraq, CSI plaginlərində tətbiq olunur, bunun sayəsində tərtibatçıların narahatlığı plaginlərinin bir versiyasını dəstəkləməyə azalacaq və köhnə API-lərlə uyğunluq qalacaq və adi ssenaridə köhnəlmiş elan edilə bilər. Gözlənilir ki, Kubernetes-in növbəti buraxılışına (1.15) bütün bulud provayderi plaginləri köçürüləcək, tətbiq beta statusu alacaq və standart olaraq K8s quraşdırmalarında aktivləşdiriləcək. Ətraflı məlumat üçün bax dizayn təklifi. Bu köç də nəticələndi imtina xüsusi bulud provayderləri (AWS, Azure, GCE, Cinder) tərəfindən müəyyən edilmiş həcm məhdudiyyətlərindən.

Bundan əlavə, CSI ilə blok cihazları üçün dəstək (CSIBlockVolume) köçürüldü beta versiyasına.

Düyünlər/Kubelet

Alfa versiyası təqdim edildi yeni son nöqtə Kubelet üçün nəzərdə tutulmuşdur əsas resurslar üzrə ölçüləri qaytarın. Ümumiyyətlə, əgər əvvəllər Kubelet konteyner istifadəsi ilə bağlı statistikanı cAdvisor-dan alırdısa, indi bu məlumatlar CRI (Container Runtime Interface) vasitəsilə konteyner işləmə mühitindən gəlir, lakin Docker-in köhnə versiyaları ilə işləmək üçün uyğunluq da qorunur. Əvvəllər Kubelet-də toplanmış statistika REST API vasitəsilə göndərilirdi, indi isə son nöqtə /metrics/resource/v1alpha1. Tərtibatçıların uzunmüddətli strategiyası ibarətdir Kubelet tərəfindən təmin edilən ölçülər dəstini minimuma endirməkdir. Yeri gəlmişkən, bu göstəricilər özləridir indi çağırırlar “əsas ölçülər” deyil, “resurs göstəriciləri” və “prosessor və yaddaş kimi birinci dərəcəli resurslar” kimi təsvir olunur.

Çox maraqlı bir nüans: Prometheus formatından istifadənin müxtəlif halları ilə müqayisədə gRPC son nöqtəsinin aydın performans üstünlüyünə baxmayaraq (aşağıdakı meyarlardan birinin nəticəsinə baxın), müəlliflər cəmiyyətdə bu monitorinq sisteminin aydın rəhbərliyinə görə Prometey mətn formatına üstünlük verdilər.

“gRPC əsas monitorinq boru kəmərləri ilə uyğun gəlmir. Son nöqtə yalnız Metriklər Serverinə ölçüləri çatdırmaq və ya onunla birbaşa inteqrasiya edən monitorinq komponentləri üçün faydalı olacaq. Metrics Serverdə keşləmə istifadə edərkən Prometheus mətn formatının performansı kifayət qədər yaxşı cəmiyyətdə Prometeyin geniş şəkildə mənimsənilməsini nəzərə alaraq, Prometeyi gRPC-dən üstün tutmağımız üçün. OpenMetrics formatı daha stabil olduqdan sonra biz proto-əsaslı formatla gRPC performansına yaxınlaşa biləcəyik.”

Kubernetes 1.14: Yeniliklərin əsas məqamları
Metriklər üçün yeni Kubelet son nöqtəsində gRPC və Prometheus formatlarından istifadənin müqayisəli performans testlərindən biri. Daha çox qrafik və digər təfərrüatları burada tapa bilərsiniz KEP.

Digər dəyişikliklər arasında:

  • Kubelet indi (bir dəfə) dayanmağa çalışır əməliyyatları yenidən başlatmadan və silmədən əvvəl konteynerləri naməlum vəziyyətdə.
  • Istifadə edərkən PodPresets indi başlanğıc konteynerinə əlavə edildi adi konteynerlə eyni məlumat.
  • kubelet istifadə etməyə başladı usageNanoCores CRI statistika provayderindən və Windows-da qovşaqlar və konteynerlər üçün əlavə etdi şəbəkə statistikası.
  • Əməliyyat sistemi və arxitektura məlumatları indi etiketlərdə qeyd olunur kubernetes.io/os и kubernetes.io/arch Node obyektləri (beta-dan GA-ya köçürülür).
  • Poddakı konteynerlər üçün xüsusi sistem istifadəçi qrupunu təyin etmək imkanı (RunAsGroup,-da meydana çıxdı K8s 1.11) qabaqcıl betadan əvvəl (defolt olaraq aktivdir).
  • du və cAdvisor-da istifadə olunan tapın, əvəz etdi on Go tətbiqi.

CLI

Cli-runtime və kubectl-də əlavə etdi ilə inteqrasiya üçün -k bayrağı özəlləşdirmək (yeri gəlmişkən, onun inkişafı indi ayrı bir depoda həyata keçirilir), yəni. xüsusi kustomizasiya kataloqlarından əlavə YAML fayllarını emal etmək üçün (onlardan istifadə haqqında ətraflı məlumat üçün bax KEP):

Kubernetes 1.14: Yeniliklərin əsas məqamları
Sadə fayldan istifadə nümunəsi fərdiləşdirmə (daxilində kustomizenin daha mürəkkəb tətbiqi mümkündür bindirmələr)

Bundan əlavə:

  • Əlavə edilib yeni komanda kubectl create cronjob, adı özü üçün danışır.
  • В kubectl logs indi edə bilərsən birləşdirmək bayraqlar -f (--follow axın qeydləri üçün) və -l (--selector etiket sorğusu üçün).
  • kubectl öyrədilmiş wild card ilə seçilmiş faylları kopyalayın.
  • Komandada kubectl wait əlavə etdi bayraq --all göstərilən resurs növünün ad məkanında bütün resursları seçmək üçün.

P "SЂSѓRіReRμ

Aşağıdakı imkanlar stabil (GA) statusu alıb:

Kubernetes 1.14-də təqdim edilən digər dəyişikliklər:

  • Defolt RBAC siyasəti artıq API girişinə icazə vermir discovery и access-review autentifikasiyası olmayan istifadəçilər (təsdiqlənməmiş).
  • Rəsmi CoreDNS dəstəyi təmin edilmişdir Yalnız Linux, buna görə də onu klasterdə yerləşdirmək üçün kubeadm istifadə edərkən (CoreDNS), qovşaqlar yalnız Linux-da işləməlidir (bu məhdudiyyət üçün nodeSelectors istifadə olunur).
  • Defolt CoreDNS konfiqurasiyası indidir istifadə edir irəli plagin proxy əvəzinə. Həmçinin, CoreDNS-də əlavə etdi uyğun (xidmətə hazır olmayan) podlarda yük balansının qarşısını alan readinessProbe.
  • Kubeadm-də, fazalarda init və ya upload-certs, mümkün oldu yeni idarəetmə təyyarəsini kubeadm-certs sirri ilə birləşdirmək üçün tələb olunan sertifikatları yükləyin (bayraqdan istifadə edin --experimental-upload-certs).
  • Windows quraşdırmaları üçün alfa versiyası peyda oldu dəstək gMSA (Qrup tərəfindən idarə olunan xidmət hesabı) - Active Directory-də konteynerlər tərəfindən də istifadə edilə bilən xüsusi hesablar.
  • G.C.E üçün aktivləşdirilib etcd və kube-apiserver arasında mTLS şifrələməsi.
  • İstifadə olunan/asılı proqram təminatında yeniləmələr: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, kubeadm-də Docker 18.09 dəstəyi və minimum dəstəklənən Docker API versiyası indi 1.26-dır.

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

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