Kubernetes 1.16: Prìomh thachartasan de na tha ùr

Kubernetes 1.16: Prìomh thachartasan de na tha ùr

An-diugh, Diciadain, a ’tachairt an ath fhoillseachadh de Kubernetes - 1.16. A rèir an traidisean a tha air leasachadh airson ar blog, is e seo an deicheamh ceann-bliadhna a tha sinn a 'bruidhinn mu na h-atharrachaidhean as cudromaiche san dreach ùr.

Tha am fiosrachadh a chaidh a chleachdadh airson an stuth seo ullachadh air a thoirt bho Clàran tracadh àrdachadh Kubernetes, ATHARRACHADH-1.16 agus cùisean co-cheangailte, iarrtasan tarraing, agus Molaidhean Leasachaidh Kubernetes (KEP). Mar sin, rachamaid! ..

Nòtaichean

Tha àireamh fìor mhòr de innleachdan sònraichte (ann an inbhe dreach alpha) air an taisbeanadh air taobh nodan brabhsair K8s (Kubelet).

An toiseach, mar a chanar ris «soithichean ephemeral» (Còmhdaichean Ephemeral), air a dhealbhadh gus pròiseasan dì-bhugachaidh a dhèanamh nas sìmplidhe ann am pods. Leigidh an uidheamachd ùr leat soithichean sònraichte a chuir air bhog a thòisicheas ann an àite ainmean nam pods a th’ ann agus a bhios beò airson ùine ghoirid. Is e an adhbhar aca eadar-obrachadh le pods agus soithichean eile gus fuasgladh fhaighinn air duilgheadasan agus deasbaid sam bith. Chaidh àithne ùr a chuir an gnìomh airson an fheart seo kubectl debug, co-chosmhail ri kubectl exec: a-mhàin an àite pròiseas a ruith ann an soitheach (mar ann an exec) cuiridh e soitheach air bhog ann am pod. Mar eisimpleir, ceangail an àithne seo soitheach ùr ri pod:

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

Gheibhear mion-fhiosrachadh mu shoithichean geàrr-ùine (agus eisimpleirean den cleachdadh) ann an KEP co-fhreagarrach. Tha am buileachadh gnàthach (ann an K8s 1.16) na dhreach alpha, agus am measg nan slatan-tomhais airson a ghluasad gu dreach beta tha “deuchainn an Ephemeral Containers API airson co-dhiù 2 fhoillseachadh de [Kubernetes].”

NB: Anns a bhunait agus eadhon an ainm, tha am feart coltach ri plugan a tha ann mu thràth kubectl-debugmu bheil sinn sgrìobhte mu thràth. Thathas an dùil, le teachd soithichean geàrr-ùine, gun sguir leasachadh plugan taobh a-muigh air leth.

Ùr-ghnàthachadh eile - PodOverhead - air a dhealbhadh gus a thoirt seachad uidheamachd airson cosgaisean os-cionn airson pods obrachadh a-mach, a dh’ fhaodadh atharrachadh gu mòr a rèir an ùine ruith a thathar a’ cleachdadh. Mar eisimpleir, na h-ùghdaran an KEP seo toradh ann an Kata Containers, a dh ’fheumas a bhith a’ ruith an kernel aoighean, àidseant kata, siostam init, msaa. Nuair a dh’ fhàsas an còrr cho mòr, chan urrainnear dearmad a dhèanamh air, agus tha sin a’ ciallachadh gum feum dòigh a bhith ann gus aire a thoirt dha airson tuilleadh chuotathan, dealbhadh, msaa. Gus a chur an gnìomh ann an PodSpec raon air a chur ris Overhead *ResourceList (an coimeas ri dàta ann an RuntimeClass, ma tha fear air a chleachdadh).

Tha ùr-ghnàthachadh sònraichte eile manaidsear topology node (Manaidsear Topology Node), air a dhealbhadh gus an dòigh-obrach airson mion-sgrùdadh a dhèanamh air riarachadh ghoireasan bathar-cruaidh airson diofar phàirtean ann an Kubernetes. Tha an iomairt seo air a stiùireadh leis an fheum a tha a’ sìor fhàs air diofar shiostaman ùr-nodha (bho raon cian-conaltraidh, ionnsachadh innealan, seirbheisean ionmhais, msaa) airson coimpiutaireachd àrd-choileanadh co-shìnte agus a’ lughdachadh dàil ann an coileanadh obrachaidhean, airson am bi iad a’ cleachdadh CPU adhartach agus comasan luathachadh bathar-cruaidh. Chaidh an leithid de optimizations ann an Kubernetes a choileanadh gu ruige seo le taing do cho-phàirtean eadar-dhealaichte (manaidsear CPU, manaidsear inneal, CNI), agus a-nis thèid aon eadar-aghaidh a-staigh a chuir riutha a dh’ aonaicheas an dòigh-obrach agus a nì sìmplidh air ceangal topology ùr coltach ris - ris an canar. mothachail - co-phàirtean air taobh Kubelet. Mion-fhiosrachadh - a-steach KEP co-fhreagarrach.

Kubernetes 1.16: Prìomh thachartasan de na tha ùr
Diagram co-phàirt Manaidsear Topology

An ath fheart - a’ cumail sùil air soithichean fhad ‘s a tha iad a’ ruith (probe tòiseachaidh). Mar a tha fios agad, airson soithichean a bheir ùine mhòr airson an cur air bhog, tha e duilich inbhe ùr fhaighinn: tha iad an dàrna cuid “air am marbhadh” mus tòisich iad ag obair, no bidh iad ann an glasadh airson ùine mhòr. Seic ùr (air a chomasachadh tro gheata feart ris an canar StartupProbeEnabled) a’ cuir dheth - no an àite sin, a’ cur dheth - buaidh sgrùdaidhean sam bith eile gus am bi am pod deiseil a’ ruith. Air an adhbhar seo, chaidh am feart ainmeachadh an toiseach pod-startup liveness-probe holdoff. Airson pods a bheir ùine mhòr airson tòiseachadh, faodaidh tu an stàit a sgrùdadh ann an ùine ghoirid.

A bharrachd air an sin, tha leasachadh airson RuntimeClass ri fhaighinn sa bhad ann an inbhe beta, a’ cur taic ri “cruinneachaidhean heterogeneous”. c Clàr-ama RuntimeClas A-nis chan eil e riatanach idir gum bi taic aig gach nód airson gach RuntimeClass: airson pods faodaidh tu RuntimeClass a thaghadh gun a bhith a’ smaoineachadh air topology na brabhsair. Roimhe seo, gus seo a choileanadh - gus am bi pods a 'tighinn gu crìch air nodan le taic airson a h-uile dad a dh' fheumas iad - bha e riatanach riaghailtean iomchaidh a shònrachadh gu NodeSelector agus fulangas. ANNS CAP Tha e a’ bruidhinn air eisimpleirean cleachdaidh agus, gu dearbh, mion-fhiosrachadh buileachaidh.

Lìonra

Is e dà fheart lìonraidh cudromach a nochd airson a’ chiad uair (ann an dreach alpha) ann an Kubernetes 1.16:

  • taic cruach lìonra dùbailte - IPv4/IPv6 - agus an “tuigse” co-fhreagarrach aige aig ìre pods, nodan, seirbheisean. Tha e a’ toirt a-steach eadar-obrachaidh IPv4-gu-IPv4 agus IPv6-gu-IPv6 eadar pods, bho pods gu seirbheisean taobh a-muigh, buileachadh iomraidh (taobh a-staigh plugins Bridge CNI, PTP CNI agus Host-Local IPAM), a bharrachd air cùl Co-chosmhail ri cruinneachaidhean Kubernetes a’ ruith. IPv4 no IPv6 a-mhàin. Tha mion-fhiosrachadh buileachaidh a-staigh CAP.

    Eisimpleir de bhith a’ taisbeanadh seòlaidhean IP de dhà sheòrsa (IPv4 agus IPv6) anns an liosta 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 ùr airson Endpoint - EndpointSlice API. Bidh e a’ fuasgladh chùisean dèanadais / scalability an API Endpoint a tha ann mu thràth a bheir buaidh air diofar phàirtean anns an itealan smachd (apiserver, msaa, endpoints-controller, kube-proxy). Thèid an API ùr a chur ris a’ bhuidheann Discovery API agus bidh e comasach dhaibh deichean de mhìltean de phuingean crìochnachaidh a fhrithealadh air gach seirbheis ann am buidheann anns a bheil mìltean de nodan. Gus seo a dhèanamh, tha gach Seirbheis air a mhapadh gu N nithean EndpointSlice, agus gu bunaiteach chan eil barrachd air 100 puing crìochnachaidh aig gach fear dhiubh (tha an luach comasach a rèiteachadh). Bheir an EndpointSlice API cothroman cuideachd airson a leasachadh san àm ri teachd: taic airson grunn sheòlaidhean IP airson gach pod, stàitean ùra airson puingean crìochnachaidh (chan e a-mhàin Ready и NotReady), fo-shuidheachadh fiùghantach airson puingean crìochnachaidh.

Tha am fear a chaidh a thaisbeanadh san fhoillseachadh mu dheireadh air an dreach beta a ruighinn deireannach, ainmeachadh service.kubernetes.io/load-balancer-cleanup agus ceangailte ri gach seirbheis le seòrsa LoadBalancer. Aig àm cuir às do leithid de sheirbheis, tha e a’ cur casg air cuir às don ghoireas gus an tèid “glanadh” de na goireasan cothromachaidh iomchaidh uile a chrìochnachadh.

Inneal API

Tha an fhìor “chlach-mhìle stèidheachaidh” ann an raon frithealaiche Kubernetes API agus eadar-obrachadh leis. Thachair seo gu ìre mhòr mar thoradh air gluasad gu inbhe seasmhach an fheadhainn aig nach eil feum air ro-ràdh sònraichte CustomResourceDefinitions (CRD), aig a bheil inbhe beta bho làithean fad às de Kubernetes 1.7 (agus is e seo Ògmhios 2017!). Thàinig an aon seasmhachd gu na feartan co-cheangailte:

  • "fo-stòrasan" le /status и /scale airson CustomResources;
  • tionndadh dreachan airson CRD, stèidhichte air duilleag-lìn taobh a-muigh;
  • air a thaisbeanadh o chionn ghoirid (ann an K8s 1.15) luachan bunaiteach (bunaiteach) agus toirt air falbh achaidhean gu fèin-ghluasadach (pruning) airson CustomResources;
  • cothrom a’ cleachdadh sgeama OpenAPI v3 gus sgrìobhainnean OpenAPI a chruthachadh agus fhoillseachadh a chleachdar gus goireasan CRD a dhearbhadh air taobh an fhrithealaiche.

Inneal eile a tha air a bhith eòlach o chionn fhada do luchd-rianachd Kubernetes: leabhar-lìn inntrigidh - cuideachd air fuireach ann an inbhe beta airson ùine mhòr (bho K8s 1.9) agus tha e a-nis air ainmeachadh seasmhach.

Tha dà fheart eile air ruighinn beta: taobh an fhrithealaiche a 'buntainn и coimhead comharran-leabhair.

Agus b 'e an aon ùr-ghnàthachadh cudromach anns an tionndadh alpha отказ от SelfLink - URI sònraichte a’ riochdachadh an nì ainmichte agus a bhith mar phàirt dheth ObjectMeta и ListMeta (ie pàirt de nì sam bith ann an Kubernetes). Carson a tha iad ga thrèigsinn? Brosnachadh ann an dòigh shìmplidh fuaimean leis nach eil fìor adhbharan (uamhasach) ann airson an raon seo a bhith ann fhathast. Is e adhbharan nas foirmeile coileanadh a bharrachadh (le bhith a’ toirt air falbh raon neo-riatanach) agus obair an t-seòrsa-apiserver a dhèanamh nas sìmplidhe, a dh’ fheumas a leithid de raon a làimhseachadh ann an dòigh shònraichte (is e seo an aon raon a tha air a shuidheachadh dìreach ron nì. air an t-sreath). Fìor obsolescence (taobh a-staigh beta) SelfLink tachairt le dreach Kubernetes 1.20, agus mu dheireadh - 1.21.

Stòradh dàta

Thathas a’ cumail sùil air a’ phrìomh obair ann an raon stòraidh, mar a bha ann am fiosan roimhe, san sgìre Taic CSI. B’ iad na prìomh atharrachaidhean an seo:

  • airson a’ chiad uair (ann an tionndadh alpha) nochdadh Taic plugan CSI airson nodan neach-obrach Windows: bidh an dòigh-obrach a th’ ann an-dràsta le stòradh cuideachd a’ dol an àite plugins in-craobh ann an cridhe Kubernetes agus plugins FlexVolume bho Microsoft stèidhichte air Powershell;

    Kubernetes 1.16: Prìomh thachartasan de na tha ùr
    Sgeama airson plugins CSI a chuir an gnìomh ann an Kubernetes airson Windows

  • cothrom ag ath-mheudachadh meudan CSI, air a thoirt a-steach air ais ann an K8s 1.12, air fàs gu dreach beta;
  • Chaidh “adhartachadh” coltach ris (bho alpha gu beta) a choileanadh leis a’ chomas CSI a chleachdadh gus meudan geàrr-ùine ionadail a chruthachadh (Taic CSI Inline Volume).

Air a thoirt a-steach san dreach roimhe de Kubernetes gnìomh clonadh tomhas-lìonaidh (a’ cleachdadh PVC a th’ ann mar-thà mar DataSource gus PVC ùr a chruthachadh) cuideachd air inbhe beta fhaighinn.

Clàr-ama

Dà atharrachadh sònraichte air clàradh (an dà chuid ann an alpha):

  • EvenPodsSpreading - cothrom cleachd pods an àite aonadan tagraidh loidsigeach airson “sgaoileadh cothromach” luchdan (mar Cleachdadh agus ReplicaSet) agus ag atharrachadh an t-sgaoilidh seo (mar riatanas cruaidh no mar staid bhog, ie prìomhachas). Leudaichidh am feart na comasan cuairteachaidh a th’ ann mu thràth de pods dealbhaichte, an-dràsta cuibhrichte le roghainnean PodAffinity и PodAntiAffinity, a’ toirt smachd nas fheàrr do luchd-rianachd air a’ chùis seo, a tha a’ ciallachadh ruigsinneachd àrd nas fheàrr agus caitheamh ghoireasan as fheàrr. Mion-fhiosrachadh - a-steach CAP.
  • Cleachd Poileasaidh BestFit в RequestedToCapacityRatio Gnìomh prìomhachais rè planadh pod, a leigeas cur a-steach pacadh bin (“ pacadh ann an soithichean ”) airson gach cuid goireasan bunaiteach (pròiseasaran, cuimhne) agus feadhainn leudaichte (mar GPU). Airson tuilleadh fiosrachaidh, faic CAP.

    Kubernetes 1.16: Prìomh thachartasan de na tha ùr
    Podan clàrachaidh: mus cleachd thu am poileasaidh iomchaidh (gu dìreach tron ​​​​chlàr-ama bunaiteach) agus le bhith ga chleachdadh (tro neach-leudachaidh clàr-ama)

A bharrachd air sin, riochdachadh le an comas na plugins clàr-ama agad fhèin a chruthachadh taobh a-muigh prìomh chraobh leasachaidh Kubernetes (taobh a-muigh na craoibhe).

Atharraichean eile

Cuideachd anns an fhoillseachadh Kubernetes 1.16 faodar a thoirt fa-near iomairt airson a' toirt metrics rim faighinn ann an làn òrdugh, no nas mionaidiche, a rèir riaghailtean oifigeil gu inneal-ciùil K8s. Tha iad gu ìre mhòr an urra ris a 'cho-fhreagairt Leabhar Prometheus. Dh ’èirich neo-chunbhalachd airson diofar adhbharan (mar eisimpleir, chaidh cuid de mheatairean a chruthachadh dìreach mus do nochd an stiùireadh gnàthach), agus cho-dhùin an luchd-leasachaidh gu robh an t-àm ann a h-uile càil a thoirt gu aon ìre,“ a rèir a ’chòrr de eag-shiostam Prometheus.” Tha buileachadh na h-iomairt seo ann an inbhe alpha, a thèid a bhrosnachadh mean air mhean ann an dreachan às deidh sin de Kubernetes gu beta (1.17) agus seasmhach (1.18).

A bharrachd air an sin, faodar na h-atharrachaidhean a leanas a thoirt fa-near:

  • Windows a’ toirt taic do leasachadh с coltas Goireasan Kubeadm airson an OS seo (dreach alpha), cothrom RunAsUserName airson soithichean Windows (dreach alpha), leasachadh Taic Cunntas Seirbheis Stiùirichte Buidhne (gMSA) suas gu dreach beta, taic cuir suas / ceangail airson leabhraichean vSphere.
  • Ath-chuairteachadh uidheamachd teannachaidh dàta ann am freagairtean API. Roimhe sin, chaidh criathrag HTTP a chleachdadh airson na h-adhbharan sin, a chuir grunn chuingealachaidhean an sàs a chuir casg air bho bhith air a chomasachadh gu bunaiteach. Tha “dlùthadh iarrtas follaiseach” a-nis ag obair: teachdaichean a’ cur Accept-Encoding: gzip anns a’ bhann-cinn, gheibh iad freagairt co-dhlùthaichte GZIP ma tha a mheud nas àirde na 128 KB. Bidh teachdaichean Go gu fèin-ghluasadach a’ toirt taic do dhlùthadh (a ’cur a’ chinn a tha a dhìth), gus am faic iad sa bhad lùghdachadh ann an trafaic. (Dh’ fhaodadh gum bi feum air atharrachaidhean beaga airson cànanan eile.)
  • Thàinig e gu bhith comasach sgèileadh HPA bho / gu pods neoni stèidhichte air meatrach taobh a-muigh. Ma nì thu sgèile stèidhichte air nithean / meatrach taobh a-muigh, an uairsin nuair a tha eallach obrach leisg faodaidh tu sgèileadh gu fèin-ghluasadach gu 0 mac-samhail gus goireasan a shàbhaladh. Bu chòir am feart seo a bhith gu sònraichte feumail airson cùisean far a bheil luchd-obrach ag iarraidh goireasan GPU, agus gu bheil an àireamh de dhiofar sheòrsaichean de luchd-obrach leisg nas àirde na an àireamh de GPUs a tha rim faighinn.
  • Cliant ùr - k8s.io/client-go/metadata.Client - airson ruigsinneachd “coitcheann” air nithean. Tha e air a dhealbhadh gus meata-dàta fhaighinn air ais gu furasta (i.e. fo-earrann metadata) bho ghoireasan cnuasachaidh agus a’ dèanamh obair cruinneachadh sgudail agus cuota còmhla riutha.
  • Tog Kubernetes a-nis faodaidh tu às aonais dìleab ("togte" in-craobh) solaraichean sgòthan (dreach alpha).
  • Gu goireas kubeadm air a chur ris comas deuchainneach (dreach alpha) gus pìosan gnàthaichte a chuir an sàs rè gnìomhachd init, join и upgrade. Ionnsaich tuilleadh mu mar a chleachdas tu am bratach --experimental-kustomize, faic anns CAP.
  • Puing crìochnachaidh ùr airson apiserver - readyz, - a 'leigeil leat às-mhalairt fiosrachadh mu cho deònach' sa tha e. Tha bratach aig an t-seirbheisiche API a-nis --maximum-startup-sequence-duration, a 'toirt cothrom dhut ath-thòiseachadh a riaghladh.
  • feartan airson Azure dhearbh seasmhach: support sònaichean ruigsinneachd (Sònaichean ri fhaotainn) agus buidheann tar-stòrais (RG). A bharrachd air an sin, tha Azure air na leanas a chuir ris:
    • taic dearbhaidh AAD agus ADFS;
    • mothachadh service.beta.kubernetes.io/azure-pip-name gus IP poblach an neach-cothromachaidh luchdan a shònrachadh;
    • cothrom suidheachaidhean LoadBalancerName и LoadBalancerResourceGroup.
  • Tha aig AWS a-nis taic airson EBS air Windows agus leasaichte EC2 gairmean API DescribeInstances.
  • Tha Kubeadm a-nis neo-eisimeileach imrich rèiteachadh CoreDNS nuair a bhios tu ag ùrachadh an tionndadh CoreDNS.
  • Binaries etc anns an ìomhaigh Docker co-fhreagarrach air a dhèanamh world-excutable, a leigeas leat an ìomhaigh seo a ruith gun fheum air còraichean freumha. Cuideachd, ìomhaigh imrich etcd stad taic tionndadh etcd2.
  • В Cluster Autoscaler 1.16.0 tionndadh gu bhith a’ cleachdadh distroless mar an ìomhaigh bhunaiteach, coileanadh nas fheàrr, chuir solaraichean sgòthan ùra ris (DigitalOcean, Magnum, Packet).
  • Ùrachaidhean ann am bathar-bog cleachdte / eisimeil: Rach 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann