Eile, 9. detsembril võttis aset Kubernetese järgmine väljalase - 1.17. Meie ajaveebi jaoks välja kujunenud traditsiooni kohaselt räägime uues versioonis kõige olulisematest muudatustest.
Selle materjali koostamiseks kasutatud teave on võetud ametlikust teadaandest, Kubernetese täiustuste jälgimistabelid, MUUTUS-1.17 ja sellega seotud probleemid, tõmbetaotlused ja Kubernetes Enhancement Proposals (KEP). Niisiis, mis on uut?...
Topoloogiateadlik marsruutimine
Kubernetese kogukond on seda funktsiooni juba pikka aega oodanud - Topoloogiateadlik teenuse marsruutimine. Kui KEP see pärineb 2018. aasta oktoobrist ja ametlik Lisaseade — 2 aastat tagasi tavalised probleemid (nagu Käesoleva) - ja veel paar aastat vanem...
Üldine idee on pakkuda võimalust rakendada Kubernetes asuvate teenuste jaoks "kohalikku" marsruutimist. "Paikkond" tähendab sel juhul "sama topoloogilist taset" (topoloogia tase), mis võib olla:
sõlm on teenuste jaoks identne,
sama serveririiul,
sama piirkond
sama pilveteenuse pakkuja,
...
Selle funktsiooni kasutamise näited:
liikluse kokkuhoid mitme saadavustsooniga pilveinstallatsioonides (multi-AZ) – vt. värske illustratsioon kasutades näidet liiklusest samast piirkonnast, kuid AWS-is erinevad AZ-d;
madalam jõudluse latentsus/parem läbilaskevõime;
killustatud teenus, millel on igas killus oleva sõlme kohta kohalik teave;
fluentd (või analoogide) paigutamine samasse sõlme rakendustega, mille logisid kogutakse;
Lisateavet selle funktsiooni toimimise ja selle kasutamise kohta leiate siit see artikkel ühelt autorilt.
IPv4/IPv6 kahe virna tugi
Märkimisväärne edasiminek fikseeritud teises võrgufunktsioonis: kahe IP-virna samaaegne tugi, mida esmakordselt tutvustati aastal K8s 1.16. Eelkõige tõi uus versioon kaasa järgmised muudatused:
kube-puhverserveris rakendatud samaaegse töö võimalus mõlemas režiimis (IPv4 ja IPv6);
в Pod.Status.PodIPsilmus allapoole suunatud API tugi (samal ajal kui /etc/hosts nüüd nõuavad nad hostilt IPv6-aadressi lisamist);
kahe virna tugi KIND (Kubernetes IN Docker) ja kubeadm;
Stabiilseks kuulutatud topoloogia tugi CSI-põhise salvestusruumi jaoks, esmakordselt kasutusele võetud K8s 1.12.
Algatus mahupluginate migreerimine CSI-sse - CSI migratsioon - jõudis beetaversiooni. See funktsioon on olemasolevate salvestuspluginate tõlkimiseks ülioluline (puu sees) kaasaegsele liidesele (CSI, puust väljas) Kubernetese lõppkasutajatele nähtamatu. Klastrite administraatorid peavad lubama ainult CSI migratsiooni, misjärel olemasolevad olekupõhised ressursid ja töökoormused jätkavad "lihtsalt töötamist", kuid kasutavad Kubernetese tuumas sisalduvate aegunud draiverite asemel uusimaid CSI draivereid.
Hetkel on AWS EBS-i draiverite migratsioon beetaversioonis valmis (kubernetes.io/aws-ebs) ja GCE PD (kubernetes.io/gce-pd). Muude hoidlate prognoosid on järgmised:
Rääkisime sellest, kuidas K8-de "traditsiooniline" salvestustugi jõudis CSI-sse see artikkel. Ja CSI migratsiooni beetaolekusse üleminek on pühendatud eraldi väljaanne projekti ajaveebis.
Lisaks jõudis Kubernetes 1.17 versioonis beetaolekusse (st vaikimisi lubatud) veel üks CSI kontekstis oluline funktsioon, mis pärineb (alfa-rakendus) K8s 1.12-st. hetktõmmiste loomine ja neist taastumist. Kubernetes Volume Snapshotis tehtud muudatuste hulgas beetaversiooni väljalaskmise teel:
CSI välise snapshotteri külgkorvi jagamine kaheks kontrolleriks,
kustutamiseks lisatud saladus (kustutamise saladus) annotatsioonina mahu hetktõmmise sisule,
uus lõpetaja (finaliseerija) et vältida hetktõmmise API objekti kustutamist, kui ühendusi on alles.
Väljalaske 1.17 ajal toetavad seda funktsiooni kolm CSI draiverit: GCE püsiva ketta CSI draiver, Portworxi CSI draiver ja NetApp Trident CSI draiver. Lisateavet selle rakendamise ja kasutamise kohta leiate aadressilt see väljaanne blogis.
Pilvepakkuja sildid
Sildid, mis automaatselt määratud sõlmedele ja köidetele sõltuvalt kasutatavast pilveteenuse pakkujast, on olnud Kubernetesis beetaversioonina saadaval väga pikka aega – alates K8s 1.2 väljalaskmisest (aprill 2016!). Arvestades nende laialdast kasutamist nii kaua, arendajad otsustanud, et on aeg kuulutada funktsioon stabiilseks (GA).
Seetõttu nimetati need kõik vastavalt ümber (topoloogia järgi):
... kuid on endiselt saadaval nende vanade nimede all (tagurpidi ühilduvuse tagamiseks). Kõigil administraatoritel soovitatakse siiski lülituda praegustele siltidele. Seotud dokumentatsioon K8s on uuendatud.
Motivatsioon selle funktsiooni rakendamiseks (vastavalt KEP) on:
Kuigi Kubernetese saab juurutada käsitsi, on selle toimingu de facto (kui mitte de jure) standard kubeadmi kasutamine. Populaarsed süsteemihaldustööriistad, nagu Terraform, tuginevad Kubernetese juurutamisel kubeadmile. Cluster API kavandatud täiustused hõlmavad Kubernetese alglaadimise komponeeritavat paketti koos kubeadmi ja cloud-initiga.
Ilma struktureeritud väljundita võivad isegi esmapilgul kõige kahjutumad muudatused purustada Terraformi, Cluster API ja muu tarkvara, mis kasutab kubeadmi tulemusi.
Meie lähiplaanid hõlmavad järgmiste kubeadmi käskude tuge (struktureeritud väljundina):
Üldiselt toimus Kubernetes 1.17 väljaandmine moto all "Stabiilsus" Seda hõlbustas asjaolu, et selles on palju funktsioone (nende koguarv on 14) sai GA oleku. Nende hulgas:
Vaadake järjehoidjaid - uut tüüpi sündmused, millel on silt, et kõik objektid on kuni teatud versioonini (resourceVersion) on kella poolt juba töödeldud;
"finalisaatori kaitse" (Finaliseerija kaitse) koormuse tasakaalustajatele (vastavate Service ressursside kontrollimine enne LoadBalancer ressursside kustutamist);
kube-apiserveri optimeerimine jõudluses, kui töötate mitme kellaga, jälgides identseid objektide komplekte – saavutatakse vältides iga jälgija jaoks samade objektide korduvat järjestamist.
Muud muudatused
Kubernetes 1.17 uuenduste täielik loetelu ei piirdu muidugi ainult ülalloetletutega. Siin on mõned teised (ja täielikuma loendi saamiseks vt CHANGELOG):
sarnane muutus juhtus EndpointSlice API (ka K8s 1.16-st), kuid praegu pole see Endpoint API jõudluse/mastaapsuse parandamise lahendus vaikimisi lubatud;