Kubernetes 1.16: he tirohanga whanui mo nga mahi hou

Kubernetes 1.16: he tirohanga whanui mo nga mahi hou

I tenei ra, Wenerei, Ñ ​​Ð¾Ñ Ñ‚Ð¾Ð¸Ñ‚Ñ Ñ tukunga muri o Kubernetes - 1.16. E ai ki nga tikanga kua whanakehia mo to maatau blog, koinei te wa whakatekau o nga tau e korero ana mo nga huringa tino nui o te putanga hou.

Ko nga korero e whakamahia ana hei whakarite i tenei rauemi ka tangohia mai i Ko nga teepu aroturuki a Kubernetes, CHANGELOG-1.16 me nga take e pa ana, nga tono toia, me nga Kaupapa Whakanuia Kubernetes (KEP). No reira, haere tatou!..

Kōpuku

He maha nga mea hou rongonui (i te ahua o te ahua alpha) ka whakaatuhia ki te taha o nga kohinga kohinga K8s (Kubelet).

Tuatahi, ko nga mea e kiia ana «ipu ephemeral» (Ipu Ephemeral), i hangaia hei whakangwari i nga tukanga patuiro i roto i nga pākākano. Ko te tikanga hou ka taea e koe te whakarewa i nga ipu motuhake ka tiimata ki te waahi ingoa o nga putunga o naianei ka ora mo te wa poto. Ko ta ratou kaupapa ko te mahi tahi me etahi atu putunga me nga ipu hei whakaoti rapanga me te patuiro. Kua whakatinanahia he tono hou mo tenei ahuatanga kubectl debug, he rite tonu ki te kubectl exec: hei utu mo te whakahaere i tetahi tukanga i roto i te ipu (penei i te exec) ka whakarewahia he ipu ki roto i te pākākano. Hei tauira, ka honoa e tenei tono he ipu hou ki te pd:

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

Ko nga korero mo nga ipu ephemeral (me nga tauira o te whakamahinga) ka kitea i roto e rite ana ki te KEP. Ko te whakatinanatanga o naianei (kei roto i nga K8s 1.16) he putanga alpha, a, i roto i nga paearu mo tana whakawhiti ki te putanga beta ko te "whakamatautau i te Ephemeral Containers API mo te iti rawa 2 putanga o [Kubernetes]."

NB: I roto i tona ngako me tona ingoa, he rite te ahua ki tetahi mono kua oti ke kubectl-debuge pā ana ki a tatou kua tuhia. Ko te whakaaro me te taenga mai o nga ipu ephemeral, ka mutu te whakawhanaketanga o tetahi mono motuhake o waho.

Ko tetahi atu mea hou - PodOverhead - i hangaia hei whakarato tikanga mo te tatau i nga utu o runga mo nga pene, ka rereke pea i runga i te waa whakahaere e whakamahia ana. Hei tauira, ko nga kaituhi tenei KEP ka puta ko Kata Containers, me whakahaere te kakano manuhiri, te kaihoko kata, te punaha init, aha atu. Ina nui rawa atu te nui o te upoko, kaore e taea te warewarehia, ko te tikanga me whai huarahi ki te whai whakaaro mo etahi atu roherohenga, whakamahere, aha atu. Hei whakatinana i roto PodSpec kua tapirihia te mara Overhead *ResourceList (ka whakatauritea ki nga raraunga kei RuntimeClass, ki te whakamahia tetahi).

Ko tetahi atu mea hou rongonui kaiwhakahaere topology node (Kaiwhakahaere Topology Node), i hangaia hei whakakotahi i te huarahi ki te whakatikatika i te tohatoha rauemi taputapu mo nga momo waahanga o Kubernetes. Ko tenei kaupapa e akiakihia ana e te tipu haere o te hiahia o nga momo punaha hou (mai i te waahi o te waea, te ako miihini, nga ratonga putea, me etahi atu) mo nga mahi rorohiko whakarara teitei me te whakaiti i te roa o te mahi o nga mahi, e whakamahia ana e ratou te PTM matatau me te taputapu whakaterenga kaha. Ko enei arotautanga i roto i nga Kubernetes kua tutuki i tenei wa na nga waahanga rereke (te kaiwhakahaere CPU, Kaiwhakahaere Pūrere, CNI), a inaianei ka taapirihia he atanga o roto kotahi e whakakotahi ana i te huarahi me te whakamaarama i te hononga o nga mea hou - e kiia nei ko te topology- mohio - nga waahanga kei te taha Kubelet. Nga korero - in e rite ana ki te KEP.

Kubernetes 1.16: he tirohanga whanui mo nga mahi hou
Hoahoa Waahanga Kaiwhakahaere Topology

Ahuatanga panuku - te tirotiro i nga ipu i te wa e rere ana (rangahau whakaoho). Kei te mohio koe, mo nga ipu ka roa te whakarewatanga, he uaua ki te tiki i tetahi ahuatanga hou: ka "patua" i mua i te tiimata o te mahi, ka mutu ranei ka mutu mo te wa roa. Takitaki hou (whakahohea ma te kuaha ahua e kiia nei StartupProbeEnabled) ka whakakore - ka whakaroa ranei - te paanga o etahi atu arowhai tae noa ki te wa kua mutu te rere o te pene. Mo tenei take, i kiia tuatahitia te ahuatanga Pod-startu liveness-probe holdoff. Mo nga pene ka roa te tiimata, ka taea e koe te pooti i te kawanatanga i roto i nga waa poto.

I tua atu, he whakapai ake mo RuntimeClass kei te waatea tonu i roto i te mana beta, me te taapiri i te tautoko mo "nga tautau rereke". C Whakahōtaka Wāmahi Inaianei kaore rawa e tika kia whai tautoko ia node mo ia RuntimeClass: mo nga pene ka taea e koe te kowhiri i tetahi RuntimeClass me te kore e whakaaro ki te topology tautau. I mua, ki te whakatutuki i tenei - kia mutu nga pona ki runga i nga pona me te tautoko mo nga mea katoa e hiahiatia ana - me tautapa nga ture e tika ana ki te NodeSelector me nga tuku. IN KAUPAPA E korero ana mo nga tauira o te whakamahinga me te tikanga, nga taipitopito whakatinanatanga.

Whatunga

E rua nga ahuatanga whatunga nui i puta mo te wa tuatahi (i te putanga alpha) i Kubernetes 1.16 ko:

  • support tāpae whatunga rua - IPv4/IPv6 - me ona "maramatanga" e pa ana ki te taumata o nga pona, nga pona, nga ratonga. Kei roto ko te IPv4-ki-IPv4 me te IPv6-ki-IPv6 te honohono i waenga i nga poti, mai i nga poti ki nga ratonga o waho, nga whakatinanatanga tohutoro (i roto i te piriti CNI, PTP CNI me Host-Local IPAM monomai), me te whakamuri Hototahi me nga tautau Kubernetes e rere ana. IPv4, IPv6 anake. Kei roto nga korero mo te whakatinanatanga KAUPAPA.

    He tauira mo te whakaatu i nga wahitau IP o nga momo momo e rua (IPv4 me IPv6) i te rarangi o nga pene:

    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 Hou mo te Whakamutunga - EndpointSlice API. Ka whakatauhia e ia nga take mahi/whakanuia o te API Whakamutunga o naianei e pa ana ki nga momo waahanga o te rererangi-whakahaere (apiserver, etcd, endpoints-controller, kube-proxy). Ka taapirihia te API hou ki te roopu Discovery API ka taea ki te mahi i nga tekau mano o nga pito o muri ki ia ratonga i roto i te roopu kei roto i nga mano o nga node. Hei mahi i tenei, ka mapi ia Ratonga ki nga mea N EndpointSlice, ko ia mea na te taunoa kaua e neke ake i te 100 nga pito mutunga (ka taea te whirihora te uara). Ka whai waahi ano te EndpointSlice API mo tona whanaketanga a meake nei: te tautoko mo nga wahitau IP maha mo ia pod, nga ahuatanga hou mo nga waahi mutunga (ehara i te mea anake Ready и NotReady), te tahora iti hihiri mo nga pito mutunga.

Ko te mea i whakaatuhia i te tukunga whakamutunga kua tae ki te putanga beta kaiwhakaoti, whakaingoatia service.kubernetes.io/load-balancer-cleanup ka piri ki ia ratonga me te momo LoadBalancer. I te wa o te whakakore i taua ratonga, ka aukati i te whakakorenga o te rauemi kia oti ra ano te "whakapai" o nga rauemi taurite e tika ana.

API Miihini

Ko te tino "whakapumautanga" kei te waahi o te tūmau API Kubernetes me te taunekeneke ki a ia. I puta tenei na te mihi nui whakawhiti ki te mana pūmau te hunga e kore e hiahia whakataki motuhake RitengaResourceDefinitions (CRD), he mana beta mai i nga ra tawhiti o Kubernetes 1.7 (a ko Pipiri 2017 tenei!). I tae mai ano te whakapumautanga ki nga ahuatanga e pa ana:

  • "rauemi iti" me /status и /scale mo nga Rauemi Ritenga;
  • whakawhitinga nga putanga mo CRD, i runga i te matapae tukutuku o waho;
  • katahi ano ka whakaatuhia (i roto i nga K8s 1.15) nga uara taunoa (taunoa) me te tango mara aunoa (te tapahi) mo nga Rauemi Ritenga;
  • faingamālie te whakamahi i te aronuinga OpenAPI v3 ki te hanga me te whakaputa i nga tuhinga OpenAPI i whakamahia hei whakamana i nga rauemi CRD i te taha tūmau.

Ko tetahi atu tikanga kua roa e mohio ana ki nga kaiwhakahaere Kubernetes: urunga tukutuku - i noho tonu ki te mana beta mo te wa roa (mai i te K8s 1.9) a kua kiia inaianei kua pumau.

E rua etahi atu waahanga kua tae ki te beta: tono taha tūmau и mataara tohuwāhi.

Na ko te mea hou nui i roto i te putanga alpha ko whakakahore i SelfLink — he URI motuhake e tohu ana i te ahanoa kua tohua me te wahanga o ObjectMeta и ListMeta (arā, he wahanga o tetahi mea kei Kubernetes). He aha ratou i whakarere ai? Te hihiri i roto i te huarahi ngawari tangi i te korenga o nga tino take e mau tonu ai tenei mara. Ko nga take okawa ake ko te arotau i nga mahi (ma te tango i tetahi mara koretake) me te whakangawari i te mahi a te generic-apiserver, e kaha ana ki te hapai i taua mara i runga i tetahi huarahi motuhake (koinei anake te mara ka whakatakotoria ki mua i te ahanoa. kua raupapahia). Tino tawhito (i roto i te beta) SelfLink ka puta e Kubernetes putanga 1.20, me te whakamutunga - 1.21.

Rokiroki raraunga

Ko nga mahi matua i roto i te waahi rokiroki, pera i nga putanga o mua, ka kitea i roto i te rohe Tautoko CSI. Ko nga huringa matua i konei ko:

  • mo te wa tuatahi (i te putanga alpha) puta mai Tautoko mono CSI mo nga pona kaimahi Windows: ko te huarahi o naianei mo te mahi me te rokiroki ka whakakapi ano i nga mono-a-rakau i roto i te matua Kubernetes me nga monomai FlexVolume mai i a Microsoft i runga i te Powershell;

    Kubernetes 1.16: he tirohanga whanui mo nga mahi hou
    Kaupapa mo te whakatinana i nga monomai CSI ki Kubernetes mo Windows

  • faingamālie te whakarereke i nga pukapuka CSI, i whakauruhia ki roto i te K8s 1.12, kua tipu ki te putanga beta;
  • He rite "whakatairanga" (mai i te alpha ki te beta) i tutuki na te kaha ki te whakamahi CSI ki te hanga pukapuka ephemeral rohe (Tautoko Rōrahi Rōraina CSI).

I whakauruhia ki te putanga o mua o Kubernetes mahi cloning rōrahi (ma te whakamahi i te PVC o naianei hei DataSource ki te hanga PVC hou) kua riro ano i naianei te mana beta.

Kaihōtaka

E rua nga huringa nui ki te whakahōtaka (e rua kei te alpha):

  • EvenPodsSpreading - whai waahi whakamahia nga pene hei utu mo nga waahanga tono arorau mo te "tuhatoha tika" o nga kawenga (pēnei i te Whakamahinga me te ReplicaSet) me te whakatikatika i tenei tohatoha (he whakaritenga pakeke, he ahua ngawari ranei, ara ko te kaupapa matua). Ka whakawhānuihia e te waahanga nga kaha tohatoha o nga waahanga kua whakamaheretia, i tenei wa e iti ana nga whiringa PodAffinity и PodAntiAffinity, ka pai ake te mana whakahaere mo tenei mea ki nga kaiwhakahaere, ko te tikanga he pai ake te waatea me te pai ake o te kohi rauemi. Nga korero - in KAUPAPA.
  • Whakamahia Kaupapahere BestFit в TonoaToCapacityRatio Mahi Matua i te wa o te whakamahere pod, ka taea ki te tono takai ipu (“te takai i roto i nga ipu”) mo nga rauemi taketake e rua (tukatuka, mahara) me nga mea roa (penei i te GPU). Mo etahi atu korero, tirohia KAUPAPA.

    Kubernetes 1.16: he tirohanga whanui mo nga mahi hou
    Whakaritea nga pene: i mua i te whakamahi i te kaupapa here pai rawa atu (ma te kaiwhakahoahoa taunoa) me te whakamahi (ma te kaiwhakahoahoa whakahoa)

I tua atu, te kaha ki te hanga i a koe ake monomai whakahōtaka i waho o te rakau whanaketanga Kubernetes matua (waho-o-rakau).

Othertahi atu whakarerekētanga

I roto ano i te tuku Kubernetes 1.16 ka taea te tohu kaupapa mo mauria mai inenga wātea i roto i te raupapa katoa, he tika ake ranei, i runga ano i te ture mana ki nga taputapu K8s. Ka whakawhirinaki nui ratou ki nga mea e pa ana Tuhinga Prometheus. He maha nga take i puta mai ai nga rerekee (hei tauira, i hanga noa etahi ine i mua i te putanga o nga tohutohu o naianei), ka whakatau nga kaihanga kua tae ki te wa ki te kawe i nga mea katoa ki te paerewa kotahi, "i runga i te taha o te toenga o te rauwiringa kaiao Prometheus." Ko te whakatinanatanga o tenei kaupapa kei roto i te mana alpha, ka piki haere i nga putanga o Kubernetes ki te beta (1.17) me te pumau (1.18).

Hei taapiri, ko nga huringa e whai ake nei ka taea te tohu:

  • Te whanaketanga tautoko Windows с ahua Nga taputapu Kubeadm mo tenei OS (putanga alpha), whai waahi RunAsUserName mo nga ipu Windows (putanga alpha), whakapai ake Ka tautoko te Pūkete Ratonga Whakahaere Rōpū (gMSA) tae noa ki te putanga beta, tautoko Maunga / whakapiri mo nga pukapuka vSphere.
  • Recycled tikanga kōpeketanga raraunga i roto i nga whakautu API. I mua, i whakamahia he tātari HTTP mo enei kaupapa, i tukuna he maha o nga here i kore ai e taea te whakahohe ma te taunoa. "Kopeketanga tono marama" ka mahi inaianei: ka tukuna e nga kaihoko Accept-Encoding: gzip i roto i te pane, ka whiwhi ratou i te GZIP-kōpeke whakautu ki te nui tona rahi 128 KB. Ka tautoko aunoa nga kaihoko i te kopeketanga (tuku i te pane e hiahiatia ana), no reira ka kite tonu ratou i te hekenga o nga waka. (Ka hiahiatia etahi whakarereke iti mo etahi atu reo.)
  • Ka taea te whakatauira i te HPA mai i/ki te kore nga poti i runga i nga inenga o waho. Mēnā ka āwhatatia koe i runga i ngā ahanoa/inenga o waho, ka noho mangere nga mahi ka taea e koe te tauine aunoa ki te 0 tauira hei penapena rauemi. Me tino whai hua tenei ahuatanga mo nga keehi ka tono nga kaimahi i nga rauemi GPU, a ko te maha o nga momo kaimahi mangere ka nui ake i te maha o nga GPU e waatea ana.
  • Kiritaki hou - k8s.io/client-go/metadata.Client — mo te urunga "whakawhānui" ki nga taonga. I hoahoatia kia ngawari ki te tiki metadata (arā, te waahanga metadata) mai i nga rauemi tautau me te mahi kohinga para me nga mahi motunga ki a ratou.
  • Hanga Kubernetes inaianei ka taea e koe karekau he taonga tuku iho ("i roto" i roto i te rakau) kaiwhakarato kapua (putanga alpha).
  • Ki te whaipainga kubeadm kua taapirihia te whakamatautau (putanga alpha) te kaha ki te tono i nga taapiri i nga wa e whakahaere ana init, join и upgrade. Ako atu mo te whakamahi i te haki --experimental-kustomize, kite i roto KAUPAPA.
  • Ira mutunga hou mo te apiserver - readyz, - ka taea e koe te kaweake i nga korero mo tona reri. He haki ano te tūmau API inaianei --maximum-startup-sequence-duration, ka taea e koe te whakahaere i ona tiimatanga.
  • E rua āhuatanga mo Azure kīia pūmau: tautoko rohe wātea (Rohe Wātea) me roopu rauemi whakawhiti (RG). Hei taapiri, kua taapiri a Azure:
    • tautoko motuhēhēnga AAD me ADFS;
    • kohinga service.beta.kubernetes.io/azure-pip-name ki te whakapūtā te IP tūmatanui o te taurite kawenga;
    • faingamālie tautuhinga LoadBalancerName и LoadBalancerResourceGroup.
  • AWS inaianei tautoko mo EBS i runga Windows me papaitia EC2 API waea DescribeInstances.
  • Kua motuhake a Kubeadm heke whirihoranga CoreDNS i te wa e whakahou ana i te putanga CoreDNS.
  • Aruarua etcd i roto i te ahua Docker e rite ana kua mahia Ka taea e te ao te whakahaere, ka taea e koe te whakahaere i tenei ahua me te kore e hiahiatia nga mana pakiaka. Ano, etcd pikitia hekenga mutu tautoko putanga etcd2.
  • В Cluster Autoscaler 1.16.0 kua huri ki te whakamahi korekore hei ahua taketake, kua pai ake te mahi, kua taapiri i nga kaiwhakarato kapua hou (DigitalOcean, Magnum, Packet).
  • Whakahoutanga i roto i te rorohiko kua whakamahia/whakawhirinaki: Haere 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero