Vakar, gruodžio 9 d. įvyko Kitas Kubernetes leidimas - 1.17. Pagal mūsų tinklaraščiui susiklosčiusią tradiciją kalbame apie reikšmingiausius naujosios versijos pakeitimus.
Informacija, naudojama rengiant šią medžiagą, paimta iš oficialaus pranešimo, Kubernetes patobulinimų stebėjimo lentelės, PAKEITIMAS-1.17 ir susijusias problemas, ištraukimo užklausas ir Kubernetes patobulinimo pasiūlymus (KEP). Taigi kas naujo?..
Topologiją žinantis maršrutas
Kubernetes bendruomenė ilgai laukė šios funkcijos - Topologiją žinantis paslaugų maršrutas. Jei KEP jis kilęs 2018 m. spalio mėn., o oficialus patobulinimas — Prieš 2 metus įprasti klausimai (Kaip jis) - ir dar keleriais metais vyresni...
Bendra idėja yra suteikti galimybę įgyvendinti „vietinį“ maršrutą Kubernetes paslaugoms. „Lokalumas“ šiuo atveju reiškia „tą patį topologinį lygį“ (topologijos lygis), kuris gali būti:
mazgas identiškas paslaugoms,
ta pati serverio lentyna,
tas pats regionas
tas pats debesies tiekėjas,
...
Šios funkcijos naudojimo pavyzdžiai:
sutaupyti srauto debesies įrenginiuose su keliomis pasiekiamumo zonomis (daugialypiai AZ) – žr. nauja iliustracija naudojant srauto iš to paties regiono, bet skirtingų AZ AWS, pavyzdį;
mažesnė veikimo delsa / geresnis pralaidumas;
suskaidyta paslauga, turinti vietinę informaciją apie mazgą kiekviename fragmente;
fluentd (ar analogų) talpinimas tame pačiame mazge su programomis, kurių žurnalai renkami;
Norėdami gauti daugiau informacijos apie tai, kaip ši funkcija veikia ir kaip jau galite ja naudotis, skaitykite Šis straipsnis iš vieno iš autorių.
IPv4/IPv6 dviejų krūvų palaikymas
Reikšminga pažanga fiksuotas kitoje tinklo savybėje: tuo pačiu metu palaikomas du IP dėklas, kuris pirmą kartą buvo pristatytas K8s 1.16. Visų pirma, nauja versija atnešė šiuos pakeitimus:
kube-proxy įgyvendinta galimybė vienu metu veikti abiem režimais (IPv4 ir IPv6);
в Pod.Status.PodIPspasirodė žemyn nukreiptos API palaikymas (tuo pačiu metu kaip ir /etc/hosts dabar jie reikalauja, kad priegloba pridėtų IPv6 adresą);
dviejų krūvų palaikymas MALONUS (Kubernetes IN Docker) ir kubeadm;
Iniciatyva už apimties įskiepių perkėlimas į CSI - CSI migracija - pasiekė beta versiją. Ši funkcija yra labai svarbi norint išversti esamus saugyklos papildinius (medyje) į modernią sąsają (CSI, iš medžio) nematomas Kubernetes galutiniams vartotojams. Klasterių administratoriams tereikės įjungti CSI migraciją, po kurios esami būsenos ištekliai ir darbo krūviai ir toliau „tiks dirbs“... bet naudos naujausias CSI tvarkykles, o ne pasenusias, įtrauktas į Kubernetes branduolį.
Šiuo metu AWS EBS tvarkyklių perkėlimas yra paruoštas beta versijoje (kubernetes.io/aws-ebs) ir GCE PD (kubernetes.io/gce-pd). Kitų saugyklų prognozės yra tokios:
Kalbėjomės apie tai, kaip „tradicinis“ saugojimo palaikymas K8s atėjo į CSI Šis straipsnis. Ir skirtas CSI perkėlimo į beta būseną perėjimas atskiras leidinys projekto tinklaraštyje.
Be to, kita svarbi funkcija CSI kontekste, kuri yra (alfa diegimas) K1.17s 8 versijoje, pasiekė beta būseną (t. y. įjungta pagal numatytuosius nustatymus) Kubernetes 1.12 leidime. momentinių nuotraukų kūrimas ir atsigavimas nuo jų. Tarp „Kubernetes Volume Snapshot“ pakeitimų, susijusių su beta versijos išleidimu:
CSI išorinio momentinio fotografavimo šoninės priekabos padalijimas į du valdiklius,
pridėta slapta ištrinti (ištrynimo paslaptis) kaip tūrinės momentinės nuotraukos turinio anotaciją,
naujas finalininkas (finalizatorius) kad nebūtų ištrintas momentinis API objektas, jei yra likusių ryšių.
1.17 versijos išleidimo metu šią funkciją palaiko trys CSI tvarkyklės: GCE nuolatinio disko CSI tvarkyklė, Portworx CSI tvarkyklė ir NetApp Trident CSI tvarkyklė. Daugiau informacijos apie jo įgyvendinimą ir naudojimą rasite šį leidinį tinklaraštyje.
Debesų paslaugų teikėjo etiketės
Etiketės, kurios automatiškai priskiriami sukurtiems mazgams ir tomams, atsižvelgiant į naudojamą debesies tiekėją, buvo prieinami Kubernetes kaip beta versija labai ilgą laiką - nuo K8s 1.2 išleidimo (2016 m. balandžio mėn!). Atsižvelgiant į jų platų naudojimą taip ilgai, kūrėjai nusprendė, kad laikas paskelbti funkciją stabilia (GA).
Todėl jie visi buvo atitinkamai pervadinti (pagal topologiją):
... bet vis dar yra senais pavadinimais (atgaliniam suderinamumui). Tačiau visiems administratoriams rekomenduojama pereiti prie dabartinių etikečių. Susijusi dokumentacija K8s buvo atnaujintas.
Motyvacija įgyvendinti šią funkciją (pagal KEP) yra:
Nors Kubernetes galima įdiegti rankiniu būdu, de facto (jei ne de jure) šios operacijos standartas yra naudoti kubeadm. Populiarūs sistemų valdymo įrankiai, tokie kaip „Terraform“, remiasi „kubeadm“ diegiant „Kubernetes“. Planuojami klasterio API patobulinimai apima sukomponuojamą „Kubernetes“ įkrovos paketą su „kubeadm“ ir „Cloud-init“.
Be struktūrinės išvesties, net ir iš pirmo žvilgsnio nekenksmingiausi pakeitimai gali sugadinti Terraform, Cluster API ir kitą programinę įrangą, kuri naudoja kubeadm rezultatus.
Mūsų artimiausi planai apima palaikymą (struktūrinės išvesties pavidalu) šioms kubeadm komandoms:
alpha certs
config images list
init
token create
token list
upgrade plan
version
JSON atsako į komandą iliustracija kubeadm init -o json:
Apskritai „Kubernetes 1.17“ išleidimas vyko šūkiu „Stabilumas“ Tai palengvino tai, kad jame yra daug funkcijų (bendras jų skaičius yra 14) gavo GA būseną. Tarp jų:
kube-apiserver optimizavimas našumas dirbant su keliais laikrodžiais, stebint identiškus objektų rinkinius – pasiekiama vengiant pakartotinio tų pačių objektų serijos kiekvienam stebėtojui.
Kiti pakeitimai
Visas Kubernetes 1.17 naujovių sąrašas, žinoma, neapsiriboja aukščiau išvardytomis. Štai keletas kitų (ir išsamesnį sąrašą žr CHANGELOGAS):
panašus pokytis ištiko EndpointSlice API (taip pat iš K8s 1.16), tačiau kol kas šis sprendimas, skirtas Endpoint API našumui / mastelio keitimui pagerinti, nėra įjungtas pagal numatytuosius nustatymus;