Kubernetes 1.16: Jaunumi svarÄ«gākie

Kubernetes 1.16: Jaunumi svarÄ«gākie

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

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

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.

Kubernetes 1.16: Jaunumi svarÄ«gākie
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:

  • "apakÅ”resursi" ar /status Šø /scale par CustomResources;
  • 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.

Divas citas funkcijas ir sasnieguÅ”as beta versiju: attiecas uz servera pusi Šø skatÄ«ties grāmatzÄ«mes.

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ās CSI 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;

    Kubernetes 1.16: Jaunumi svarÄ«gākie
    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.

    Kubernetes 1.16: Jaunumi svarÄ«gākie
    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ēja RunAsUserName 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āts datu 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ējams HPA 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.
  • divi funkcijas Azure pasludināts par stabilu: atbalsts pieejamÄ«bas zonas (PieejamÄ«bas zonas) un pārrobežu resursu grupa (RG). Turklāt Azure ir pievienojis:
  • AWS tagad ir atbalstÄ«t EBS operētājsistēmā Windows un optimizēta EC2 API zvani DescribeInstances.
  • Kubeadm tagad ir neatkarÄ«gs migrē CoreDNS konfigurācija, jauninot CoreDNS versiju.
  • Binārie faili utt attiecÄ«gajā Docker attēlā ir darÄ«juÅ”i world-executable, kas ļauj palaist Å”o attēlu, neizmantojot root tiesÄ«bas. ArÄ« etcd migrācijas attēls beidzies etcd2 versijas atbalsts.
  • Š’ Cluster Autoscaler 1.16.0 pārgāja uz distroless izmantoÅ”anu kā bāzes attēlu, uzlabota veiktspēja, pievienoti jauni mākoņa pakalpojumu sniedzēji (DigitalOcean, Magnum, Packet).
  • Lietotās/atkarÄ«gās programmatÅ«ras atjauninājumi: Go 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru