Kubernetes 1.16: Hápunktar þess sem er nýtt

Kubernetes 1.16: Hápunktar þess sem er nýtt

Í dag, miðvikudag, mun fara fram næsta útgáfa af Kubernetes - 1.16. Samkvæmt þeirri hefð sem hefur skapast fyrir bloggið okkar er þetta tíu ára afmælið sem við erum að tala um mikilvægustu breytingarnar í nýju útgáfunni.

Upplýsingar sem notaðar eru til að útbúa þetta efni eru teknar úr Kubernetes endurbætur rakningartöflur, BREYTINGAR-1.16 og tengd málefni, dráttarbeiðnir og Kubernetes Enhancement Proposals (KEP). Svo, við skulum fara! ..

Hnúður

Sannarlega mikill fjöldi athyglisverðra nýjunga (í alfa útgáfu stöðu) er kynntur á hlið K8s klasahnúðanna (Kubelet).

Í fyrsta lagi hið svokallaða «skammvinn ílát» (Hvertíð ílát), hannað til að einfalda villuleitarferli í belgjum. Nýja vélbúnaðurinn gerir þér kleift að hleypa af stokkunum sérstökum gámum sem byrja í nafnarými núverandi fræbelgja og lifa í stuttan tíma. Tilgangur þeirra er að hafa samskipti við aðra belg og ílát til að leysa öll vandamál og kemba. Ný skipun hefur verið innleidd fyrir þennan eiginleika kubectl debug, svipað í meginatriðum og kubectl exec: aðeins í stað þess að keyra ferli í ílát (eins og í exec) það ræsir ílát í belg. Til dæmis mun þessi skipun tengja nýtt ílát við belg:

kubectl debug -c debug-shell --image=debian target-pod -- bash

Upplýsingar um skammvinn ílát (og dæmi um notkun þeirra) er að finna í samsvarandi KEP. Núverandi útfærsla (í K8s 1.16) er alfa útgáfa og meðal forsendanna fyrir flutning hennar í beta útgáfu er „að prófa Ephemeral Containers API fyrir að minnsta kosti 2 útgáfur af [Kubernetes].

NB: Í kjarna sínum og jafnvel nafni líkist eiginleikinn viðbót sem þegar er til kubectl-kembiforritum það sem við þegar skrifað. Búist er við að með tilkomu skammvinnra íláta muni þróun sérstakrar utanaðkomandi tappi hætta.

Önnur nýjung - PodOverhead - hannað til að veita kerfi til að reikna út kostnaðarkostnað fyrir belg, sem getur verið mjög mismunandi eftir því hvaða keyrslutíma er notaður. Sem dæmi má nefna höfundana þetta KEP leiða til Kata Containers, sem krefjast þess að keyra gestakjarna, kata umboðsmann, init kerfi osfrv. Þegar kostnaðurinn verður svona mikill er ekki hægt að horfa fram hjá því, sem þýðir að það þarf að vera leið til að taka tillit til þess fyrir frekari kvóta, skipulagningu o.s.frv. Til að innleiða það í PodSpec reit bætt við Overhead *ResourceList (ber saman við gögn í RuntimeClass, ef einn er notaður).

Önnur athyglisverð nýjung er hnútafræðistjóri (Node Topology Manager), hannað til að sameina nálgunina við að fínstilla úthlutun vélbúnaðarauðlinda fyrir ýmsa hluti í Kubernetes. Þetta frumkvæði er knúið áfram af vaxandi þörf ýmissa nútímakerfa (frá sviði fjarskipta, vélanáms, fjármálaþjónustu o.s.frv.) fyrir afkastamikla samhliða tölvuvinnslu og lágmarka tafir á framkvæmd aðgerða, þar sem þau nota háþróaðan örgjörva og vélbúnaðar hröðunarmöguleikar. Slíkar hagræðingar í Kubernetes hafa hingað til verið náð þökk sé ólíkum íhlutum (CPU manager, Device manager, CNI), og nú verður þeim bætt við einu innra viðmóti sem sameinar nálgunina og einfaldar tengingu nýrra svipaðra - svokallaðrar toppfræði - meðvitaðir - íhlutir á Kubelet hlið. Upplýsingar - inn samsvarandi KEP.

Kubernetes 1.16: Hápunktar þess sem er nýtt
Gróðurfræðistjóri hluti Skýringarmynd

Næsti eiginleiki - athuga gáma á meðan þeir eru í gangi (ræsingarkönnun). Eins og þú veist, fyrir gáma sem taka langan tíma að setja af stað, er erfitt að fá uppfærða stöðu: þeir eru annað hvort „drepnir“ áður en þeir byrja raunverulega að virka, eða þeir lenda í biðstöðu í langan tíma. Ný ávísun (virkjað í gegnum eiginleikahliðið kallað StartupProbeEnabled) dregur úr - eða réttara sagt, frestar - áhrifum allra annarra athugana þar til belgurinn hefur lokið við að keyra. Af þessum sökum var eiginleikinn upphaflega kallaður pod-startup liveness-probe bið. Fyrir belg sem taka langan tíma að byrja geturðu kannað ástandið með tiltölulega stuttu millibili.

Að auki er endurbót fyrir RuntimeClass strax fáanleg í beta stöðu og bætir við stuðningi við „misleita klasa“. C RuntimeClass tímaáætlun Nú er alls ekki nauðsynlegt fyrir hvern hnút að hafa stuðning fyrir hvern RuntimeClass: fyrir fræbelg geturðu valið RuntimeClass án þess að hugsa um þyrpingasvæðifræðina. Áður, til að ná þessu - svo að fræbelgur lendi á hnútum með stuðning fyrir allt sem þeir þurfa - var nauðsynlegt að úthluta viðeigandi reglum til NodeSelector og þolmörkum. IN KEP Þar er talað um dæmi um notkun og auðvitað útfærsluupplýsingar.

Сеть

Tveir mikilvægir neteiginleikar sem birtust í fyrsta skipti (í alfa útgáfu) í Kubernetes 1.16 eru:

  • Stuðningur tvöfaldur netstafla - IPv4/IPv6 - og samsvarandi „skilningur“ þess á stigi fræbelgs, hnúta, þjónustu. Það felur í sér IPv4-til-IPv4 og IPv6-til-IPv6 samhæfni milli fræbelgja, frá fræbelg til ytri þjónustu, tilvísunarútfærslur (innan Bridge CNI, PTP CNI og Host-Local IPAM viðbætur), sem og öfugt Samhæft við Kubernetes klasa sem keyra Aðeins IPv4 eða IPv6. Útfærsluupplýsingar liggja fyrir KEP.

    Dæmi um að sýna IP vistföng af tveimur gerðum (IPv4 og IPv6) á listanum yfir fræbelg:

    kube-master# kubectl get pods -o wide
    NAME               READY     STATUS    RESTARTS   AGE       IP                          NODE
    nginx-controller   1/1       Running   0          20m       fd00:db8:1::2,192.168.1.3   kube-minion-1
    kube-master#

  • Nýtt API fyrir endapunkt - EndpointSlice API. Það leysir frammistöðu/sstærðarvandamál núverandi Endpoint API sem hafa áhrif á ýmsa hluti í stjórnborðinu (apiserver, etcd, endpoints-controller, kube-proxy). Nýja API verður bætt við Discovery API hópinn og mun geta þjónað tugþúsundum bakendaenda á hverri þjónustu í þyrping sem samanstendur af þúsundum hnúta. Til að gera þetta er hver þjónusta varpað á N hluti EndpointSlice, sem hver um sig hefur sjálfgefið ekki fleiri en 100 endapunkta (gildið er stillanlegt). EndpointSlice API mun einnig veita tækifæri fyrir framtíðarþróun þess: Stuðningur við margar IP tölur fyrir hvern belg, ný stöðu fyrir endapunkta (ekki aðeins Ready и NotReady), kraftmikil undirstilling fyrir endapunkta.

Sú sem kynnt var í síðustu útgáfu er komin í beta útgáfuna lokaritari, nefndur service.kubernetes.io/load-balancer-cleanup og fylgir hverri þjónustu með gerð LoadBalancer. Þegar slíkri þjónustu er eytt kemur það í veg fyrir raunverulega eyðingu auðlindarinnar þar til „hreinsun“ á öllum viðeigandi jafnvægistilföngum er lokið.

API vélar

Hinn raunverulegi „stöðugleikaáfangi“ er á sviði Kubernetes API netþjónsins og samskipti við hann. Þetta gerðist að miklu leyti þökk sé færa í stöðuga stöðu þá sem ekki þurfa sérstaka kynningu CustomResourceDefinitions (CRD), sem hafa haft beta stöðu frá fjarlægum dögum Kubernetes 1.7 (og þetta er júní 2017!). Sama stöðugleiki kom til tengdra eiginleika:

  • "undirauðlindir" með /status и /scale fyrir CustomResources;
  • viðskipti útgáfur fyrir CRD, byggðar á ytri vefhook;
  • nýlega kynnt (í K8s 1.15) sjálfgefin gildi (sjálfgefið) og sjálfvirk fjarlæging á sviði (klippa) fyrir CustomResources;
  • tækifæri nota OpenAPI v3 stefið til að búa til og birta OpenAPI skjöl sem notuð eru til að sannreyna CRD auðlindir á þjóninum.

Annar búnaður sem hefur löngum orðið kunnuglegur fyrir Kubernetes stjórnendur: aðgangsvefhook - var einnig í beta stöðu í langan tíma (síðan K8s 1.9) og er nú lýst stöðugt.

Tveir aðrir eiginleikar hafa náð beta: miðlarahlið gilda и horfa á bókamerki.

Og eina mikilvæga nýjungin í alfa útgáfunni var bilun frá SelfLink — sérstakt URI sem táknar tilgreindan hlut og er hluti af ObjectMeta и ListMeta (þ.e. hluti af hvaða hlut sem er í Kubernetes). Af hverju eru þeir að yfirgefa það? Hvatning á einfaldan hátt hljómar sem skortur á raunverulegum (yfirgnæfandi) ástæðum fyrir því að þetta svið sé enn til. Formlegri ástæður eru að hámarka frammistöðu (með því að fjarlægja óþarfa reit) og einfalda vinnu almenna forritaþjónsins, sem neyðist til að meðhöndla slíkt reit á sérstakan hátt (þetta er eini reiturinn sem er stilltur rétt á undan hlutnum er raðnúmerað). Raunveruleg úrelding (innan beta) SelfLink mun gerast með Kubernetes útgáfu 1.20, og endanleg - 1.21.

Gagnageymsla

Aðalvinnan á geymslusvæðinu, eins og í fyrri útgáfum, sést á svæðinu CSI stuðningur. Helstu breytingar hér voru:

  • í fyrsta skipti (í alfa útgáfu) birtist Stuðningur við CSI viðbót fyrir Windows starfshnúta: núverandi leið til að vinna með geymslu mun einnig koma í stað tréviðbóta í Kubernetes kjarna og FlexVolume viðbætur frá Microsoft byggðar á Powershell;

    Kubernetes 1.16: Hápunktar þess sem er nýtt
    Skipulag til að útfæra CSI viðbætur í Kubernetes fyrir Windows

  • tækifæri breyta stærð CSI bindi, kynnt aftur í K8s 1.12, hefur vaxið í beta útgáfu;
  • Svipuð "kynning" (frá alfa til beta) var náð með því að nota CSI til að búa til staðbundið skammlíft bindi (CSI Inline Volume Stuðningur).

Kynnt í fyrri útgáfu Kubernetes hljóðstyrksklónunaraðgerð (með því að nota núverandi PVC sem DataSource að búa til nýtt PVC) hefur nú einnig fengið beta stöðu.

Dagskrármaður

Tvær athyglisverðar breytingar á tímasetningu (báðar í alfa):

  • EvenPodsSpreading - tækifæri notaðu belg í stað rökréttra notkunareininga fyrir „réttláta dreifingu“ álags (eins og Deployment og ReplicaSet) og aðlaga þessa dreifingu (sem erfið krafa eða sem mjúkt ástand, þ.e. forgang). Eiginleikinn mun auka núverandi dreifingargetu fyrirhugaðra fræbelgja, eins og er takmarkaður af valkostum PodAffinity и PodAntiAffinity, sem gefur stjórnendum fínni stjórn á þessu máli, sem þýðir betra aðgengi og hámarksnotkun auðlinda. Upplýsingar - inn KEP.
  • Nota BestFit stefna в RequestedToCapacityRatio forgangsaðgerð meðan á belgskipulagningu stendur, sem mun leyfa sækja um ruslapakkning ("pökkun í gáma") fyrir bæði grunnauðlindir (örgjörva, minni) og útbreiddar (eins og GPU). Fyrir frekari upplýsingar, sjá KEP.

    Kubernetes 1.16: Hápunktar þess sem er nýtt
    Tímasetningar belg: áður en best passa stefna er notuð (beint í gegnum sjálfgefna tímaáætlun) og með notkun þess (með tímaáætlunarútvíkkun)

Að auki, fulltrúi getu til að búa til eigin tímaáætlunarviðbætur fyrir utan aðal Kubernetes þróunartréð (utan trésins).

Aðrar breytingar

Einnig í Kubernetes 1.16 útgáfunni má benda á það frumkvæði að koma með tiltækar mælikvarðar í fullri röð, eða nánar tiltekið, samkv opinberar reglugerðir til K8s tækjabúnaðar. Þeir treysta að miklu leyti á samsvarandi Prometheus skjöl. Ósamræmi kom upp af ýmsum ástæðum (til dæmis voru nokkrar mælingar einfaldlega búnar til áður en núverandi leiðbeiningar birtust) og verktaki ákváðu að það væri kominn tími til að koma öllu á einn staðal, "í takt við restina af Prometheus vistkerfinu." Núverandi útfærsla þessa framtaks er í alfa stöðu, sem verður smám saman færð í síðari útgáfum af Kubernetes í beta (1.17) og stöðugt (1.18).

Auk þess má benda á eftirfarandi breytingar:

  • Windows styður þróun с útliti Kubeadm tól fyrir þetta stýrikerfi (alfa útgáfa), tækifæri RunAsUserName fyrir Windows ílát (alfa útgáfa), framför Stuðningur við hópstýrðan þjónustureikning (gMSA) allt að beta útgáfu, stuðningur festa/tengja fyrir vSphere bindi.
  • Endurunnið gagnaþjöppunarkerfi í API svörum. Áður var HTTP sía notuð í þessum tilgangi, sem setti ýmsar takmarkanir sem komu í veg fyrir að það væri sjálfgefið virkt. „Gegnsæ beiðniþjöppun“ virkar nú: viðskiptavinir senda Accept-Encoding: gzip í hausnum fá þeir GZIP-þjappað svar ef stærð þess fer yfir 128 KB. Go viðskiptavinir styðja sjálfkrafa þjöppun (sendu nauðsynlegan haus), svo þeir munu strax taka eftir minni umferð. (Það gæti verið þörf á smávægilegum breytingum fyrir önnur tungumál.)
  • Gerðist mögulegt skala HPA frá/í núll belg byggt á ytri mælingum. Ef þú skalar út frá hlutum/ytri mælingum, þá getur þú skalað sjálfkrafa í 0 eftirlíkingar þegar vinnuálag er aðgerðalaust til að spara tilföng. Þessi eiginleiki ætti að vera sérstaklega gagnlegur fyrir tilvik þar sem starfsmenn biðja um GPU auðlindir og fjöldi mismunandi tegunda aðgerðalausra starfsmanna fer yfir fjölda tiltækra GPU.
  • Nýr viðskiptavinur - k8s.io/client-go/metadata.Client — fyrir „almennan“ aðgang að hlutum. Það er hannað til að sækja auðveldlega lýsigögn (þ.e. undirkafla metadata) úr klasaauðlindum og sinna með þeim sorphirðu og kvótaaðgerðum.
  • Byggja Kubernetes nú geturðu það án eldri („innbyggður“ í tré) skýjaveitum (alfa útgáfa).
  • Til kubeadm tólið bætt við tilraunahæfni (alfa útgáfa) til að nota sérsniðna plástra meðan á aðgerðum stendur init, join и upgrade. Lærðu meira um hvernig á að nota fánann --experimental-kustomize, sjá í KEP.
  • Nýr endapunktur fyrir apiserver - readyz, - gerir þér kleift að flytja út upplýsingar um viðbúnað þeirra. API þjónninn hefur nú einnig fána --maximum-startup-sequence-duration, sem gerir þér kleift að stjórna endurræsingu þess.
  • Tveir eiginleikar fyrir Azure lýst stöðugt: stuðningur framboðssvæði (Availability Zones) og þvert á auðlindahóp (RG). Að auki hefur Azure bætt við:
  • AWS hefur nú styðja fyrir EBS á Windows og bjartsýni EC2 API símtöl DescribeInstances.
  • Kubeadm er nú sjálfstætt flytur CoreDNS stillingar þegar CoreDNS útgáfan er uppfærð.
  • Tvöfaldur osfrv í samsvarandi Docker mynd gert world-executable, sem gerir þér kleift að keyra þessa mynd án þess að þurfa rótarréttindi. Einnig, etcd flutningsmynd hætt etcd2 útgáfu stuðningur.
  • В Cluster Autoscaler 1.16.0 skipt yfir í að nota distroless sem grunnmynd, bætt afköst, bætt við nýjum skýjaveitum (DigitalOcean, Magnum, Packet).
  • Uppfærslur í notuðum/háðum hugbúnaði: Go 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Lestu líka á blogginu okkar:

Heimild: www.habr.com

Bæta við athugasemd