Kubernetes 1.16: kakaretso ea lintlafatso tsa mantlha

Kubernetes 1.16: kakaretso ea lintlafatso tsa mantlha

Kajeno, Laboraro, li tla etsahala tokollo e latelang ea Kubernetes - 1.16. Ho ea ka moetlo o tsoetseng pele bakeng sa blog ea rona, ena ke nako ea lilemo tse leshome re bua ka liphetoho tsa bohlokoa ka ho fetisisa phetolelong e ncha.

Boitsebiso bo sebelisitsoeng ho lokisetsa boitsebiso bona bo nkiloe ho Kubernetes e ntlafatsa litafole tsa ho latedisa, PHETOHO-1.16 le litaba tse amanang le tsona, likopo tsa ho hula, le Litlhahiso tsa Ntlafatso ea Kubernetes (KEP). Kahoo, ha re eeng!..

Node

Palo e kholo ea lintlafatso tse hlokomelehang (ka boemo ba mofuta oa alpha) li hlahisoa ka lehlakoreng la li-cluster node tsa K8s (Kubelet).

Pele, ho thoeng ke «lijana tsa ephemeral» (Lijana tsa Ephemeral), e etselitsoeng ho nolofatsa mekhoa ea ho lokisa liphoso ka har'a li-pods. Mochine o mocha o u lumella ho qala lijana tse khethehileng tse qalang sebakeng sa mabitso sa li-pods tse teng ebe u phela nako e khuts'oane. Sepheo sa bona ke ho sebelisana le li-pods le lijana tse ling ho rarolla mathata leha e le afe le ho lokisa bothata. Taelo e ncha e kentsoe tšebetsong tšobotsing ena kubectl debug, e tšoanang hantle le kubectl exec: feela sebakeng sa ho tsamaisa ts'ebetso ka har'a setshelo (joalo ka ho exec) e bulela setshelo ka hara pitsa. Mohlala, taelo ena e tla hokahanya setshelo se secha ho pod:

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

Lintlha tse mabapi le lijana tsa ephemeral (le mehlala ea tšebeliso ea tsona) li ka fumanoa ho e tsamaellanang le KEP. Ts'ebetsong ea hajoale (ho K8s 1.16) ke mofuta oa alpha, 'me har'a mekhoa ea ho fetisetsoa ho mofuta oa beta ke "ho leka Ephemeral Containers API bakeng sa bonyane likhatiso tse 2 tsa [Kubernetes]."

NB: Ha e le hantle, esita le lebitso la eona, tšobotsi e tšoana le plugin e seng e ntse e le teng ho bectl-debugka seo re e se e ngotse. Ho lebelletsoe hore ka ho fihla ha lijana tsa ephemeral, nts'etsopele ea plugin e arohaneng ea kantle e tla emisa.

Tlhahiso e 'ngoe - PodOverhead - e etselitsoe ho fana mokhoa oa ho bala litšenyehelo tse holimo bakeng sa li-pods, e ka fapana haholo ho latela nako ea ho sebetsa e sebelisitsoeng. Ka mohlala, bangoli KEP ena ho fella ka Kata Containers, tse hlokang ho tsamaisa kernel ea baeti, moemeli oa kata, sistimi ea init, jj. Ha holimo ho e-ba kholo haholo, e ke ke ea hlokomolohuoa, ho bolelang hore ho hlokahala hore ho be le mokhoa oa ho e ela hloko bakeng sa li-quotas, moralo, joalo-joalo. Ho e kenya tshebetsong ka PodSpec lebala le ekelitsoeng Overhead *ResourceList (e bapisoa le data in RuntimeClass, haeba e sebelisoa).

Tlhahiso e 'ngoe e hlokomelehang ke mookameli oa topology ea node (Mookameli oa Node Topology), e etselitsoeng ho kopanya mokhoa oa ho lokisa hantle kabo ea lisebelisoa tsa hardware bakeng sa likarolo tse sa tšoaneng tsa Kubernetes. Boiteko bona bo susumetsoa ke tlhokahalo e ntseng e eketseha ea litsamaiso tse fapaneng tsa sejoale-joale (ho tloha lefapheng la likhokahano tsa mehala, ho ithuta ka mochini, lits'ebeletso tsa lichelete, joalo-joalo) bakeng sa komporo e ts'oanang e ts'oanang hantle le ho fokotsa tieho ts'ebetsong ea ts'ebetso, eo ba e sebelisang e tsoetseng pele ea CPU le ts'ebetso. matla a ho potlakisa hardware. Lintlafatso tse joalo ho Kubernetes ho fihlela joale li fihletsoe ka lebaka la likarolo tse fapaneng (mookameli oa CPU, mookameli oa sesebelisoa, CNI), 'me joale ba tla eketsoa sebopeho se le seng sa kahare se kopanyang mokhoa le ho nolofatsa khokahano ea tse ncha tse tšoanang - tse bitsoang topology- hlokomela - likarolo tse lehlakoreng la Kubelet. Lintlha - ho e tsamaellanang le KEP.

Kubernetes 1.16: kakaretso ea lintlafatso tsa mantlha
Setšoantšo sa Karolo ea Motsamaisi oa Topology

Karolo e latelang - ho hlahloba lijana ha li ntse li matha (tlhahiso ea ho qala). Joalo ka ha le tseba, bakeng sa lijana tse nkang nako e telele ho qala, ho thata ho fumana maemo a morao-rao: a ka "bolaoa" pele a qala ho sebetsa, kapa a qetella a sa sebetse nako e telele. Cheke e ncha (e nolofalitsoeng ka keiti ea likarolo e bitsoang StartupProbeEnabled) e hlakola - kapa ho e-na le hoo, e chechisa - phello ea licheke tse ling ho fihlela ha pod e qeta ho sebetsa. Ka lebaka lena, tšobotsi eo qalong e ne e bitsoa pod-startup liveness-probe holdoff. Bakeng sa li-pods tse nkang nako e telele ho qala, o ka khetha naha ka nako e khuts'oane.

Ho feta moo, ntlafatso ea RuntimeClass e fumaneha hang-hang maemong a beta, e eketsang tšehetso bakeng sa "lihlopha tse fapaneng". C RuntimeClass Kemiso Hona joale ha ho hlokahale hore node ka 'ngoe e be le tšehetso bakeng sa RuntimeClass e' ngoe le e 'ngoe: bakeng sa li-pods u ka khetha RuntimeClass ntle le ho nahana ka topology ea lihlopha. Nakong e fetileng, ho finyella sena - e le hore li-pods li qetelle li le li-node tse nang le ts'ehetso bakeng sa ntho e 'ngoe le e' ngoe eo li e hlokang - ho ne ho hlokahala ho fana ka melao e nepahetseng ho NodeSelector le mamello. IN Kep E bua ka mehlala ea tšebeliso le, ehlile, lintlha tsa ts'ebetsong.

Motsoalle

Likarolo tse peli tsa bohlokoa tsa marang-rang tse hlahileng ka lekhetlo la pele (ka mofuta oa alpha) ho Kubernetes 1.16 ke:

  • tshehetso marang-rang a mabeli a marang-rang - IPv4/IPv6 - le "kutloisiso" ea eona e lumellanang le boemo ba li-pods, nodes, litšebeletso. E kenyelletsa tšebelisano ea IPv4-to-IPv4 le IPv6-to-IPv6 lipakeng tsa li-pods, ho tloha ho li-pods ho ea lits'ebeletso tsa kantle, ts'ebetsong ea litšupiso (ka har'a Bridge CNI, PTP CNI le li-plugins tsa Host-Local IPAM), hammoho le ho khutlisetsa morao Ho lumellana le lihlopha tsa Kubernetes tse sebetsang. IPv4 kapa IPv6 feela. Lintlha tsa ts'ebetsong li teng Kep.

    Mohlala oa ho hlahisa liaterese tsa IP tsa mefuta e 'meli (IPv4 le IPv6) lethathamong la li-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 e ncha bakeng sa Endpoint - EndpointSlice API. E rarolla mathata a ts'ebetso / scalability ea API ea Endpoint e teng e amang likarolo tse fapaneng tsa sefofane sa taolo (apiserver, etcd, endpoints-controller, kube-proxy). API e ncha e tla eketsoa sehlopheng sa Discovery API 'me e tla khona ho sebeletsa mashome a likete a li-endpoints tsa morao-rao tšebeletsong e' ngoe le e 'ngoe ka har'a sehlopha se nang le li-node tse likete. Ho etsa sena, Tšebeletso e 'ngoe le e' ngoe e entsoe 'mapa oa lintho tsa N EndpointSlice, e 'ngoe le e 'ngoe ea eona ka ho sa feleng e se nang lintlha tse fetang 100 (boleng bo ka hlophisoa). The EndpointSlice API e tla boela e fane ka menyetla ea tsoelo-pele ea eona ea nakong e tlang: tšehetso bakeng sa liaterese tse ngata tsa IP bakeng sa pod e 'ngoe le e' ngoe, linaha tse ncha bakeng sa li-endpoints (eseng feela). Ready и NotReady), dynamicsetting bakeng sa li-endpoints.

E hlahisitsoeng tokollong ea ho qetela e fihlile mofuta oa beta semathisetsi, e bitsoang service.kubernetes.io/load-balancer-cleanup 'me e khomaretsoe tšebeletsong e' ngoe le e 'ngoe ka mofuta LoadBalancer. Nakong ea ho tlosa tšebeletso e joalo, e thibela ho hlakoloa ha sebele ha sesebelisoa ho fihlela "ho hloekisa" ha lisebelisoa tsohle tse amehang tsa balancer ho phethoa.

Mechini ea API

"Ntho ea bohlokoa ea ho tsitsisa" e sebakeng sa seva sa Kubernetes API le ho sebelisana le eona. Sena se etsahetse haholo ka lebaka la ho fetisetsa boemong bo tsitsitseng ba sa hlokeng kenyelletso e khethehileng CustomResourceDefinitions (CRD), tse bileng le boemo ba beta ho tloha matsatsing a hole a Kubernetes 1.7 ('me sena ke June 2017!). Ho tsitsa ho ts'oanang ho ile ha tla ho likarolo tse amanang:

  • "subresources" le /status и /scale bakeng sa CustomResources;
  • phetolo liphetolelo tsa CRD, tse ipapisitseng le webhook ea kantle;
  • e sa tsoa hlahisoa (ho K8s 1.15) boleng ba kamehla (ea kamehla) le ho tlosoa ha tšimo ka mokhoa o itekanetseng (ho faola) bakeng sa CustomResources;
  • monyetla ho sebelisa schema ea OpenAPI v3 ho theha le ho phatlalatsa litokomane tsa OpenAPI tse sebelisetsoang ho netefatsa lisebelisoa tsa CRD ka lehlakoreng la seva.

Mochine o mong oo e leng khale o tsebahala ho batsamaisi ba Kubernetes: ho kena webhook - hape e ile ea lula boemong ba beta nako e telele (ho tloha ha K8s 1.9) 'me hona joale e phatlalatsoa hore e tsitsitse.

Likarolo tse ling tse peli li fihlile ho beta: sebetsa lehlakoreng la seva и shebella li-bookmark.

'Me mokhoa o le mong feela oa bohlokoa oa mofuta oa alpha e ne e le ho ikhula от SelfLink - URI e khethehileng e emelang ntho e boletsoeng le ho ba karolo ea ObjectMeta и ListMeta (ke hore, karolo ea ntho efe kapa efe ho Kubernetes). Ke hobane’ng ha ba e lahla? Khothatso ka tsela e bonolo melumo e le ho ba sieo ha mabaka a sebele (a boima) a hore tšimo ena e ntse e le teng. Mabaka a mang a hlophisitsoeng ke ho ntlafatsa ts'ebetso (ka ho tlosa tšimo e sa hlokahaleng) le ho nolofatsa mosebetsi oa generic-apiserver, e qobelloang ho sebetsana le tšimo e joalo ka tsela e khethehileng (ena ke eona feela tšimo e behiloeng ka pel'a ntho e itseng. e serile). Ho felloa ke nako ha 'nete (ka har'a beta) SelfLink e tla etsahala ka Kubernetes version 1.20, le ea ho qetela - 1.21.

Polokelo ea data

Mosebetsi oa mantlha sebakeng sa polokelo, joalo ka litokollong tse fetileng, o bonoa sebakeng seo Tšehetso ea CSI. Liphetoho tse kholo mona e bile:

  • lekhetlo la pele (ka mofuta oa alpha) e hlahile Ts'ehetso ea plugin ea CSI bakeng sa node ea basebetsi ba Windows: mokhoa oa hona joale oa ho sebetsa ka polokelo o tla boela o nkele li-plugins tsa lifate sebakeng sa Kubernetes core le FlexVolume plugins ho tloha Microsoft e thehiloeng ho Powershell;

    Kubernetes 1.16: kakaretso ea lintlafatso tsa mantlha
    Morero oa ho kenya ts'ebetsong li-plugins tsa CSI ho Kubernetes bakeng sa Windows

  • monyetla ho fetola boholo ba meqolo ea CSI, e hlahisitsoeng morao ho K8s 1.12, e se e le mofuta oa beta;
  • "Phatlalatso" e ts'oanang (ho tloha ho alpha ho ea ho beta) e fihletsoe ka bokhoni ba ho sebelisa CSI ho theha li-volume tsa ephemeral tsa lehae (CSI Inline Volume Support).

E hlahisitsoe mofuta o fetileng oa Kubernetes mosebetsi oa ho kopanya molumo (ho sebelisa PVC e teng joalo ka DataSource ho theha PVC e ncha) le eona joale e amohetse boemo ba beta.

Mohlophisi

Liphetoho tse peli tse hlokomelehang ho kemiso (ka bobeli ho alpha):

  • EvenPodsSpreading - monyetla sebelisa li-pods sebakeng sa likarolo tsa ts'ebeliso e utloahalang bakeng sa "kabo e nepahetseng" ea meroalo (joaloka Deployment le ReplicaSet) le ho lokisa kabo ena (e le tlhokahalo e thata kapa e le boemo bo bonolo, ke hore, pele). Karolo e tla holisa bokhoni bo teng ba kabo ea li-pods tse reriloeng, hajoale tse lekantsoeng ke likhetho PodAffinity и PodAntiAffinity, ho fa batsamaisi taolo e ntlafetseng tabeng ena, e leng se bolelang ho fumaneha ho holimo ho molemo le tšebeliso e ntle ea lisebelisoa. Lintlha - ho Kep.
  • Sebelisa Leano la BestFit в RequestedToCapacityRatio Priority Function nakong ea moralo oa pod, e tla lumella sebedisa ho paka moqomo ("ho paka ka lijaneng") bakeng sa lisebelisoa tsa mantlha (processor, memori) le tse atolositsoeng (joalo ka GPU). Bakeng sa lintlha tse ling, bona Kep.

    Kubernetes 1.16: kakaretso ea lintlafatso tsa mantlha
    Ho hlophisa li-pods: pele u sebelisa leano le nepahetseng ka ho fetesisa (ka kotloloho ka kemiso ea kamehla) le ka ts'ebeliso ea eona (ka scheduler extender)

Ho phaella moo, e emeloa ke bokhoni ba ho iketsetsa li-plugins tsa scheduler ka ntle ho sefate se seholo sa ntlafatso sa Kubernetes (ka ntle ho sefate).

Liphetoho tse ling

Hape ho tokollo ea Kubernetes 1.16 e ka hlokomeloa initiative for tlisa metrics e fumanehang ka tatellano e felletseng, kapa ka nepo, ho latela melawana ya semmuso ho lisebelisoa tsa K8s. Ba itšetlehile haholo ka tse tsamaisanang Litokomane tsa Prometheus. Ho se lumellane ho ile ha hlaha ka mabaka a sa tšoaneng (mohlala, litekanyetso tse ling li ile tsa bōptjoa pele litaelo tsa hona joale li hlaha), 'me bahlahisi ba etsa qeto ea hore e ne e le nako ea ho tlisa ntho e' ngoe le e 'ngoe boemong bo le bong, "tumellanong le tikoloho eohle ea Prometheus." Ts'ebetsong ea hona joale ea morero ona e boemong ba alpha, e tla ntlafatsoa butle-butle liphetolelong tse latelang tsa Kubernetes ho beta (1.17) le e tsitsitseng (1.18).

Ho phaella moo, liphetoho tse latelang li ka hlokomeloa:

  • Nts'etsopele ea tšehetso ea Windows с ponahalo Lisebelisoa tsa Kubeadm bakeng sa OS ena (mofuta oa alpha), monyetla RunAsUserName bakeng sa lijana tsa Windows (mofuta oa alpha), ntlafatso Akhaonto ea Ts'ebeletso e Laoloang ke Sehlopha (gMSA) e tšehetsa ho fihlela mofuta oa beta, tšehetso mount/hokela bakeng sa meqolo ea vSphere.
  • Recycled mochine oa compression oa data likarabong tsa API. Nakong e fetileng, sefahla sa HTTP se ne se sebelisetsoa merero ena, se neng se beha lithibelo tse 'maloa tse neng li thibela hore se se ke sa etsoa ka ho sa feleng. "Tlhahiso ea kopo e hlakileng" joale e sebetsa: bareki ba romella Accept-Encoding: gzip ka hlooho, ba fumana karabo e hatisitsoeng ea GZIP haeba boholo ba eona bo feta 128 KB. E-ea bareki ba tšehetsa compression ka bo eona (ho romela hlooho e hlokahalang), kahoo ba tla lemoha ho fokotseha ha sephethephethe hang-hang. (Liphetoho tse nyane li ka hlokahala bakeng sa lipuo tse ling.)
  • Ho ile ha khoneha ho lekanya HPA ho tloha/ho ea ho lefela pods ho ipapisitsoe le metrics ea kantle. Haeba u lekanya ho latela lintho / metrics ea kantle, ha mesebetsi e mengata e sa sebetse u ka ikemela ho 0 replicas ho boloka lisebelisoa. Karolo ena e lokela ho ba molemo haholo-holo maemong ao basebetsi ba kopang lisebelisoa tsa GPU, 'me palo ea mefuta e fapaneng ea basebetsi ba sa sebetseng e feta palo ea li-GPU tse teng.
  • Moreki e mocha - k8s.io/client-go/metadata.Client — bakeng sa phihlello ya “kakaretso” ya dintho. E etselitsoe ho khutlisa metadata habonolo (ke hore, karoloana metadata) ho tsoa mehloling ea lihlopha le ho etsa ts'ebetso ea ho bokella lithōle le ts'ebetso ea palo le bona.
  • Haha Kubernetes joale u ka khona ntle le lefa ("hahiloe" ka har'a sefate) bafani ba maru (phetolelo ea alpha).
  • Ho sesebelisoa sa kubeadm eketsa liteko (mofuta oa alpha) oa ho sebelisa li-patches tsa hau nakong ea ts'ebetso init, join и upgrade. Ithute haholoanyane ka mokhoa oa ho sebelisa folakha --experimental-kustomize, bona ho Kep.
  • Qetello e ncha ea apiserver - readyz, - e u lumella ho romela tlhahisoleseding e mabapi le ho itokisa ha eona. Seva ea API le eona hona joale e na le folakha --maximum-startup-sequence-duration, e u lumellang hore u laole ho qala bocha ha eona.
  • Tse peli likarolo tsa Azure phatlalatsoa hore e tsitsitse: tshehetso libaka tse fumanehang (Libaka tse fumanehang) le cross resource group (RG). Ntle le moo, Azure e ekelitse:
    • tšehetso ea netefatso AAD le ADFS;
    • tlhahiso service.beta.kubernetes.io/azure-pip-name ho hlakisa IP ea sechaba ea tekanyo ea mojaro;
    • monyetla litlhophiso LoadBalancerName и LoadBalancerResourceGroup.
  • Hona joale AWS e na le eona tšehetso bakeng sa EBS ho Windows le optimized Mehala ea EC2 API DescribeInstances.
  • Kubeadm e se e ikemetse e fallang Tlhophiso ea CoreDNS ha u ntlafatsa mofuta oa CoreDNS.
  • Li-binary jj setšoantšong se lumellanang sa Docker etsoa lefats'e-e sebetsang, e u lumellang ho tsamaisa setšoantšo sena ntle le tlhoko ea litokelo tsa metso. Hape, setšoantšo sa ho falla etcd emisa etcd2 phetolelo tšehetso.
  • В Sehlopha sa Autoscaler 1.16.0 e fetoletsoe ho sebelisa distroless e le setšoantšo sa motheo, ts'ebetso e ntlafetseng, e ekelitse bafani ba leru ba bacha (DigitalOcean, Magnum, Packet).
  • Lintlafatso ho software e sebelisitsoeng/e itšetlehileng ka eona: Go 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PES

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso