Kubernetes 1.16: Uchafbwyntiau o'r hyn sy'n newydd

Kubernetes 1.16: Uchafbwyntiau o'r hyn sy'n newydd

Heddiw, dydd Mercher, yn digwydd datganiad nesaf Kubernetes - 1.16. Yn ôl y traddodiad sydd wedi datblygu ar gyfer ein blog, dyma'r degfed pen-blwydd yr ydym yn sôn am y newidiadau mwyaf arwyddocaol yn y fersiwn newydd.

Daw'r wybodaeth a ddefnyddiwyd i baratoi'r deunydd hwn o Tablau olrhain gwelliannau Kubernetes, CHANGELOG-1.16 a materion cysylltiedig, ceisiadau tynnu, a Chynigion Gwella Kubernetes (KEP). Felly, gadewch i ni fynd!..

Nodau

Cyflwynir nifer wirioneddol fawr o arloesiadau nodedig (mewn statws fersiwn alffa) ar ochr nodau clwstwr K8s (Kubelet).

Yn gyntaf, yr hyn a elwir «cynwysyddion effemeral» (Cynwysyddion Byrhoedlog), wedi'i gynllunio i symleiddio prosesau dadfygio mewn codennau. Mae'r mecanwaith newydd yn caniatáu ichi lansio cynwysyddion arbennig sy'n cychwyn yng ngofod enwau codennau presennol ac yn byw am gyfnod byr. Eu pwrpas yw rhyngweithio â chodau a chynwysyddion eraill er mwyn datrys unrhyw broblemau a dadfygio. Mae gorchymyn newydd wedi'i weithredu ar gyfer y nodwedd hon kubectl debug, yn debyg yn ei hanfod i kubectl exec: dim ond yn lle rhedeg proses mewn cynhwysydd (fel yn exec) mae'n lansio cynhwysydd mewn pod. Er enghraifft, bydd y gorchymyn hwn yn cysylltu cynhwysydd newydd i god:

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

Ceir manylion am gynwysyddion byrhoedlog (ac enghreifftiau o’u defnydd) yn KEP cyfatebol. Mae'r gweithrediad presennol (yn K8s 1.16) yn fersiwn alffa, ac ymhlith y meini prawf ar gyfer ei drosglwyddo i fersiwn beta mae “profi'r API Cynwysyddion Effemeral am o leiaf 2 ryddhad o [Kubernetes].”

NB: Yn ei hanfod a hyd yn oed ei enw, mae'r nodwedd yn debyg i ategyn sy'n bodoli eisoes kubectl-debugamdanom ni eisoes wedi ysgrifennu. Disgwylir, gyda dyfodiad cynwysyddion byrhoedlog, y bydd datblygiad ategyn allanol ar wahân yn dod i ben.

Arloesedd arall - PodOverhead - wedi'i gynllunio i ddarparu mecanwaith ar gyfer cyfrifo costau gorbenion codennau, a all amrywio'n fawr yn dibynnu ar yr amser rhedeg a ddefnyddir. Fel enghraifft, yr awduron y KEP hwn arwain at Kata Containers, sy'n gofyn am redeg y cnewyllyn gwadd, asiant kata, system init, ac ati. Pan fydd gorbenion mor fawr, ni ellir ei anwybyddu, sy'n golygu bod angen ffordd i'w gymryd i ystyriaeth ar gyfer cwotâu pellach, cynllunio, ac ati. I'w weithredu yn PodSpec maes wedi'i ychwanegu Overhead *ResourceList (yn cymharu â data yn RuntimeClass, os defnyddir un).

Arloesiad nodedig arall yw rheolwr topoleg nodau (Rheolwr Topoleg Node), wedi'i gynllunio i uno'r dull o fireinio'r dyraniad o adnoddau caledwedd ar gyfer gwahanol gydrannau yn Kubernetes. Mae'r fenter hon yn cael ei gyrru gan yr angen cynyddol am systemau modern amrywiol (o faes telathrebu, dysgu peiriannau, gwasanaethau ariannol, ac ati) ar gyfer cyfrifiadura cyfochrog perfformiad uchel a lleihau oedi wrth gyflawni gweithrediadau, y maent yn defnyddio CPU uwch ar eu cyfer a galluoedd cyflymu caledwedd. Hyd yn hyn mae optimeiddiadau o'r fath yn Kubernetes wedi'u cyflawni diolch i gydrannau gwahanol (rheolwr CPU, rheolwr Dyfais, CNI), a nawr byddant yn cael eu hychwanegu un rhyngwyneb mewnol sy'n uno'r dull gweithredu ac yn symleiddio cysylltiad topoleg newydd tebyg - fel y'i gelwir- ymwybodol - cydrannau ar ochr Kubelet. Manylion - yn KEP cyfatebol.

Kubernetes 1.16: Uchafbwyntiau o'r hyn sy'n newydd
Diagram Cydran Rheolwr Topoleg

Nodwedd nesaf - gwirio cynwysyddion wrth iddynt redeg (chwiliwr cychwyn). Fel y gwyddoch, ar gyfer cynwysyddion sy'n cymryd amser hir i'w lansio, mae'n anodd cael statws cyfredol: maent naill ai'n cael eu “lladd” cyn iddynt ddechrau gweithredu mewn gwirionedd, neu maent yn y diwedd mewn sefyllfa cloi am amser hir. Gwiriad newydd (wedi'i alluogi trwy giât nodwedd o'r enw StartupProbeEnabled) canslo - neu yn hytrach, gohirio - effaith unrhyw wiriadau eraill hyd nes y bydd y pod wedi gorffen rhedeg. Am y rheswm hwn, galwyd y nodwedd yn wreiddiol pod-startup liveness-probe holdoff. Ar gyfer codennau sy'n cymryd amser hir i ddechrau, gallwch chi bleidleisio'r wladwriaeth mewn cyfnodau amser cymharol fyr.

Yn ogystal, mae gwelliant ar gyfer RuntimeClass ar gael ar unwaith mewn statws beta, gan ychwanegu cefnogaeth ar gyfer “clystyrau heterogenaidd”. C Amserlennu Dosbarth Runtime Nawr nid yw'n angenrheidiol o gwbl i bob nod gael cefnogaeth ar gyfer pob RuntimeClass: ar gyfer codennau gallwch ddewis RuntimeClass heb feddwl am dopoleg y clwstwr. Yn flaenorol, er mwyn cyflawni hyn - fel bod codennau'n dod i ben ar nodau gyda chefnogaeth i bopeth sydd ei angen arnynt - roedd angen neilltuo rheolau priodol i NodeSelector a goddefiannau. YN CAP Mae'n sôn am enghreifftiau o ddefnydd ac, wrth gwrs, manylion gweithredu.

Rhwydwaith

Dwy nodwedd rwydweithio arwyddocaol a ymddangosodd am y tro cyntaf (mewn fersiwn alffa) yn Kubernetes 1.16 yw:

  • Cymorth pentwr rhwydwaith deuol - IPv4/IPv6 - a'i “ddealltwriaeth” gyfatebol ar lefel codennau, nodau, gwasanaethau. Mae'n cynnwys rhyngweithredu IPv4-i-IPv4 ac IPv6-i-IPv6 rhwng codennau, o godennau i wasanaethau allanol, gweithrediadau cyfeirio (o fewn y Bridge CNI, PTP CNI ac ategion IPAM Host-Local), yn ogystal â gwrthdroi Yn gydnaws â chlystyrau Kubernetes yn rhedeg IPv4 neu IPv6 yn unig. Mae manylion gweithredu i mewn CAP.

    Enghraifft o arddangos cyfeiriadau IP o ddau fath (IPv4 ac IPv6) yn y rhestr codennau:

    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#

  • API newydd ar gyfer Endpoint - EndpointSlice API. Mae'n datrys materion perfformiad / graddadwyedd yr API Endpoint presennol sy'n effeithio ar wahanol gydrannau yn yr awyren reoli (gweinyddwr, ac ati, rheolydd pwyntiau terfyn, kube-proxy). Bydd yr API newydd yn cael ei ychwanegu at y grŵp Discovery API a bydd yn gallu gwasanaethu degau o filoedd o olbwyntiau ar bob gwasanaeth mewn clwstwr sy'n cynnwys miloedd o nodau. I wneud hyn, mae pob Gwasanaeth yn cael ei fapio i N gwrthrych EndpointSlice, ac nid oes gan bob un ohonynt yn ddiofyn fwy na 100 pwynt terfyn (mae'r gwerth yn ffurfweddadwy). Bydd yr API EndpointSlice hefyd yn darparu cyfleoedd ar gyfer ei ddatblygiad yn y dyfodol: cefnogaeth ar gyfer cyfeiriadau IP lluosog ar gyfer pob pod, cyflyrau newydd ar gyfer pwyntiau terfyn (nid yn unig Ready и NotReady), is-osod deinamig ar gyfer pwyntiau terfyn.

Mae'r un a gyflwynwyd yn y datganiad diwethaf wedi cyrraedd y fersiwn beta terfynwrenwi service.kubernetes.io/load-balancer-cleanup ac ynghlwm wrth bob gwasanaeth gyda math LoadBalancer. Ar adeg dileu gwasanaeth o'r fath, mae'n atal yr adnodd rhag cael ei ddileu hyd nes y cwblheir “glanhau” yr holl adnoddau cydbwysedd perthnasol.

Peiriannau API

Mae'r “garreg filltir sefydlogi” go iawn yn ardal gweinydd Kubernetes API a rhyngweithio ag ef. Digwyddodd hyn yn bennaf diolch i trosglwyddo i statws sefydlog y rhai nad oes angen cyflwyniad arbennig arnynt CustomResourceDefinitions (CRD), sydd wedi cael statws beta ers dyddiau pell Kubernetes 1.7 (a dyma fis Mehefin 2017!). Daeth yr un sefydlogi i'r nodweddion cysylltiedig:

  • "subsources" gyda /status и /scale ar gyfer CustomResources;
  • trosi fersiynau ar gyfer CRD, yn seiliedig ar we bachyn allanol;
  • a gyflwynwyd yn ddiweddar (yn K8s 1.15) gwerthoedd diofyn (diofyn) a thynnu maes yn awtomatig (tocio) ar gyfer CustomResources;
  • cyfle defnyddio sgema OpenAPI v3 i greu a chyhoeddi dogfennaeth OpenAPI a ddefnyddir i ddilysu adnoddau CRD ar ochr y gweinydd.

Mecanwaith arall sydd wedi dod yn gyfarwydd i weinyddwyr Kubernetes ers tro: bachyn gwe mynediad - hefyd wedi aros mewn statws beta am amser hir (ers K8s 1.9) ac mae bellach wedi'i ddatgan yn sefydlog.

Mae dwy nodwedd arall wedi cyrraedd beta: ochr gweinydd yn berthnasol и gwylio nodau tudalen.

A'r unig arloesi arwyddocaol yn y fersiwn alffa oedd methiant o SelfLink — URI arbennig sy'n cynrychioli'r gwrthrych penodedig ac sy'n rhan ohono ObjectMeta и ListMeta (h.y. rhan o unrhyw wrthrych yn Kubernetes). Pam maen nhw'n cefnu arno? Cymhelliant mewn ffordd syml synau fel absenoldeb rhesymau gwirioneddol (llethol) i'r maes hwn fodoli o hyd. Rhesymau mwy ffurfiol yw optimeiddio perfformiad (trwy ddileu maes diangen) a symleiddio gwaith yr apiserver generig, sy'n cael ei orfodi i drin maes o'r fath mewn ffordd arbennig (dyma'r unig faes sydd wedi'i osod yn union cyn y gwrthrych yn cael ei gyfresoli). Darfodiad gwirioneddol (o fewn beta) SelfLink yn digwydd erbyn fersiwn Kubernetes 1.20, a'r rownd derfynol - 1.21.

Storio data

Gwelir y prif waith yn y maes storio, fel mewn datganiadau blaenorol, yn yr ardal Cefnogaeth CSI. Y prif newidiadau yma oedd:

  • am y tro cyntaf (mewn fersiwn alffa) ymddangos Cefnogaeth ategyn CSI ar gyfer nodau gweithiwr Windows: bydd y ffordd bresennol o weithio gyda storio hefyd yn disodli ategion mewn-coed yng nghraidd Kubernetes ac ategion FlexVolume gan Microsoft yn seiliedig ar Powershell;

    Kubernetes 1.16: Uchafbwyntiau o'r hyn sy'n newydd
    Cynllun ar gyfer gweithredu ategion CSI yn Kubernetes ar gyfer Windows

  • cyfle newid maint cyfeintiau CSI, a gyflwynwyd yn ôl yn K8s 1.12, wedi tyfu i fersiwn beta;
  • Cyflawnwyd "hyrwyddiad" tebyg (o alffa i beta) trwy'r gallu i ddefnyddio CSI i greu cyfrolau byrhoedlog lleol (Cymorth Cyfrol Inline CSI).

Wedi'i gyflwyno yn y fersiwn flaenorol o Kubernetes swyddogaeth clonio cyfaint (gan ddefnyddio PVC presennol fel DataSource i greu PVC newydd) hefyd bellach wedi derbyn statws beta.

Trefnydd

Dau newid nodedig i amserlennu (y ddau yn alpha):

  • EvenPodsSpreading - cyfle defnyddio codennau yn lle unedau cymhwyso rhesymegol ar gyfer “dosbarthiad teg” llwythi (fel Deployment a ReplicaSet) ac addasu'r dosbarthiad hwn (fel gofyniad caled neu fel cyflwr meddal, h.y. blaenoriaeth). Bydd y nodwedd yn ehangu galluoedd dosbarthu presennol codennau wedi'u cynllunio, sy'n gyfyngedig ar hyn o bryd gan opsiynau PodAffinity и PodAntiAffinity, gan roi rheolaeth fanylach i weinyddwyr yn y mater hwn, sy'n golygu gwell argaeledd uchel a defnydd gorau o adnoddau. Manylion - yn CAP.
  • Defnyddio Polisi BestFit в RequestedToCapcityRatio Swyddogaeth Blaenoriaeth yn ystod cynllunio codennau, a fydd yn caniatáu gwneud cais pacio bin (“pacio mewn cynwysyddion”) ar gyfer adnoddau sylfaenol (prosesydd, cof) a rhai estynedig (fel GPU). Am ragor o fanylion, gw CAP.

    Kubernetes 1.16: Uchafbwyntiau o'r hyn sy'n newydd
    Podiau amserlennu: cyn defnyddio'r polisi ffit orau (yn uniongyrchol trwy'r rhaglennydd rhagosodedig) a chyda'i ddefnydd (trwy estynnwr amserlen)

Yn ogystal, wedi'i gyflwyno y gallu i greu eich ategion amserlennu eich hun y tu allan i brif goeden ddatblygu Kubernetes (allan o'r goeden).

Newidiadau eraill

Hefyd yn y datganiad Kubernetes 1.16 gallwch chi nodi menter ar gyfer dwyn metrigau sydd ar gael mewn trefn lawn, neu yn fwy manwl, yn unol â rheoliadau swyddogol i K8s offeryniaeth. Maent yn dibynnu i raddau helaeth ar y cyfatebol Dogfennaeth Prometheus. Cododd anghysondebau am wahanol resymau (er enghraifft, crëwyd rhai metrigau yn syml cyn i’r cyfarwyddiadau presennol ymddangos), a phenderfynodd y datblygwyr ei bod yn bryd dod â phopeth i un safon, “yn unol â gweddill ecosystem Prometheus.” Mae gweithrediad presennol y fenter hon mewn statws alffa, a fydd yn cael ei hyrwyddo'n raddol mewn fersiynau dilynol o Kubernetes i beta (1.17) a sefydlog (1.18).

Yn ogystal, gellir nodi'r newidiadau canlynol:

  • Mae Windows yn cefnogi datblygiad с gwedd Cyfleustodau Kubeadm ar gyfer yr OS hwn (fersiwn alffa), cyfle RunAsUserName ar gyfer cynwysyddion Windows (fersiwn alffa), gwelliant Cefnogaeth Cyfrif Gwasanaeth a Reolir gan Grŵp (gMSA) hyd at fersiwn beta, cefnogaeth gosod / atodi ar gyfer cyfrolau vSphere.
  • Wedi'i ailgylchu mecanwaith cywasgu data mewn ymatebion API. Yn flaenorol, defnyddiwyd hidlydd HTTP at y dibenion hyn, a osododd nifer o gyfyngiadau a oedd yn ei atal rhag cael ei alluogi yn ddiofyn. Mae "cywasgu cais tryloyw" bellach yn gweithio: cleientiaid yn anfon Accept-Encoding: gzip yn y pennawd, maent yn derbyn ymateb cywasgedig GZIP os yw ei faint yn fwy na 128 KB. Mae cleientiaid Ewch yn cefnogi cywasgu yn awtomatig (anfon y pennawd gofynnol), felly byddant yn sylwi ar ostyngiad mewn traffig ar unwaith. (Efallai y bydd angen mân addasiadau ar gyfer ieithoedd eraill.)
  • Daeth yn bosibl graddio HPA o/i godennau sero yn seiliedig ar fetrigau allanol. Os ydych chi'n graddio'n seiliedig ar wrthrychau/metrigau allanol, yna pan fydd llwythi gwaith yn segur gallwch chi raddio i 0 replicas yn awtomatig i arbed adnoddau. Dylai'r nodwedd hon fod yn arbennig o ddefnyddiol mewn achosion lle mae gweithwyr yn gofyn am adnoddau GPU, ac mae nifer y gwahanol fathau o weithwyr segur yn fwy na nifer y GPUs sydd ar gael.
  • Cleient newydd - k8s.io/client-go/metadata.Client — ar gyfer mynediad “cyffredinol” i wrthrychau. Fe'i cynlluniwyd i adalw metadata yn hawdd (h.y. is-adran metadata) o adnoddau clwstwr a pherfformio gweithrediadau casglu sbwriel a chwota gyda nhw.
  • Adeiladu Kubernetes nawr gallwch chi heb etifeddiaeth (“built-in” yn y goeden) darparwyr cwmwl (fersiwn alffa).
  • I'r cyfleustodau kubeadm wedi adio gallu arbrofol (fersiwn alffa) i gymhwyso clytiau addasu yn ystod gweithrediadau init, join и upgrade. Dysgwch fwy am sut i ddefnyddio'r faner --experimental-kustomize, gweler yn CAP.
  • Terfynbwynt newydd ar gyfer gweinydd gwenyn - readyz, - yn eich galluogi i allforio gwybodaeth am ei barodrwydd. Mae gan y gweinydd API hefyd faner bellach --maximum-startup-sequence-duration, sy'n eich galluogi i reoleiddio ei ailgychwyn.
  • Dau nodweddion ar gyfer Azure datganedig sefydlog: support parthau argaeledd (Parthau Argaeledd) a grŵp traws-adnoddau (RG). Yn ogystal, mae Azure wedi ychwanegu:
    • cymorth dilysu AAD ac ADFS;
    • haniaethol service.beta.kubernetes.io/azure-pip-name i nodi IP cyhoeddus y balans llwyth;
    • cyfle настройки LoadBalancerName и LoadBalancerResourceGroup.
  • Mae gan AWS bellach cefnogaeth ar gyfer EBS ar Windows a optimeiddio Galwadau API EC2 DescribeInstances.
  • Mae Kubeadm bellach yn annibynnol yn mudo Cyfluniad CoreDNS wrth uwchraddio'r fersiwn CoreDNS.
  • Deuaidd etcd yn y ddelwedd Docker cyfatebol wedi gwneud byd-gweithredadwy, sy'n eich galluogi i redeg y ddelwedd hon heb yr angen am hawliau gwraidd. Hefyd, delwedd mudo ac ati stopio cefnogaeth fersiwn etcd2.
  • В Cluster Autoscaler 1.16.0 newid i ddefnyddio distroless fel y ddelwedd sylfaenol, perfformiad gwell, ychwanegu darparwyr cwmwl newydd (DigitalOcean, Magnum, Packet).
  • Diweddariadau mewn meddalwedd a ddefnyddir/dibynnol: Ewch 1.12.9, ac ati 3.3.15, CoreDNS 1.6.2.

PS

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw