Kubernetes 1.16: Mga highlight sa kung unsa ang bag-o

Kubernetes 1.16: Mga highlight sa kung unsa ang bag-o

Karong Miyerkules mahitabo ang sunod nga pagpagawas sa Kubernetes mao ang 1.16. Sumala sa tradisyon nga naugmad alang sa among blog, alang sa ikanapulo nga anibersaryo nga panahon among gihisgutan ang labing hinungdanon nga mga pagbag-o sa bag-ong bersyon.

Ang impormasyon nga gigamit sa pag-andam niini nga materyal gikuha gikan sa Mga lamesa sa pagsubay sa mga pagpaayo sa Kubernetes, CHANGELOG-1.16 ug may kalabutan nga mga isyu, pull request, ug Kubernetes Enhancement Proposals (KEP). So, lakaw na ta!..

Mga node

Ang usa ka tinuod nga dako nga gidaghanon sa mga bantog nga mga inobasyon (sa alpha version status) gipresentar sa kilid sa mga node sa K8s clusters (Kubelet).

Una, adunay mga gitawag nga «ephemeral nga mga sudlanan» (Ephemeral nga mga sudlanan), gidesinyo sa pagpayano sa mga proseso sa pag-debug sa mga pod. Ang bag-ong mekanismo nagtugot kanimo sa pagpadagan sa mga espesyal nga sudlanan nga magsugod sa namespace sa mga kasamtangan nga pod ug mabuhi sa mubo nga panahon. Ang ilang katuyoan mao ang pagpakig-uban sa ubang mga pod ug mga sudlanan aron masulbad ang bisan unsang mga problema ug pag-debug. Usa ka bag-ong sugo ang gipatuman alang niini nga bahin kubectl debug, susama sa esensya sa kubectl exec: lamang imbis nga magpadagan sa usa ka proseso sa usa ka sudlanan (sama sa kaso exec) kini magsugod sa sudlanan sa pod. Pananglitan, kini nga sugo maglakip sa usa ka bag-ong sudlanan sa usa ka pod:

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

Ang mga detalye bahin sa ephemeral nga mga sudlanan (ug mga pananglitan kung giunsa kini paggamit) makita sa katugbang nga KEP. Ang kasamtangang implementasyon (sa K8s 1.16) kay alpha version, ug lakip sa mga criteria para sa transisyon niini ngadto sa beta version mao ang "pagsulay sa Ephemeral Containers API sa labing menos 2 releases [Kubernetes]".

NB: Sa esensya niini ug bisan ang ngalan sa bahin susama sa usa ka kasamtangan nga plugin kubectl-debugmahitungod sa diin kita nagsulat na. Gituohan nga sa pag-abut sa ephemeral nga mga sudlanan, ang pag-uswag sa usa ka bulag nga eksternal nga plugin mohunong.

Laing kabag-ohan - PodOverhead - gituyo sa paghatag mekanismo sa pagkalkula pod sa overhead, nga mahimong lahi kaayo depende sa executable environment (runtime) nga gigamit. Ingon nga pananglitan, ang mga tagsulat kini nga kep cite Kata Containers, nga nagkinahanglan sa guest kernel, kata agent, init system, ug uban pa nga modagan. Sa diha nga ang overhead nakakuha niini nga dako, kini dili mahimong ibalewala, nga nagpasabot nga kinahanglan nga adunay usa ka paagi sa pagkonsiderar niini alang sa dugang nga pagkutlo, pag-iskedyul, ug uban pa. Alang sa pagpatuman niini sa PodSpec field gidugang Overhead *ResourceList (itandi sa datos sa RuntimeClass, kung ang usa gigamit).

Ang laing talagsaong kabag-ohan mao ang node topology manager (Node Topology Manager), gidesinyo aron mahiusa ang pamaagi sa pag-ayo sa pag-apod-apod sa mga kahinguhaan sa hardware alang sa lainlaing mga sangkap sa Kubernetes. Kini nga inisyatiba tungod sa nagkadako nga panginahanglan sa lain-laing mga modernong sistema (gikan sa natad sa telekomunikasyon, machine learning, pinansyal nga mga serbisyo, ug uban pa) alang sa high-performance parallel computing ug pagminus sa mga paglangan sa pagpatuman sa mga operasyon, diin sila naggamit sa advanced CPU. ug mga kapabilidad sa pagpadali sa hardware. Ang ingon nga mga pag-optimize sa Kubernetes hangtod karon nakab-ot salamat sa lainlaing mga sangkap (CPU manager, Device manager, CNI), ug karon sila magdugang usa ka internal nga interface nga naghiusa sa pamaagi ug gipasimple ang koneksyon sa bag-ong parehas - gitawag nga topology-aware. - mga sangkap sa bahin sa Kubelet. Mga Detalye - sa katugbang nga KEP.

Kubernetes 1.16: Mga highlight sa kung unsa ang bag-o
Topology Manager Component Diagram

Ang sunod nga bahin mao ang pagsusi sa mga sudlanan samtang sila nagdagan (pagsugod probe). Sama sa imong nahibal-an, alang sa mga sudlanan nga dugay nga maglansad, lisud ang pagkuha sa usa ka labing bag-o nga kahimtang: sila "gipatay" bisan sa wala pa sila magsugod sa paglihok, o sila nahulog sa usa ka deadlock sa dugay nga panahon . Bag-ong tseke (gi-enable pinaagi sa feature gate nga gitawag StartupProbeEnabled) kanselahon-o hinoon, paglangay-bisan unsa nga mga pagsusi hangtud nga ang pod nahuman na sa pagdagan. Tungod niini nga hinungdan, ang bahin orihinal nga gitawag pod-startup liveness-probe holdoff. Alang sa mga pod nga dugay nga magsugod, mahimo nimong i-poll ang status sa medyo mubu nga mga agwat sa oras.

Dugang pa, ang usa ka pag-uswag alang sa RuntimeClass gipaila dayon sa beta status, pagdugang suporta alang sa "heterogeneous clusters". C Pag-iskedyul sa RuntimeClass karon dili na kinahanglan alang sa matag node nga adunay suporta alang sa matag RuntimeClass: alang sa mga pod, mahimo nimong pilion ang RuntimeClass nga wala maghunahuna bahin sa cluster topology. Kaniadto, aron makab-ot kini - aron ang mga pod natapos sa mga node nga adunay suporta sa tanan nga ilang gikinahanglan - kinahanglan nimo nga itudlo ang angay nga mga lagda sa NodeSelector ug mga pagtugot. SA GIPANGITA ni KEP naghisgot kini bahin sa mga pananglitan sa paggamit ug, siyempre, mga detalye sa pagpatuman.

Network

Duha ka mahinungdanong bahin sa networking nga nagpakita sa unang higayon (sa alpha) sa Kubernetes 1.16 mao ang:

  • suporta dual network stack - IPv4/IPv6 - ug ang katugbang nga "pagsabot" sa lebel sa mga pod, node, serbisyo. Naglakip kini sa interaksyon sa IPv4-to-IPv4 ug IPv6-to-IPv6 tali sa mga pod, gikan sa mga pod hangtod sa mga serbisyo sa gawas, mga implementasyon sa reference (sa sulod sa Bridge CNI, PTP CNI ug Host-Local IPAM plugins), ingon man usab ang reverse compatibility sa Kubernetes clusters nga nagdagan. labaw lang sa IPv4 o IPv6. Ang mga detalye sa pagpatuman anaa sa GIPANGITA ni KEP.

    Usa ka pananglitan sa pagpakita sa duha ka matang sa mga IP address (IPv4 ug IPv6) sa lista sa mga pod:

    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#

  • Bag-ong API para sa Endpoint - EndpointSlice API. Gisulbad niini ang mga isyu sa performance/scalability sa kasamtangan nga Endpoint API nga makaapekto sa nagkalain-laing mga component sa control-plane (apiserver, etcd, endpoints-controller, kube-proxy). Ang bag-ong API idugang sa Discovery API nga grupo ug makahimo sa pag-alagad sa napulo ka libo nga backend endpoints sa matag serbisyo sa usa ka cluster nga naglangkob sa usa ka libo nga mga node. Aron mahimo kini, ang matag Serbisyo gimapa sa N nga mga butang EndpointSlice, nga ang matag usa adunay dili mosobra sa 100 ka mga endpoint pinaagi sa default (ang bili ma-configure). Ang EndpointSlice API maghatag usab og mga oportunidad alang sa umaabot nga kalamboan niini: suporta alang sa daghang mga IP address alang sa matag pod, bag-ong mga estado alang sa mga endpoint (dili lamang Ready и NotReady), dinamikong subsetting para sa mga endpoint.

Ang usa nga gipresentar sa katapusan nga pagpagawas abante sa beta nga bersyon finalizer, ginganlan service.kubernetes.io/load-balancer-cleanup ug gilakip sa matag serbisyo nga adunay tipo LoadBalancer. Sa panahon sa pagtangtang sa maong serbisyo, gipugngan niini ang aktuwal nga pagtangtang sa kahinguhaan hangtud nga ang "paglimpyo" sa tanang may kalabutan nga mga kapanguhaan sa balancer mahuman.

Makinarya sa API

Ang tinuod nga "pagpalig-on nga milestone" naa sa lugar sa Kubernetes API server ug pakig-uban niini. Kini kasagaran tungod sa pagbalhin ngadto sa kahimtang sa kuwadra nga wala magkinahanglan ug espesyal nga pasiuna CustomResourceDefinition (CRD), nga adunay beta status sukad sa layo nga Kubernetes 1.7 (ug kini Hunyo 2017!). Ang parehas nga pag-stabilize miabot sa mga may kalabutan nga bahin:

  • "subresources" (subresources) uban sa /status и /scale alang sa CustomResources;
  • pagkakabig mga bersyon para sa CRD base sa external nga webhook;
  • bag-o lang gipaila (sa K8s 1.15) mga default (nag-default) ug awtomatikong pagtangtang sa mga natad (pagpul-ong) alang sa CustomResources;
  • oportunidad gamit ang OpenAPI v3 schema sa paghimo ug pagmantala sa OpenAPI nga dokumentasyon nga gigamit sa pag-validate sa CRD resources sa server side.

Laing mekanismo nga dugay nang nahimong pamilyar sa mga administrador sa Kubernetes: admission webhook - anaa usab sa beta status sa dugay nga panahon (sukad sa K8s 1.9) ug karon gideklarar nga stable.

Duha pa ka bahin ang nakaabot sa beta: ang bahin sa server magamit и tan-awa ang mga bookmark.

Ug ang bugtong mahinungdanon nga kabag-ohan sa alpha nga bersyon mao отказ gikan sa SelfLink — usa ka espesyal nga URI nga nagrepresentar sa piho nga butang ug bahin sa ObjectMeta и ListMeta (i.e. bahin sa bisan unsang butang sa Kubernetes). Nganong ila kining gisalikway? Motibasyon "sa yano nga paagi" mga tingog ingon nga ang pagkawala sa tinuod (dili mapugngan) nga mga rason alang niini nga natad nga anaa gihapon. Ang labi ka pormal nga mga hinungdan mao ang pag-optimize sa pasundayag (pagtangtang sa usa ka wala kinahanglana nga natad) ug ang pagpayano sa buhat sa generic-apiserver, nga napugos sa pagdumala sa ingon nga natad sa usa ka espesyal nga paagi (kini ang bugtong natad nga gibutang sa wala pa ang butang. serialized). Tinuod nga "pagkalipas" (ubos sa beta) SelfLink mahitabo sa Kubernetes 1.20, ug ang kataposan mao ang 1.21.

Pagtipig sa datos

Ang panguna nga trabaho sa lugar sa pagtipig, sama sa miaging mga pagpagawas, naobserbahan sa lugar suporta sa CSI. Ang panguna nga mga pagbag-o dinhi mao ang:

  • sa unang higayon (sa alpha version) nagpakita suporta alang sa CSI plugins alang sa Windows worker nodes: ang kasamtangang paagi sa pagtrabaho sa mga storage mopuli usab sa in-tree nga mga plugins sa Kubernetes core ug FlexVolume plugins gikan sa Microsoft base sa Powershell;

    Kubernetes 1.16: Mga highlight sa kung unsa ang bag-o
    Kubernetes alang sa Windows pagpatuman sa CSI plugins

  • oportunidad pagbag-o sa mga volume sa CSI, gipaila balik sa K8s 1.12, mitubo ngadto sa beta;
  • ang susamang "elevation" (gikan sa alpha ngadto sa beta) nakab-ot pinaagi sa abilidad sa paggamit sa CSI sa paghimo sa lokal nga ephemeral volume (Pagsuporta sa CSI Inline Volume).

Gipaila sa miaging bersyon sa Kubernetes gidaghanon clone function (gamit ang kasamtangan nga PVCs ingon DataSource sa paghimo og bag-ong mga PVC) anaa na usab sa beta status.

scheduler

Duha ka talagsaong pagbag-o sa pagplano (pareho sa alpha):

  • EvenPodsSpreading - oportunidad gamita ang mga pod imbes nga aplikasyon lohikal nga mga yunit alang sa "patas nga pag-apod-apod" sa mga karga (sama sa Deployment ug ReplicaSet) ug pag-adjust niini nga pag-apod-apod (ingon usa ka lisud nga kinahanglanon o ingon usa ka humok nga kondisyon, i.e. prayoridad). Ang feature magpalapad sa kasamtangan nga mga opsyon sa pag-apod-apod alang sa giplano nga mga pod, nga karon limitado sa mga opsyon PodAffinity и PodAntiAffinity, naghatag sa mga administrador og mas maayo nga pagkontrol sa kini nga butang, nga nagpasabut nga mas maayo nga taas nga pagkaanaa ug na-optimize nga konsumo sa kapanguhaan. Mga Detalye - sa GIPANGITA ni KEP.
  • Paggamit Patakaran sa BestFit в GihangyoToCapacityRatio Priority Function sa panahon pod scheduling, nga motugot pag-apply pagputos sa bin (“pagputos sa mga sudlanan”) para sa batakang mga kahinguhaan (processor, memory) ug mga extended (sama sa GPU). Para sa mga detalye tan-awa GIPANGITA ni KEP.

    Kubernetes 1.16: Mga highlight sa kung unsa ang bag-o
    Pag-iskedyul sa pod: sa dili pa gamiton ang polisiya nga labing angay (direkta pinaagi sa default scheduler) ug gamiton kini (pinaagi sa scheduler extender)

Dugang pa, nga gihawasan sa ang abilidad sa paghimo sa imong kaugalingon nga mga plugins alang sa scheduler sa gawas sa nag-unang Kubernetes development tree (out-of-tree).

Uban pang mga pagbag-o

Usab sa pagpagawas sa Kubernetes 1.16, mahimo nimong matikdan inisyatiba sa pagdala anaa nga mga sukatan sa bug-os nga han-ay, o mas tukma, sumala sa opisyal nga mga regulasyon sa K8s instrumentation. Sila sa kadaghanan nagsalig sa tagsa-tagsa Dokumentasyon sa Prometheus. Ang mga panagsumpaki mitungha tungod sa lainlaing mga hinungdan (pananglitan, ang pipila nga mga sukatan gihimo ra bisan sa wala pa makita ang karon nga mga panudlo), ug ang mga nag-develop nakahukom nga panahon na aron madala ang tanan sa usa ka sukaranan, "sumala sa nahabilin nga ekosistema sa Prometheus." Ang kasamtangang pagpatuman niini nga inisyatiba kay alpha ug progresibong i-upgrade ngadto sa beta (1.17) ug stable (1.18) sa umaabot nga mga pagpagawas sa Kubernetes.

Dugang pa, ang mosunod nga mga pagbag-o mahimong mamatikdan:

  • Pag-uswag sa Suporta sa Windows с panagway Kubeadm utilities alang niini nga OS (alpha version), kahigayonan RunAsUserName alang sa mga sudlanan sa Windows (alpha nga bersyon), kalamboan Suporta sa Group Managed Service Account (gMSA) hangtod sa beta, pagsuporta mount/attach para sa mga volume sa vSphere.
  • gi-recycle mekanismo sa data compression sa mga tubag sa API. Kaniadto, gigamit ang usa ka filter sa HTTP alang niini nga mga katuyoan, nga nagpahamtang sa daghang mga pagdili nga nagpugong sa paglakip niini pinaagi sa default. Karon ang "transparent request compression" nagtrabaho: nagpadala ang mga kliyente Accept-Encoding: gzip sa header makadawat og GZIP-compressed nga tubag kung ang gidak-on niini milapas sa 128 KB. Awtomatikong gisuportahan sa mga kliyente sa Go ang compression (ipadala ang tuo nga header), aron mamatikdan dayon nila ang pagkunhod sa trapiko. (Ang gamay nga mga pagbag-o mahimong gikinahanglan alang sa ubang mga pinulongan.)
  • Nangin posible pag-scale sa HPA gikan/ngadto sa zero pods base sa external metrics. Kung ang pag-scale gibase sa mga butang/eksternal nga sukatan, unya kung wala’y trabaho ang mga workloads, mahimo nimong awtomatiko nga i-scale sa 0 nga mga replika aron makatipig mga kapanguhaan. Kini nga bahin kinahanglan labi ka mapuslanon alang sa mga kaso diin ang mga trabahante nangayo og mga kapanguhaan sa GPU, ug ang gidaghanon sa lainlaing mga lahi sa mga walay trabaho nga mga trabahante milabaw sa gidaghanon sa magamit nga mga GPU.
  • Bag-ong kliyente - k8s.io/client-go/metadata.Client - alang sa "kinatibuk-ang" pag-access sa mga butang. Gidisenyo kini aron dali nga makuha ang metadata (ie subsection metadata) gikan sa mga kahinguhaan sa cluster ug paghimo og mga operasyon uban kanila gikan sa kategorya sa pagkolekta sa basura ug quota.
  • Paghimo Kubernetes karon mahimo nimo walay karaan ("built-in" in-tree) cloud providers (alpha version).
  • Ngadto sa kubeadm utility gidugang eksperimento (alpha) nga abilidad sa pag-aplay sa ipasadya nga mga patch sa panahon sa mga operasyon init, join и upgrade. Pagkat-on og dugang kon unsaon paggamit ang bandila --experimental-kustomize, tan-awa sa GIPANGITA ni KEP.
  • Bag-ong endpoint para sa apiserver - readyz, - nagtugot kanimo sa pag-eksport sa impormasyon mahitungod sa pagkaandam niini (kaandam). Usab, ang API server adunay bandila --maximum-startup-sequence-duration, nagtugot kanimo sa pagkontrolar sa pag-restart niini.
  • Duha mga bahin alang sa Azure gideklarar nga lig-on: suporta mga sona nga magamit (Availability Zones) ug cross resource nga grupo (RG). Dugang pa, gidugang ni Azure:
  • Nakuha ang AWS pagsuporta alang sa EBS sa Windows ug optimized Mga tawag sa EC2 API DescribeInstances.
  • Ang Kubeadm anaa na sa iyang kaugalingon migrate Pag-configure sa CoreDNS kung gi-update ang bersyon sa CoreDNS.
  • Binary ug uban pa sa katugbang nga imahe sa Docker nahimo world-executable, nga nagtugot kanimo sa pagpadagan niini nga hulagway nga dili kinahanglan ang mga pribilehiyo sa gamut. Usab, ang etcd migration image mihunong suporta alang sa etcd2 nga bersyon.
  • В Cluster Autoscaler 1.16.0 gibalhin sa paggamit sa distroless ingon usa ka base nga imahe, gipaayo nga pasundayag, gidugang bag-ong cloud providers (DigitalOcean, Magnum, Packet).
  • Mga update sa gigamit/nagsalig nga software: Go 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment