Dünən, dekabrın 9-da reallaşdı Kubernetes-in növbəti buraxılışı - 1.17. Bloqumuz üçün formalaşmış ənənəyə uyğun olaraq, yeni versiyada ən əhəmiyyətli dəyişikliklərdən danışırıq.
Bu materialı hazırlamaq üçün istifadə olunan məlumat rəsmi elandan götürülüb, Kubernetes təkmilləşdirmələri izləmə cədvəlləri, DƏYİŞİKLİK-1.17 və əlaqəli məsələlər, çəkmə sorğuları və Kubernetes Təkmilləşdirmə Təklifləri (KEP). Yaxşı, nə yenilik var?..
Topologiyadan xəbərdar marşrutlaşdırma
Kubernetes icması bu xüsusiyyəti çoxdan gözləyirdi - Topologiyadan xəbərdar olan xidmət marşrutu. Əgər KEP 2018-ci ilin oktyabr ayından başlayır və rəsmi genişlənmə — 2 il əvvəl adi məsələlər (kimi o) - və daha bir neçə yaş böyük...
Ümumi ideya Kubernetesdə yaşayan xidmətlər üçün “yerli” marşrutlaşdırmanın həyata keçirilməsini təmin etməkdir. “Yerlilik” bu halda “eyni topoloji səviyyə” deməkdir. (topologiya səviyyəsi), ola bilər:
xidmətlər üçün eyni olan node,
eyni server çarxı,
eyni bölgə
eyni bulud provayderi,
...
Bu xüsusiyyətdən istifadə nümunələri:
çoxsaylı mövcudluq zonaları (multi-AZ) olan bulud qurğularında trafikə qənaət - bax. təzə illüstrasiya eyni regiondan, lakin AWS-də fərqli AZ-lardan gələn trafik nümunəsindən istifadə etməklə;
aşağı performans gecikməsi/daha yaxşı ötürmə qabiliyyəti;
hər bir parçadakı qovşaq haqqında yerli məlumatı olan parçalanmış xidmət;
logları toplanan proqramlarla eyni qovşaqda fluentd (və ya analoq) yerləşdirilməsi;
Xüsusiyyətin necə işlədiyi və ondan necə istifadə edə biləcəyiniz haqqında ətraflı məlumat üçün oxuyun Bu məqalə müəlliflərdən birindən.
IPv4/IPv6 ikili yığın dəstəyi
Əhəmiyyətli irəliləyiş qeyd edildi başqa bir şəbəkə xüsusiyyətində: ilk dəfə təqdim edilən iki IP yığını üçün eyni vaxtda dəstək K8s 1.16. Xüsusilə, yeni buraxılış aşağıdakı dəyişiklikləri gətirdi:
kube-proxy-də həyata keçirilən hər iki rejimdə eyni vaxtda işləmə imkanı (IPv4 və IPv6);
в Pod.Status.PodIPsortaya çıxdı aşağıya doğru API dəstəyi (eyni zamanda /etc/hosts indi onlar hostdan IPv6 ünvanı əlavə etməyi tələb edirlər);
ikili yığın dəstəyi KIND (Kubernetes IN Docker) və kubeadm;
yenilənmiş e2e testləri.
İllüstrasiya ikili yığın IPV4/IPv6 istifadə edərək
üçün təşəbbüs həcm plaginlərinin CSI-yə miqrasiyası - CSI Miqrasiya - beta versiyasına çatdı. Bu xüsusiyyət mövcud yaddaş plaginlərini tərcümə etmək üçün vacibdir (ağacda) müasir interfeysə (CSI, ağacdan kənar) Kubernetes son istifadəçiləri üçün görünməzdir. Klaster inzibatçıları yalnız CSI Miqrasiyasını aktivləşdirməli olacaqlar, bundan sonra mövcud dövlət resursları və iş yükləri “sadəcə işləməyə” davam edəcək... lakin Kubernetes nüvəsinə daxil edilmiş köhnəlmiş sürücülərin əvəzinə ən son CSI drayverlərindən istifadə etməklə.
Hazırda AWS EBS sürücüləri üçün miqrasiya beta versiyada hazırdır (kubernetes.io/aws-ebs) və GCE PD (kubernetes.io/gce-pd). Digər anbarlar üçün proqnozlar aşağıdakılardır:
K8-lərdə "ənənəvi" saxlama dəstəyinin CSI-yə necə gəldiyindən danışdıq Bu məqalə. Və CSI miqrasiyasının beta vəziyyətinə keçidinə həsr edilmişdir ayrıca nəşr layihə bloqunda.
Bundan əlavə, K1.17s 8-də yaranan (alfa tətbiqi) CSI kontekstində daha bir əhəmiyyətli funksionallıq Kubernetes 1.12 buraxılışında beta statusuna çatdı (yəni standart olaraq aktivdir) - snapshotların yaradılması və onlardan sağalma. Beta buraxılış yolunda Kubernetes Volume Snapshot-a edilən dəyişikliklər arasında:
CSI xarici snapshotter yan avtomobilini iki nəzarətçiyə bölmək,
silinmək üçün əlavə sirr (silinmə sirri) həcmli snapshotun məzmununa annotasiya kimi,
yeni yekunlaşdırıcı (yekunlaşdırıcı) qalıq bağlantılar varsa, snapshot API obyektinin silinməsinin qarşısını almaq üçün.
1.17 buraxılışı zamanı xüsusiyyət üç CSI sürücüsü tərəfindən dəstəklənir: GCE Persistent Disk CSI Driver, Portworx CSI Driver və NetApp Trident CSI Driver. Onun həyata keçirilməsi və istifadəsi haqqında daha ətraflı məlumatı burada tapa bilərsiniz bu nəşrin blogda.
Bulud Provayderi Etiketləri
Avtomatik olaraq etiketləyir istifadə olunan bulud provayderindən asılı olaraq yaradılmış qovşaqlara və həcmlərə təyin edilir, çox uzun müddətdir ki, Kubernetes-də beta versiyası olaraq mövcuddur - K8s 1.2-nin buraxılmasından bəri (Aprel 2016!). Onların bu qədər uzun müddətdir geniş istifadəsini nəzərə alaraq, tərtibatçılar Rəşidi, xüsusiyyəti sabit (GA) elan etməyin vaxtıdır.
Buna görə də, onların hamısı müvafiq olaraq adlandırıldı (topologiyaya görə):
... lakin hələ də köhnə adları altında mövcuddur (geri uyğunluq üçün). Bununla belə, bütün idarəçilərə cari etiketlərə keçmək tövsiyə olunur. Əlaqədar Sənədlər K8s yeniləndi.
Bu xüsusiyyəti həyata keçirmək üçün motivasiya (müvafiq olaraq KEP) budur:
Kubernetes əl ilə yerləşdirilə bilsə də, bu əməliyyat üçün de-fakto (de-yure deyilsə) standart kubeadm-dən istifadə etməkdir. Terraform kimi populyar sistem idarəetmə alətləri Kubernetes yerləşdirilməsi üçün kubeadm-ə əsaslanır. Cluster API-də planlaşdırılan təkmilləşdirmələrə kubeadm və cloud-init ilə Kubernetes açılışı üçün tərtib edilə bilən paket daxildir.
Strukturlaşdırılmış çıxış olmadan, hətta ilk baxışdan ən zərərsiz dəyişikliklər Terraform, Cluster API və kubeadm nəticələrini istifadə edən digər proqram təminatını poza bilər.
Dərhal planlarımıza aşağıdakı kubeadm əmrləri üçün dəstək (strukturlaşdırılmış çıxış şəklində) daxildir:
Ümumiyyətlə, Kubernetes 1.17-nin buraxılışı “ şüarı altında baş tutdu.Sabitlik" Bu, bir çox xüsusiyyətlərin olması ilə asanlaşdırıldı (onların ümumi sayı 14) GA statusu aldı. Onların arasında:
"sonlandırıcı müdafiə" (Sonlandırıcı Qoruma) yük balanslaşdırıcıları üçün (LoadBalancer resurslarını silməzdən əvvəl müvafiq Xidmət resurslarını yoxlamaq);
kube-apiserver optimallaşdırılması eyni obyekt dəstlərinin monitorinqini aparan çoxsaylı saatlarla işləyərkən performansda - hər bir izləyici üçün eyni obyektlərin təkrar seriallaşdırılmasının qarşısını almaqla əldə edilir.
Digər dəyişikliklər
Kubernetes 1.17-dəki yeniliklərin tam siyahısı, əlbəttə ki, yuxarıda sadalananlarla məhdudlaşmır. Budur digərləri (və daha tam siyahı üçün baxın DƏYİŞİM):
oxşar dəyişiklik düşdü EndpointSlice API (həmçinin K8s 1.16-dan), lakin indiyə qədər Endpoint API-nin performansını/miqyaslanmasını təkmilləşdirmək üçün bu həll standart olaraq aktiv edilməyib;