Å odien, treÅ”dien, notiks nÄkamais Kubernetes izlaidums - 1.16. SaskaÅÄ ar tradÄ«ciju, kas izveidojusies mÅ«su emuÄram, Ŕī ir desmitÄ jubilejas reize, kad mÄs runÄjam par bÅ«tiskÄkajÄm izmaiÅÄm jaunajÄ versijÄ.
Å Ä« materiÄla sagatavoÅ”anai izmantotÄ informÄcija ir Åemta no Kubernetes uzlabojumu izsekoÅ”anas tabulas, IZMAIÅ A-1.16 un saistÄ«tie jautÄjumi, izvilkÅ”anas pieprasÄ«jumi un Kubernetes uzlaboÅ”anas priekÅ”likumi (KEP). TÄtad, ejam!...
Mezgli
K8s klastera mezglu (Kubelet) pusÄ ir parÄdÄ«ts patiesi liels skaits ievÄrojamu jauninÄjumu (alfa versijas statusÄ).
PirmkÄrt, t.s Ā«Ä«slaicÄ«gi konteineriĀ» (EfemÄri konteineri), kas izstrÄdÄta, lai vienkÄrÅ”otu atkļūdoÅ”anas procesus podiÅos. Jaunais mehÄnisms ļauj palaist Ä«paÅ”us konteinerus, kas sÄkas esoÅ”o podiÅu nosaukumvietÄ un dzÄ«vo neilgu laiku. To mÄrÄ·is ir mijiedarboties ar citiem podiem un konteineriem, lai atrisinÄtu visas problÄmas un atkļūdotu. Å ai funkcijai ir ieviesta jauna komanda kubectl debug, pÄc bÅ«tÄ«bas lÄ«dzÄ«gs kubectl exec: tikai tÄ vietÄ, lai palaistu procesu konteinerÄ (kÄ norÄdÄ«ts exec) tas palaiž konteineru podÄ. PiemÄram, Ŕī komanda savienos jaunu konteineru ar podziÅu:
SÄ«kÄku informÄciju par Ä«slaicÄ«giem konteineriem (un to izmantoÅ”anas piemÄrus) var atrast atbilstoÅ”Ä KEP. PaÅ”reizÄjÄ ievieÅ”ana (K8s 1.16) ir alfa versija, un viens no kritÄrijiem tÄs pÄrsÅ«tÄ«Å”anai uz beta versiju ir āpÄrbaudÄ«t Ephemeral Containers API vismaz 2 [Kubernetes] laidieniemā.
NB: Funkcija pÄc bÅ«tÄ«bas un pat nosaukuma atgÄdina jau esoÅ”u spraudni kubectl-debugpar ko mÄs jau rakstÄ«ju. Paredzams, ka lÄ«dz ar Ä«slaicÄ«gu konteineru parÄdÄ«Å”anos tiks pÄrtraukta atseviŔķa ÄrÄjÄ spraudÅa izstrÄde.
VÄl viens jauninÄjums - PodOverhead - paredzÄti, lai nodroÅ”inÄtu mehÄnisms pieskaitÄmo izmaksu aprÄÄ·inÄÅ”anai pÄkstÄ«m, kas var ievÄrojami atŔķirties atkarÄ«bÄ no izmantotÄ izpildlaika. PiemÄram, autori Å”is KEP rezultÄtÄ Kata konteineri, kuriem nepiecieÅ”ams palaist viesu kodolu, kata aÄ£entu, init sistÄmu utt. Kad pieskaitÄmÄs izmaksas kļūst tik lielas, to nevar ignorÄt, kas nozÄ«mÄ, ka ir nepiecieÅ”ams veids, kÄ tÄs Åemt vÄrÄ turpmÄkajÄs kvotÄs, plÄnoÅ”anÄ utt. Lai to ieviestu PodSpec lauks pievienots Overhead *ResourceList (salÄ«dzinÄjums ar datiem iekÅ”Ä RuntimeClass, ja tÄds tiek izmantots).
VÄl viens ievÄrojams jauninÄjums ir mezglu topoloÄ£ijas pÄrvaldnieks(mezgla topoloÄ£ijas pÄrvaldnieks), kas izstrÄdÄta, lai vienotu pieeju aparatÅ«ras resursu pieŔķirÅ”anas precizÄÅ”anai dažÄdiem Kubernetes komponentiem. Å o iniciatÄ«vu virza pieaugoÅ”Ä vajadzÄ«ba pÄc dažÄdÄm modernÄm sistÄmÄm (no telekomunikÄciju, maŔīnmÄcÄ«bas, finanÅ”u pakalpojumu u.c. jomas) pÄc augstas veiktspÄjas paralÄlÄs skaitļoÅ”anas un operÄciju izpildes aizkavÄÅ”anÄs samazinÄÅ”anas, kurÄm tiek izmantots uzlabots CPU un aparatÅ«ras paÄtrinÄÅ”anas iespÄjas. Å Ädas Kubernetes optimizÄcijas lÄ«dz Å”im ir sasniegtas, pateicoties atŔķirÄ«giem komponentiem (CPU pÄrvaldnieks, IerÄ«Äu pÄrvaldnieks, CNI), un tagad tiem tiks pievienots vienots iekÅ”Äjais interfeiss, kas apvieno pieeju un vienkÄrÅ”o jaunu lÄ«dzÄ«gu - tÄ saukto topoloÄ£iju - savienoÅ”anu. apzinÄties - komponenti Kubelet pusÄ. SÄ«kÄka informÄcija - iekÅ”Ä atbilstoÅ”Ä KEP.
TopoloÄ£ijas pÄrvaldnieka komponentu diagramma
NÄkamÄ funkcija - pÄrbaudot konteinerus, kamÄr tie darbojas (palaiÅ”anas zonde). KÄ zinÄms, konteineriem, kuru palaiÅ”ana prasa ilgu laiku, ir grÅ«ti iegÅ«t jaunÄko statusu: tie vai nu tiek ānogalinÄtiā, pirms tie faktiski sÄk darboties, vai arÄ« uz ilgu laiku nonÄk strupceļÄ. Jauna pÄrbaude (iespÄjota, izmantojot funkciju vÄrtus StartupProbeEnabled) atceļ vai drÄ«zÄk atliek jebkuru citu pÄrbaužu ietekmi lÄ«dz brÄ«dim, kad pods ir beidzis darboties. Å Ä« iemesla dÄļ Ŕī funkcija sÄkotnÄji tika izsaukta pod-startup dzÄ«vÄ«gums-zonde holdoff. PÄkstÄ«m, kuru palaiÅ”ana prasa ilgu laiku, varat aptaujÄt stÄvokli salÄ«dzinoÅ”i Ä«sos laika intervÄlos.
TurklÄt RuntimeClass uzlabojums ir uzreiz pieejams beta statusÄ, pievienojot atbalstu āheterogÄnÄm kopÄmā. C RuntimeClass plÄnoÅ”ana Tagad nemaz nav nepiecieÅ”ams, lai katram mezglam bÅ«tu atbalsts katrai RuntimeClass: podiem varat atlasÄ«t RuntimeClass, nedomÄjot par klastera topoloÄ£iju. IepriekÅ”, lai to panÄktu - lai podi nonÄktu mezglos ar atbalstu visam, kas tiem nepiecieÅ”ams, - bija jÄpieŔķir atbilstoÅ”i noteikumi NodeSelector un pielaidÄm. IN KEP Tas runÄ par lietoÅ”anas piemÄriem un, protams, ievieÅ”anas detaļÄm.
TÄ«kls
Divas nozÄ«mÄ«gas tÄ«kla funkcijas, kas pirmo reizi (alfa versijÄ) parÄdÄ«jÄs Kubernetes 1.16, ir:
atbalsts divu tÄ«klu steks - IPv4/IPv6 - un tai atbilstoÅ”Ä āizpratneā podiÅu, mezglu, pakalpojumu lÄ«menÄ«. Tas ietver IPv4-IPv4 un IPv6-IPv6 savietojamÄ«bu starp podiem, sÄkot no podiem lÄ«dz ÄrÄjiem pakalpojumiem, atsauces implementÄcijas (Bridge CNI, PTP CNI un Host-Local IPAM spraudÅos), kÄ arÄ« apgrieztÄ saderÄ«ba ar Kubernetes klasteriem. Tikai IPv4 vai IPv6. IevieÅ”anas informÄcija ir pieejama KEP.
PiemÄrs divu veidu (IPv4 un IPv6) IP adreÅ”u parÄdÄ«Å”anai podziÅu sarakstÄ:
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#
Jauns API galapunktam SÄkot no EndpointSlice API. Tas atrisina esoÅ”Ä Endpoint API veiktspÄjas/mÄrogojamÄ«bas problÄmas, kas ietekmÄ dažÄdus komponentus vadÄ«bas plaknÄ (apiserveris, etcd, endpoints-controller, kube-proxy). JaunÄ API tiks pievienota Discovery API grupai, un tÄ varÄs apkalpot desmitiem tÅ«kstoÅ”u aizmugursistÄmas galapunktu katrÄ pakalpojumÄ klasterÄ«, kas sastÄv no tÅ«kstoÅ”iem mezglu. Lai to izdarÄ«tu, katrs pakalpojums tiek kartÄts uz N objektiem EndpointSlice, no kuriem katram pÄc noklusÄjuma ir ne vairÄk kÄ 100 galapunkti (vÄrtÄ«ba ir konfigurÄjama). EndpointSlice API nodroÅ”inÄs arÄ« iespÄjas tÄs turpmÄkai attÄ«stÄ«bai: atbalsts vairÄkÄm IP adresÄm katram podam, jauni galapunktu stÄvokļi (ne tikai Ready Šø NotReady), dinamiska galapunktu apakÅ”kopa.
PÄdÄjÄ laidienÄ piedÄvÄtÄ versija ir sasniegusi beta versiju pabeigtÄjs, nosaukts service.kubernetes.io/load-balancer-cleanup un pievienots katram pakalpojumam ar veidu LoadBalancer. Å Äda pakalpojuma dzÄÅ”anas brÄ«dÄ« tas novÄrÅ” faktisku resursa dzÄÅ”anu, lÄ«dz tiek pabeigta visu attiecÄ«go balansÄtÄja resursu ātÄ«rÄ«Å”anaā.
API maŔīnas
ÄŖstais āstabilizÄÅ”anas pagrieziena punktsā ir Kubernetes API servera un mijiedarbÄ«bas ar to jomÄ. Tas notika lielÄ mÄrÄ pateicoties pÄrceļot stabilÄ statusÄ tos, kuriem nav nepiecieÅ”ama Ä«paÅ”a iepazÄ«stinÄÅ”ana CustomResourceDefinÄ«cijas (CRD), kurÄm ir beta statuss kopÅ” Kubernetes 1.7 tÄlajÄm dienÄm (un Å”is ir 2017. gada jÅ«nijs!). TÄda pati stabilizÄcija radÄs saistÄ«tajÄm funkcijÄm:
transformÄcija CRD versijas, pamatojoties uz ÄrÄjo tÄ«mekļa aizÄ·eri;
nesen prezentÄts (K8s 1.15) noklusÄjuma vÄrtÄ«bas (noklusÄjums) un automÄtiska lauka noÅemÅ”ana (atzaroÅ”ana) par CustomResources;
iespÄja izmantojot OpenAPI v3 shÄmu, lai izveidotu un publicÄtu OpenAPI dokumentÄciju, ko izmanto CRD resursu validÄÅ”anai servera pusÄ.
VÄl viens mehÄnisms, kas jau sen ir kļuvis pazÄ«stams Kubernetes administratoriem: uzÅemÅ”anas tÄ«mekļa aizÄ·ere - arÄ« ilgu laiku palika beta statusÄ (kopÅ” K8s 1.9) un tagad ir pasludinÄts par stabilu.
Un vienÄ«gais nozÄ«mÄ«gais jauninÄjums alfa versijÄ bija neveiksme no SelfLink ā Ä«paÅ”s URI, kas pÄrstÄv norÄdÄ«to objektu un ir daļa no tÄ ObjectMeta Šø ListMeta (t.i., daļa no jebkura objekta Kubernetes). KÄpÄc viÅi to atsakÄs? MotivÄcija vienkÄrÅ”Ä veidÄ skaÅas kÄ reÄlu (pÄrliecinoÅ”u) iemeslu neesamÄ«ba, lai Ŕī joma joprojÄm pastÄvÄtu. FormÄlÄki iemesli ir optimizÄt veiktspÄju (noÅemot nevajadzÄ«gu lauku) un vienkÄrÅ”ot vispÄrÄ«gÄ apiservera darbu, kas ir spiests apstrÄdÄt Å”Ädu lauku Ä«paÅ”Ä veidÄ (tas ir vienÄ«gais lauks, kas tiek iestatÄ«ts tieÅ”i pirms objekta tiek serializÄts). Patiesa novecoÅ”anÄs (beta versijÄ) SelfLink notiks ar Kubernetes versiju 1.20, bet galÄ«go - 1.21.
Datu glabÄÅ”ana
Galvenais darbs uzglabÄÅ”anas jomÄ, tÄpat kÄ iepriekÅ”Äjos izlaidumos, tiek novÄrots Å”ajÄ apgabalÄ CSI atbalsts. GalvenÄs izmaiÅas Å”eit bija:
pirmo reizi (alfa versijÄ) parÄdÄ«jÄsCSI spraudÅa atbalsts Windows darbinieku mezgliem: paÅ”reizÄjais veids, kÄ strÄdÄt ar krÄtuvi, aizstÄs arÄ« in-tree spraudÅus Kubernetes kodolÄ un Microsoft FlexVolume spraudÅus, kuru pamatÄ ir Powershell;
ShÄma CSI spraudÅu ievieÅ”anai Kubernetes operÄtÄjsistÄmai Windows
iespÄja CSI apjomu maiÅa, kas ieviesta jau K8s 1.12, ir izaugusi lÄ«dz beta versijai;
LÄ«dzÄ«ga "reklÄma" (no alfa uz beta) tika panÄkta, izmantojot CSI, lai izveidotu lokÄlus Ä«slaicÄ«gus sÄjumus (CSI iekļautÄ apjoma atbalsts).
Ieviests iepriekÅ”ÄjÄ Kubernetes versijÄ apjoma klonÄÅ”anas funkcija (izmantojot esoÅ”o PVC kÄ DataSource lai izveidotu jaunu PVC) arÄ« tagad ir saÅÄmis beta statusu.
PlÄnotÄjs
Divas ievÄrojamas izmaiÅas plÄnoÅ”anÄ (abi alfa):
EvenPodsSpreading - iespÄja slodžu āgodÄ«gai sadaleiā loÄ£isku pielietojuma vienÄ«bu vietÄ izmantojiet podi (piemÄram, Deployment un ReplicaSet) un Ŕī sadalÄ«juma pielÄgoÅ”anu (kÄ stingru prasÄ«bu vai kÄ mÄ«kstu nosacÄ«jumu, t.i., prioritÄti). Å Ä« funkcija paplaÅ”inÄs esoÅ”Äs plÄnoto podziÅu izplatÄ«Å”anas iespÄjas, kuras paÅ”laik ierobežo iespÄjas PodAffinity Šø PodAntiAffinity, sniedzot administratoriem precÄ«zÄku kontroli Å”ajÄ jautÄjumÄ, kas nozÄ«mÄ labÄku augstu pieejamÄ«bu un optimizÄtu resursu patÄriÅu. SÄ«kÄka informÄcija - iekÅ”Ä KEP.
Izmantot BestFit politika Š² RequestedToCapacityRatio prioritÄtes funkcija pod plÄnoÅ”anas laikÄ, kas ļaus piemÄrot tvertÅu iepakoÅ”ana (āiepakoÅ”ana konteinerosā) gan pamata resursiem (procesoram, atmiÅai), gan paplaÅ”inÄtajiem (piemÄram, GPU). SÄ«kÄku informÄciju skatiet KEP.
PlÄnoÅ”anas aplikÄcijas: pirms vislabÄkÄs atbilstÄ«bas politikas izmantoÅ”anas (tieÅ”i, izmantojot noklusÄjuma plÄnotÄju) un tÄs izmantoÅ”anas laikÄ (izmantojot plÄnotÄja paplaÅ”inÄtÄju)
Bez tam, kuru pÄrstÄv iespÄja izveidot savus plÄnotÄja spraudÅus Ärpus galvenÄ Kubernetes izstrÄdes koka (Ärpus koka).
Citas izmaiÅas
To var atzÄ«mÄt arÄ« Kubernetes 1.16 versijÄ iniciatÄ«va par atneÅ”ana pieejamie rÄdÄ«tÄji pilnÄ secÄ«bÄ, vai precÄ«zÄk, saskaÅÄ ar oficiÄlajiem noteikumiem uz K8s instrumentiem. ViÅi lielÄ mÄrÄ paļaujas uz atbilstoÅ”o Prometeja dokumentÄcija. NeatbilstÄ«bas radÄs dažÄdu iemeslu dÄļ (piemÄram, daži rÄdÄ«tÄji vienkÄrÅ”i tika izveidoti pirms paÅ”reizÄjo instrukciju parÄdÄ«Å”anÄs), un izstrÄdÄtÄji nolÄma, ka ir pienÄcis laiks visu sakÄrtot vienÄ standartÄ, āatbilstoÅ”i pÄrÄjai Prometheus ekosistÄmaiā. PaÅ”reizÄjÄ Å”Ä«s iniciatÄ«vas ievieÅ”ana ir alfa statusÄ, kas turpmÄkajÄs Kubernetes versijÄs tiks pakÄpeniski virzÄ«ta uz beta (1.17) un stabilu (1.18).
TurklÄt var atzÄ«mÄt Å”Ädas izmaiÅas:
Windows atbalsta izstrÄde Ń izskats Kubeadm utilÄ«tas Å”ai OS (alfa versijai), iespÄjaRunAsUserName Windows konteineriem (alfa versija), uzlaboÅ”anu Grupas pÄrvaldÄ«tÄ pakalpojuma konta (gMSA) atbalsts lÄ«dz beta versijai, atbalstu montÄt/pievienot vSphere sÄjumiem.
PÄrstrÄdÄtsdatu saspieÅ”anas mehÄnisms API atbildÄs. IepriekÅ” Å”iem nolÅ«kiem tika izmantots HTTP filtrs, kas noteica vairÄkus ierobežojumus, kas neļÄva to iespÄjot pÄc noklusÄjuma. "CaurspÄ«dÄ«ga pieprasÄ«juma saspieÅ”ana" tagad darbojas: klienti sÅ«ta Accept-Encoding: gzip galvenÄ tie saÅem GZIP saspiestu atbildi, ja tÄs izmÄrs pÄrsniedz 128 KB. Go klienti automÄtiski atbalsta saspieÅ”anu (vajadzÄ«gÄs galvenes nosÅ«tÄ«Å”anu), tÄpÄc viÅi uzreiz pamanÄ«s trafika samazinÄÅ”anos. (CitÄs valodÄs var bÅ«t nepiecieÅ”amas nelielas izmaiÅas.)
Kļuva iespÄjamsHPA mÄrogoÅ”ana no/uz nulli, pamatojoties uz ÄrÄjiem rÄdÄ«tÄjiem. Ja mÄrogojat, pamatojoties uz objektiem/ÄrÄju metriku, tad, kad darba slodze ir dÄ«kstÄvÄ, varat automÄtiski mÄrogot lÄ«dz 0 replikÄm, lai ietaupÄ«tu resursus. Å ai funkcijai vajadzÄtu bÅ«t Ä«paÅ”i noderÄ«gai gadÄ«jumos, kad darbinieki pieprasa GPU resursus un dažÄdu veidu dÄ«kstÄvÄ esoÅ”o darbinieku skaits pÄrsniedz pieejamo GPU skaitu.
Jauns klients - k8s.io/client-go/metadata.Client ā āvispÄrÄ«gaiā piekļuvei objektiem. Tas ir paredzÄts, lai viegli izgÅ«tu metadatus (t.i., apakÅ”sadaļu metadata) no klastera resursiem un veikt ar tiem atkritumu savÄkÅ”anas un kvotu operÄcijas.
Veidojiet Kubernetes tagad Tu vari bez mantotajiem (āiebÅ«vÄtiemā kokÄ) mÄkoÅa nodroÅ”inÄtÄjiem (alfa versija).
Uz kubeadm utilÄ«tu piebilda eksperimentÄla (alfa versija) spÄja operÄciju laikÄ lietot pielÄgotus ielÄpus init, join Šø upgrade. Uzziniet vairÄk par karoga lietoÅ”anu --experimental-kustomize, skatieties KEP.
Jauns galapunkts apiserverim ā readyz, - ļauj eksportÄt informÄciju par tÄ gatavÄ«bu. ArÄ« API serverim tagad ir karodziÅÅ” --maximum-startup-sequence-duration, ļaujot regulÄt tÄ restartÄÅ”anu.