Kubernetes 1.17: uudiste esiletõstmised

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.

Kubernetes 1.17: uudiste esiletõstmised

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;
  • ...

Sellist marsruutimist, mis “teab” topoloogiast, nimetatakse ka võrguafiinsuseks – analoogselt sõlme afiinsus, kauna afiinsus/antiafiinsus või ilmus mitte nii kaua aega tagasi Topoloogiateadlik helitugevuse planeerimine (ja Mahu eraldamine). Praegune rakendamise tase ServiceTopology Kubernetes - alfa versioon.

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.PodIPs ilmus 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;
  • uuendatud e2e testid.

Kubernetes 1.17: uudiste esiletõstmised
Joonis kasutades topeltpinu IPV4/IPv6 KIND

CSI edusammud

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:

Kubernetes 1.17: uudiste esiletõstmised

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):

  • beta.kubernetes.io/instance-typenode.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zonetopology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/regiontopology.kubernetes.io/region

... 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.

Kubeadmi struktureeritud väljund

Esitatakse esimest korda alfa versioonis kubeadmi utiliidi struktureeritud väljund. Toetatud vormingud: JSON, YAML, Go mall.

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):

  • alpha certs
  • config images list
  • init
  • token create
  • token list
  • upgrade plan
  • version

Illustratsioon JSON-i vastusest käsule kubeadm init -o json:

{
  "node0": "192.168.20.51:443",
  "caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
  "token": {
    "id":          "5ndzuu.ngie1sxkgielfpb1",
    "ttl":         "23h",
    "expires":     "2019-05-08T18:58:07Z",
    "usages":      [
      "authentication",
      "signing"
    ],
    "description": "The default bootstrap token generated by 'kubeadm init'.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

Muude uuenduste stabiliseerimine

Ü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:

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):

  • Viimases versioonis esitatud funktsioon on jõudnud beetaversiooni RunAsUserName akende jaoks;
  • sarnane muutus juhtus EndpointSlice API (ka K8s 1.16-st), kuid praegu pole see Endpoint API jõudluse/mastaapsuse parandamise lahendus vaikimisi lubatud;
  • kaunad on nüüd klastri töö jaoks kriitilised saab luua mitte ainult nimeruumides kube-system (üksikasju vt dokumentatsioonist Piirata Priority Class tarbimist);
  • uus võimalus kubeleti jaoks - --reserved-cpus — võimaldab teil selgelt määratleda süsteemi jaoks reserveeritud protsessorite loendi;
  • eest kubectl logs esitatakse uus lipp --prefix, lisades logi igale reale kausta ja lähtekonteineri nime;
  • в label.Selector lisatud RequiresExactMatch;
  • kõik konteinerid kube-dns-is praegu jooksevad väiksemate privileegidega;
  • hüperkube eraldatud eraldi GitHubi hoidlasse ja seda ei kaasata enam Kubernetese versioonidesse;
  • palju paranenud jõudlus kube-puhverserver mitte-UDP-portide jaoks.

Sõltuvusmuutused:

  • Kubeadmis sisalduv CoreDNS-i versioon on 1.6.5;
  • crictl versioon värskendati versioonile 1.16.1;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • Viimane testitud Dockeri versioon on uuendatud versioonile 19.03;
  • Kubernetes 1.17 loomiseks vajalik Go minimaalne versioon on 1.13.4.

PS

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar