Kubernetes 1.16: ħarsa ġenerali lejn l-innovazzjonijiet ewlenin

Kubernetes 1.16: ħarsa ġenerali lejn l-innovazzjonijiet ewlenin

Illum, l-Erbgħa, ser iseħħ rilaxx li jmiss ta 'Kubernetes - 1.16. Skont it-tradizzjoni li żviluppat għall-blog tagħna, dan huwa l-għaxar anniversarju żmien li qed nitkellmu dwar l-aktar bidliet sinifikanti fil-verżjoni l-ġdida.

L-informazzjoni użata biex tipprepara dan il-materjal hija meħuda minn Kubernetes titjib tabelli ta 'traċċar, LOG TAL-BIDLA-1.16 u kwistjonijiet relatati, pull requests, u Kubernetes Enhancement Proposals (KEP). Mela, ejja!...

Nodi

Numru tassew kbir ta 'innovazzjonijiet notevoli (fl-istatus tal-verżjoni alfa) huma ppreżentati fuq in-naħa tan-nodi tal-cluster K8s (Kubelet).

L-ewwelnett, l-hekk imsejħa «kontenituri effimeri» (Kontenituri Effimeri), iddisinjat biex jissimplifika l-proċessi ta 'debugging fil-miżwed. Il-mekkaniżmu l-ġdid jippermettilek li tniedi kontenituri speċjali li jibdew fl-ispazju tal-isem ta 'miżwed eżistenti u jgħixu għal żmien qasir. L-iskop tagħhom huwa li jinteraġixxu ma 'miżwed u kontenituri oħra sabiex isolvu kwalunkwe problema u jiddebaggjaw. Ġie implimentat kmand ġdid għal din il-karatteristika kubectl debug, simili essenzjalment għal kubectl exec: biss minflok ma tmexxi proċess f'kontenitur (bħal fi exec) tniedi kontejner f'pod. Pereżempju, dan il-kmand se jgħaqqad kontenitur ġdid ma' pod:

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

Dettalji dwar kontenituri effimeri (u eżempji tal-użu tagħhom) jistgħu jinstabu fi KEP korrispondenti. L-implimentazzjoni attwali (f'K8s 1.16) hija verżjoni alpha, u fost il-kriterji għat-trasferiment tagħha għal verżjoni beta hemm "l-ittestjar tal-Ephemeral Containers API għal mill-inqas 2 rilaxxi ta' [Kubernetes]."

NB: Fl-essenza tagħha u anke isimha, il-karatteristika tixbah plugin diġà eżistenti kubectl-debugdwaru aħna diġà kiteb. Huwa mistenni li bil-miġja ta 'kontenituri effimeri, l-iżvilupp ta' plugin estern separat se jieqaf.

Innovazzjoni oħra - PodOverhead - iddisinjati biex jipprovdu mekkaniżmu għall-kalkolu tal-ispejjeż ġenerali għall-imżiewed, li jistgħu jvarjaw ħafna skont ir-runtime użat. Bħala eżempju, l-awturi dan il-KEP jirriżulta f'Kontenituri Kata, li jeħtieġu t-tħaddim tal-kernel mistieden, l-aġent tal-kata, is-sistema init, eċċ. Meta l-overhead isir daqshekk kbir, ma jistax jiġi injorat, li jfisser li jeħtieġ li jkun hemm mod kif jittieħed kont għal aktar kwoti, ippjanar, eċċ. Biex timplimentah fi PodSpec qasam miżjud Overhead *ResourceList (jqabbel mad-dejta fi RuntimeClass, jekk tintuża waħda).

Innovazzjoni notevoli oħra hija maniġer tat-topoloġija tan-node (Maniġer tat-Topoloġija tan-Nodi), iddisinjat biex jgħaqqad l-approċċ għall-irfinar tal-allokazzjoni tar-riżorsi tal-ħardwer għal diversi komponenti f'Kubernetes. Din l-inizjattiva hija mmexxija mill-ħtieġa dejjem tikber ta’ diversi sistemi moderni (mill-qasam tat-telekomunikazzjoni, tagħlim tal-magni, servizzi finanzjarji, eċċ.) għal kompjuters paralleli ta’ prestazzjoni għolja u jimminimizzaw id-dewmien fl-eżekuzzjoni tal-operazzjonijiet, li għalihom jużaw CPU u CPU avvanzati. kapaċitajiet ta' aċċelerazzjoni tal-ħardwer. Tali ottimizzazzjonijiet fil-Kubernetes s'issa nkisbu grazzi għal komponenti differenti (maniġer CPU, Device manager, CNI), u issa se jiżdiedu interface intern wieħed li jgħaqqad l-approċċ u jissimplifika l-konnessjoni ta 'similar ġdid - hekk imsejħa topoloġija - konxji - komponenti fuq in-naħa Kubelet. Dettalji - fi KEP korrispondenti.

Kubernetes 1.16: ħarsa ġenerali lejn l-innovazzjonijiet ewlenin
Dijagramma tal-Komponent tal-Maniġer tat-Topoloġija

Karatteristika li jmiss - iċċekkja l-kontenituri waqt li jkunu qed jaħdmu (sonda tal-istartjar). Kif tafu, għall-kontenituri li jieħdu ħafna żmien biex jitniedu, huwa diffiċli li tikseb status aġġornat: jew huma "maqtula" qabel ma fil-fatt jibdew jaħdmu, jew jispiċċaw f'imblokk għal żmien twil. Kontroll ġdid (attivat permezz tal-bieb tal-karatteristika msejjaħ StartupProbeEnabled) tikkanċella - jew aħjar, tiddiferixxi - l-effett ta' kwalunkwe kontrolli oħra sal-mument li l-pod ikun spiċċa jaħdem. Għal din ir-raġuni, il-karatteristika kienet oriġinarjament imsejħa pod-startup liveness-sonda holdoff. Għall-imżiewed li jieħdu żmien twil biex jibdew, tista' tistħarreġ l-istat f'intervalli ta' żmien relattivament qosra.

Barra minn hekk, titjib għal RuntimeClass huwa immedjatament disponibbli fl-istatus beta, li jżid l-appoġġ għal "clusters eteroġenji". Ċ RuntimeClass Skedar Issa mhu meħtieġ xejn li kull nodu jkollu appoġġ għal kull RuntimeClass: għall-imżiewed tista' tagħżel RuntimeClass mingħajr ma taħseb dwar it-topoloġija tal-cluster. Preċedentement, biex jinkiseb dan - sabiex il-miżwed jispiċċaw fuq nodi b'appoġġ għal dak kollu li għandhom bżonn - kien meħtieġ li jiġu assenjati regoli xierqa lil NodeSelector u tollerazzjonijiet. IN KAP Titkellem dwar eżempji ta 'użu u, ovvjament, dettalji ta' implimentazzjoni.

Network

Żewġ karatteristiċi tan-netwerking sinifikanti li dehru għall-ewwel darba (f'verżjoni alpha) f'Kubernetes 1.16 huma:

  • Appoġġ munzell tan-netwerk doppju - IPv4/IPv6 - u l-"fehim" korrispondenti tiegħu fil-livell ta 'miżwed, nodi, servizzi. Jinkludi interoperabbiltà IPv4-to-IPv4 u IPv6-to-IPv6 bejn il-miżwed, mill-imżiewed għal servizzi esterni, implimentazzjonijiet ta’ referenza (fi ħdan il-plugins Bridge CNI, PTP CNI u Host-Local IPAM), kif ukoll reverse Kompatibbli mal-clusters ta’ Kubernetes li qed jaħdmu IPv4 jew IPv6 biss. Id-dettalji tal-implimentazzjoni jinsabu fi KAP.

    Eżempju tal-wiri ta’ indirizzi IP ta’ żewġ tipi (IPv4 u IPv6) fil-lista ta’ pods:

    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 ġdida għal Endpoint - EndpointSlice API. Issolvi l-kwistjonijiet ta 'prestazzjoni/skalabbiltà tal-API Endpoint eżistenti li jaffettwaw diversi komponenti fil-pjan ta' kontroll (apiserver, etcd, endpoints-controller, kube-proxy). L-API l-ġdida se tiżdied mal-grupp Discovery API u se tkun kapaċi sservi għexieren ta 'eluf ta' endpoints backend fuq kull servizz fi cluster li jikkonsisti f'eluf ta 'nodi. Biex tagħmel dan, kull Servizz jiġi mmappjat għal N oġġetti EndpointSlice, li kull wieħed minnhom awtomatikament m'għandux aktar minn 100 punt finali (il-valur huwa konfigurabbli). L-API EndpointSlice se tipprovdi wkoll opportunitajiet għall-iżvilupp futur tagħha: appoġġ għal indirizzi IP multipli għal kull pod, stati ġodda għal endpoints (mhux biss Ready и NotReady), subsetting dinamiku għall-endpoints.

Dik li ġiet ippreżentata fl-aħħar ħarġa laħqet il-verżjoni beta finalizzatur, jismu service.kubernetes.io/load-balancer-cleanup u mehmuża ma’ kull servizz bit-tip LoadBalancer. Fil-ħin tat-tħassir ta 'servizz bħal dan, jipprevjeni t-tħassir attwali tar-riżors sakemm titlesta t-"tindif" tar-riżorsi kollha tal-bilanċjanti rilevanti.

Makkinarju API

Il-"tragward ta' stabbilizzazzjoni" reali jinsab fiż-żona tas-server tal-API Kubernetes u l-interazzjoni miegħu. Dan ġara l-aktar grazzi għal jittrasferixxu għal status stabbli dawk li m'għandhomx bżonn introduzzjoni speċjali CustomResourceDefinitions (CRD), li kellhom status beta mill-jiem imbiegħda ta 'Kubernetes 1.7 (u dan huwa Ġunju 2017!). L-istess stabbilizzazzjoni waslet għall-karatteristiċi relatati:

  • "sottoriżorsi" ma /status и /scale għal CustomResources;
  • konverżjoni verżjonijiet għal CRD, ibbażati fuq webhook estern;
  • ippreżentat reċentement (f'K8s 1.15) valuri default (default) u t-tneħħija awtomatika tal-għalqa (żbir) għal CustomResources;
  • opportunità billi tuża l-iskema OpenAPI v3 biex toħloq u tippubblika dokumentazzjoni OpenAPI użata biex tivvalida r-riżorsi CRD fuq in-naħa tas-server.

Mekkaniżmu ieħor li ilu sar familjari għall-amministraturi ta’ Kubernetes: webhook tad-dħul - baqgħet ukoll fi status beta għal żmien twil (minn K8s 1.9) u issa hija ddikjarata stabbli.

Żewġ karatteristiċi oħra laħqu l-beta: naħa tas-server japplikaw и bookmarks għassa.

U l-unika innovazzjoni sinifikanti fil-verżjoni alpha kienet falliment minn SelfLink — URI speċjali li jirrappreżenta l-oġġett speċifikat u li jkun parti minnu ObjectMeta и ListMeta (jiġifieri parti minn kwalunkwe oġġett f'Kubernetes). Għaliex qed jabbandunawha? Motivazzjoni b'mod sempliċi ħsejjes bħala n-nuqqas ta’ raġunijiet reali (l-kbira) biex dan il-qasam għadu jeżisti. Raġunijiet aktar formali huma biex tiġi ottimizzata l-prestazzjoni (billi tneħħi qasam mhux meħtieġ) u biex tissimplifika x-xogħol tal-ġeneriku-apiserver, li huwa sfurzat li jimmaniġġja qasam bħal dan b'mod speċjali (dan huwa l-uniku qasam li huwa stabbilit eżatt qabel l-oġġett hija serje). Obsolexxenza vera (fi ħdan beta) SelfLink se jiġri mill-verżjoni Kubernetes 1.20, u finali - 1.21.

Ħażna tad-dejta

Ix-xogħol ewlieni fiż-żona tal-ħażna, bħal fir-rilaxxi preċedenti, huwa osservat fiż-żona Appoġġ CSI. Il-bidliet ewlenin hawnhekk kienu:

  • għall-ewwel darba (fil-verżjoni alpha) deher Appoġġ tal-plugin CSI għal nodi tal-ħaddiema tal-Windows: il-mod attwali ta 'ħidma mal-ħażna se jissostitwixxi wkoll plugins in-tree fil-qalba ta' Kubernetes u plugins FlexVolume minn Microsoft ibbażati fuq Powershell;

    Kubernetes 1.16: ħarsa ġenerali lejn l-innovazzjonijiet ewlenin
    Skema għall-implimentazzjoni ta' plugins CSI f'Kubernetes għall-Windows

  • opportunità ridimensjonar volumi CSI, introdotti lura f'K8s 1.12, kiber għal verżjoni beta;
  • "Promozzjoni" simili (minn alpha għal beta) inkisbet permezz tal-abbiltà li tuża CSI biex toħloq volumi effimeri lokali (CSI Inline Volum Appoġġ).

Introdott fil-verżjoni preċedenti ta' Kubernetes funzjoni tal-klonazzjoni tal-volum (bl-użu tal-PVC eżistenti bħala DataSource biex toħloq PVC ġdid) issa rċeviet ukoll status beta.

Scheduler

Żewġ bidliet notevoli fl-iskedar (it-tnejn f'alpha):

  • EvenPodsSpreading - opportunità uża imżiewed minflok unitajiet ta 'applikazzjoni loġika għal "distribuzzjoni ġusta" ta' tagħbijiet (bħal Deployment u ReplicaSet) u jaġġustaw din id-distribuzzjoni (bħala rekwiżit iebes jew bħala kundizzjoni artab, jiġifieri prijorità). Il-karatteristika se tespandi l-kapaċitajiet ta 'distribuzzjoni eżistenti tal-imżiewed ippjanati, bħalissa limitati mill-għażliet PodAffinity и PodAntiAffinity, li tagħti lill-amministraturi kontroll aħjar f'din il-kwistjoni, li jfisser disponibbiltà għolja aħjar u konsum ottimizzat tar-riżorsi. Dettalji - fi KAP.
  • Użu Politika BestFit в RequestedToCapacityRatio Funzjoni ta' Prijorità waqt l-ippjanar pod, li se jippermetti japplikaw ippakkjar bin (“ippakkjar f’kontenituri”) kemm għar-riżorsi bażiċi (proċessur, memorja) kif ukoll għal dawk estiżi (bħal GPU). Għal aktar dettalji, ara KAP.

    Kubernetes 1.16: ħarsa ġenerali lejn l-innovazzjonijiet ewlenin
    Skedar pods: qabel ma tuża l-politika ta' l-aħjar qagħda (direttament permezz ta' scheduler default) u bl-użu tagħha (permezz ta' scheduler extender)

Barra minn hekk, ippreżentata il-ħila li toħloq plugins Scheduler tiegħek barra s-siġra ewlenija tal-iżvilupp ta 'Kubernetes (barra mis-siġra).

Bidliet oħra

Ukoll fir-rilaxx ta 'Kubernetes 1.16 tista' tinnota inizjattiva għal iġibu metriċi disponibbli f'ordni sħiħa, jew aktar preċiżament, skond regolamenti uffiċjali għall-istrumentazzjoni K8s. Huma jistrieħu fil-biċċa l-kbira fuq il-korrispondenti Dokumentazzjoni Prometheus. Inqalgħu inkonsistenzi għal diversi raġunijiet (pereżempju, xi metriċi nħolqu sempliċiment qabel ma dehru l-istruzzjonijiet attwali), u l-iżviluppaturi ddeċidew li kien wasal iż-żmien li jġibu kollox għal standard wieħed, "f'konformità mal-bqija tal-ekosistema Prometheus." L-implimentazzjoni attwali ta 'din l-inizjattiva hija fi status alfa, li se jiġi promoss progressivament fil-verżjonijiet sussegwenti ta' Kubernetes għal beta (1.17) u stabbli (1.18).

Barra minn hekk, il-bidliet li ġejjin jistgħu jiġu nnotati:

  • Windows appoġġ għall-iżvilupp с dehra Utilitajiet Kubeadm għal dan l-OS (verżjoni alfa), opportunità RunAsUserName għall-kontenituri tal-Windows (verżjoni alfa), titjib Il-Kont tas-Servizz Immexxi mill-Grupp (gMSA) jappoġġja sa verżjoni beta, appoġġ immuntat/twaħħil għal volumi vSphere.
  • Riċiklat mekkaniżmu ta 'kompressjoni tad-data fit-tweġibiet API. Preċedentement, filtru HTTP kien użat għal dawn l-iskopijiet, li impona għadd ta 'restrizzjonijiet li ma ħallewx jiġi attivat awtomatikament. "Kompressjoni tat-talba trasparenti" issa taħdem: klijenti jibagħtu Accept-Encoding: gzip fl-header, jirċievu rispons kompressat b'GZIP jekk id-daqs tiegħu jaqbeż il-128 KB. Il-klijenti Go awtomatikament jappoġġjaw il-kompressjoni (jibgħatu l-header meħtieġ), u għalhekk jinnutaw immedjatament tnaqqis fit-traffiku. (Jistgħu jkunu meħtieġa modifiki żgħar għal lingwi oħra.)
  • Sar possibbli l-iskala tal-HPA minn/għal żero miżwed ibbażat fuq metriċi esterni. Jekk tiskala bbażata fuq oġġetti/metriċi esterni, allura meta l-piżijiet tax-xogħol ikunu inattivi tista' awtomatikament tiskala għal 0 repliki biex tiffranka r-riżorsi. Din il-karatteristika għandha tkun utli b'mod speċjali għal każijiet fejn il-ħaddiema jitolbu riżorsi tal-GPU, u n-numru ta 'tipi differenti ta' ħaddiema inattivi jaqbeż in-numru ta 'GPUs disponibbli.
  • Klijent ġdid - k8s.io/client-go/metadata.Client — għal aċċess “ġeneralizzat” għal oġġetti. Hija mfassla biex tirkupra faċilment il-metadejta (jiġifieri s-subsezzjoni metadata) mir-riżorsi tal-clusters u jwettaq ġbir taż-żibel u operazzjonijiet ta' kwoti magħhom.
  • Ibni Kubernetes issa tista' mingħajr fornituri ta' sħab (verżjoni alfa) mingħajr legati (inkorporati fis-siġra).
  • Għall-utilità kubeadm miżjud sperimentali (verżjoni alfa) kapaċità li japplikaw customize garża waqt l-operazzjonijiet init, join и upgrade. Tgħallem aktar dwar kif tuża l-bandiera --experimental-kustomize, ara ġewwa KAP.
  • Endpoint ġdid għal apiserver - readyz, - jippermettilek tesporta informazzjoni dwar il-prontezza tagħha. Is-server tal-API issa wkoll għandu bandiera --maximum-startup-sequence-duration, li jippermettilek tirregola l-bidu mill-ġdid tagħha.
  • Tnejn karatteristiċi għal Azure iddikjarat stabbli: appoġġ żoni ta’ disponibbiltà (Żoni ta’ Disponibbiltà) u grupp ta' riżorsi inkroċjati (RG). Barra minn hekk, Azure żiedet:
  • AWS issa għandha appoġġ għall-EBS fuq Windows u ottimizzati Sejħiet EC2 API DescribeInstances.
  • Kubeadm issa huwa indipendenti jemigra Konfigurazzjoni CoreDNS meta taġġorna l-verżjoni CoreDNS.
  • Binarji eċċd fl-immaġni korrispondenti ta' Docker ghamel eżegwibbli fid-dinja, li jippermettilek tmexxi din l-immaġni mingħajr il-ħtieġa għal drittijiet tal-għeruq. Ukoll, immaġni tal-migrazzjoni etcd waqfet appoġġ verżjoni etcd2.
  • В Cluster Autoscaler 1.16.0 qalbu għall-użu ta 'distroless bħala l-immaġni bażi, prestazzjoni mtejba, żiedet fornituri ġodda tas-sħab (DigitalOcean, Magnum, Packet).
  • Aġġornamenti f'softwer użat/dipendenti: Mur 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment