Kubernetes 1.16: va'aiga lautele o mea fou fou

Kubernetes 1.16: va'aiga lautele o mea fou fou

Aso Lulu, o le a tupu le isi faʻasalalauga o Kubernetes - 1.16. E tusa ai ma tu ma aga na atiina ae mo la tatou blog, o le sefulu tausaga lenei o loʻo tatou talanoa ai e uiga i suiga sili ona taua i le lomiga fou.

O fa'amatalaga e fa'aaoga e saunia ai lenei mea e maua mai Kubernetes fa'aleleia laulau su'ega, SUIGA-1.16 ma mataupu fa'afeso'ota'i, toso talosaga, ma Kubernetes Enhancement Proposals (KEP). O lea, tatou o!..

Node

O se numera tele moni o fa'afouga iloga (i le tulaga fa'asologa o le alpha) o lo'o tu'uina atu i le itu o le K8s cluster nodes (Kubelet).

Muamua, o le mea e taʻua «pusa ephemeral» (Ipu Ephemeral), fuafuaina e faʻafaigofie faiga faʻapipiʻi i pods. O le masini fou e mafai ai ona e faʻalauiloa ni koneteina faʻapitoa e amata i le igoa avanoa o pods o loʻo iai ma ola mo sina taimi puupuu. O lo latou faʻamoemoe o le fegalegaleai ma isi pods ma koneteina ina ia mafai ona foia soʻo se faʻafitauli ma debug. Ua fa'atinoina se poloaiga fou mo lea vaega kubectl debug, tutusa i lona uiga i kubectl exec: na'o le fa'atinoina o se fa'agasologa i totonu o se atigipusa (pei o exec) na te tatalaina se atigipusa i totonu o se pusa. Mo se faʻataʻitaʻiga, o lenei poloaiga o le a faʻafesoʻotaʻi se pusa fou i se pod:

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

O faʻamatalaga e uiga i pusa ephemeral (ma faʻataʻitaʻiga o latou faʻaoga) e mafai ona maua i totonu tutusa KEP. O le faʻatinoga o loʻo i ai nei (i le K8s 1.16) o se faʻaaliga alpha, ma o se tasi o taʻiala mo lona fesiitaiga i le beta version o le "suʻeina o le Ephemeral Containers API mo le itiiti ifo i le 2 faʻasalalauga o [Kubernetes]."

NB: I lona aano ma e oo lava i lona igoa, o le ata e foliga tutusa ma se mea ua leva ona iai kubectl-debuglea tatou te talanoa ai ua uma ona tusia. O loʻo faʻamoemoeina o le oʻo mai o pusa ephemeral, o le a faʻamutaina le atinaʻeina o se isi mea faʻapipiʻi fafo.

O le isi mea fou - PodOverhead - fuafuaina e saunia faiga mo le fa'atatauina o tau i luga ole laiga mo pods, lea e mafai ona fesuisuiaʻi tele e faʻatatau i le taimi faʻaaoga. Mo se faʻataʻitaʻiga, o tusitala lenei KEP i'uga i Kata Containers, lea e mana'omia ai le fa'aogaina o le fatu malo, kata agent, init system, ma isi. A o'o ina matua tele, e le mafai ona le amana'iaina, o lona uiga e tatau ona i ai se auala e fa'atatau mo nisi quota, fuafuaga, ma isi. Ina ia faatinoina i totonu PodSpec faaopoopo fanua Overhead *ResourceList (faʻatusatusa i faʻamatalaga i RuntimeClass, pe a faʻaaogaina se tasi).

O le isi mea fou iloga o le pule node topology (Node Topology Pule), fa'atulagaina e fa'atasi ai le auala e fa'amalieina ai le tu'ufa'atasia o mea faigaluega mo vaega eseese i Kubernetes. O lenei fuafuaga e faʻaosofia e le faʻatupulaia o le manaʻomia o faiga faʻaonaponei eseese (mai le matata o fesoʻotaʻiga, masini aʻoaʻoga, auaunaga tau tupe, ma isi) mo faʻatusatusaga faʻatusatusa maualuga ma faʻaitiitia le tuai i le faʻatinoina o galuega, lea latou te faʻaogaina ai le PPU ma tomai fa'avavevave meafaigaluega. O ia faʻataʻitaʻiga i Kubernetes ua maeʻa ona ausia faʻafetai i vaega eseese (CPU pule, Pule o masini, CNI), ma o lea o le a faʻaopoopoina i latou se tasi faʻaoga i totonu e tuʻufaʻatasia le auala ma faʻafaigofie le fesoʻotaʻiga o mea fou tutusa - e taʻua o topology- iloa - vaega i le itu Kubelet. Fa'amatalaga - i tutusa KEP.

Kubernetes 1.16: va'aiga lautele o mea fou fou
Topology Manager Component Diagram

Le isi vaega - siaki pusa ao latou tamo'e (su'esu'e amata). E pei ona e iloa, mo koneteina e umi se taimi e faʻalauiloa ai, e faigata ona maua se tulaga faʻaonaponei: a le o le "fasiotia" aʻo leʻi amata ona faʻatino, pe latou te faʻaumatia mo se taimi umi. Siaki fou (fa'aaga e ala i le faitotoa fa'apitoa e ta'ua StartupProbeEnabled) fa'aleaogaina - po'o le, tolopoina - le a'afiaga o so'o se isi siaki se'ia o'o i le taimi e uma ai le ta'avale. Mo lenei mafuaʻaga, na taʻua muamua ai le faʻaaliga pod-startu liveness-su'esu'e taofi. Mo pods e umi se taimi e amata ai, e mafai ona e su'esu'eina le setete i taimi pupuu.

E le gata i lea, o se faʻaleleia atili mo le RuntimeClass o loʻo maua vave ile tulaga beta, faʻaopoopoina le lagolago mo "fuifui eseese". C RuntimeClass Fa'atulagaina Ole taimi nei e le'o mana'omia mo node ta'itasi e iai le lagolago mo RuntimeClass ta'itasi: mo pods e mafai ona e filifilia se RuntimeClass e aunoa ma le mafaufau i le fa'aputuga o fa'aputuga. I le taimi muamua, ina ia ausia lenei mea - ina ia faʻauʻu pusa i luga o nodes ma le lagolago mo mea uma latou te manaʻomia - e tatau ona tuʻuina atu tulafono talafeagai i NodeSelector ma tolerations. IN MATA O loʻo talanoa e uiga i faʻataʻitaʻiga o le faʻaaogaina ma, ioe, faʻamatalaga faʻatinoga.

Fesootaiga

E lua vaega taua o feso'ota'iga na fa'aalia mo le taimi muamua (i le alpha version) i le Kubernetes 1.16 o:

  • lagolago fa'aputuga feso'ota'iga lua - IPv4/IPv6 - ma lona "malamalama" tutusa i le tulaga o pods, nodes, auaunaga. E aofia ai le IPv4-i-IPv4 ma le IPv6-i-IPv6 fesoʻotaʻiga i le va o pods, mai pods i auaunaga i fafo, faʻatinoga faʻasino (i totonu o le Bridge CNI, PTP CNI ma le Host-Local IPAM plugins), faʻapea foʻi ma le fesuiaʻi Faʻatasi ma le Kubernetes fuifui o loʻo taʻavale. IPv4 poʻo IPv6 naʻo. O faʻamatalaga faʻatinoga o loʻo i totonu MATA.

    O se faʻataʻitaʻiga o le faʻaalia o tuatusi IP o ituaiga e lua (IPv4 ma IPv6) i le lisi o 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 fou mo le Endpoint - EndpointSlice API. E fo'ia ai fa'afitauli o le fa'atinoga/fa'aleaogaina o le Endpoint API o lo'o iai nei e a'afia ai vaega eseese i le va'alele fa'atonutonu (apiserver, etcd, endpoints-controller, kube-proxy). Ole API fou ole a fa'aopoopo ile Discovery API vaega ma ole a mafai ona tautua ile fiasefulu afe pito pito i tua ile au'aunaga ta'itasi ile fuifui e aofia ai le afe o nodes. Ina ia faia lenei mea, o Auaunaga taʻitasi e faʻafanua i N mea faitino EndpointSlice, o ia mea ta'itasi e le mafai ona sili atu i le 100 fa'ai'uga (o le tau e mafai ona fa'atulagaina). O le EndpointSlice API o le a maua ai foi avanoa mo lona atinaʻe i le lumanaʻi: lagolago mo le tele o tuatusi IP mo pod taʻitasi, setete fou mo faʻaiʻuga (e le gata Ready и NotReady), subsetting malosi mo fa'ai'uga.

O le mea na tuʻuina atu i le faʻasalalauga mulimuli ua oʻo i le beta version fa'amautu, igoa service.kubernetes.io/load-balancer-cleanup ma fa'apipi'i i auaunaga ta'itasi ma ituaiga LoadBalancer. I le taimi o le tapeina o sea auaunaga, e taofia ai le tapeina moni o le punaoa seia maeʻa le "faamamaina" o punaoa paleni talafeagai uma.

API masini

O le mea moni "faʻamautu tulaga taua" o loʻo i le vaega o le Kubernetes API server ma fegalegaleaiga ma ia. Na tupu tele lenei mea faafetai i fesiitai atu i tulaga mautu i latou e le manaʻomia se faʻamatalaga faʻapitoa CustomResourceDefinitions (CRD), lea sa i ai le tulaga beta talu mai aso mamao o Kubernetes 1.7 (ma o Iuni 2017 lea!). O le faʻamautu tutusa na oʻo mai i foliga faʻapitoa:

  • "so'oga" ma /status и /scale mo CustomResources;
  • suiga lomiga mo CRD, fa'avae ile webhook fafo;
  • na tuuina atu talu ai nei (i le K8s 1.15) tau fa'aletonu (fa'aleaogaina) ma otometi le aveeseina o fanua (teteina) mo CustomResources;
  • avanoa fa'aaoga le OpenAPI v3 schema e fatu ma fa'asalalau pepa OpenAPI fa'aoga e fa'amaonia ai punaoa CRD i le itu o le server.

O le isi masini ua leva ona masani i pulega Kubernetes: ulufale webhook - sa tumau pea i le tulaga beta mo se taimi umi (talu mai le K8s 1.9) ma ua fa'ailoa mai nei e mautu.

E lua isi vaega ua oʻo i le beta: fa'aoga le itu-server и matamata i faailoga tusi.

Ma na o le pau lava le mea fou fou i le alpha version sa toilalo от SelfLink - o se URI faʻapitoa e fai ma sui o le mea faʻapitoa ma avea ma vaega o ObjectMeta и ListMeta (o lona uiga o se vaega o soʻo se mea i Kubernetes). Aiseā ua latou lafoaʻia ai? Faaosofia i se auala faigofie leo ona o le leai o ni mafuaaga moni (lofia) mo lenei fanua o loʻo i ai pea. O mafuaʻaga sili atu ona aloaia o le faʻamalieina o le faʻatinoga (e ala i le aveeseina o se fanua e le manaʻomia) ma faʻafaigofie le galuega a le generic-apiserver, lea e faʻamalosia e faʻatautaia sea fanua i se auala faʻapitoa (naʻo le pau lea o le fanua e tuʻu saʻo i luma o le mea. ua fa'asologa). Ua le toe aoga (i totonu o le beta) SelfLink o le a tupu e le Kubernetes version 1.20, ma mulimuli - 1.21.

Teuina o faamaumauga

O le galuega autu i le vaega o le teuina, e pei o faʻasalalauga muamua, o loʻo matauina i le eria lagolago CSI. O suiga autu iinei o:

  • mo le taimi muamua (i le alpha version) faaali mai Lagolago CSI plugin mo nodes tagata faigaluega Windows: o le auala o loʻo i ai nei o le galue ma le teuina o le a suia ai foi faʻapipiʻi i totonu o laʻau i le Kubernetes core ma FlexVolume plugins mai Microsoft faʻavae i le Powershell;

    Kubernetes 1.16: va'aiga lautele o mea fou fou
    Fuafuaga mo le faʻatinoina o masini CSI i Kubernetes mo Windows

  • avanoa suia le tele o le CSI, faʻafeiloaʻi i tua i le K8s 1.12, ua tupu aʻe i se kopi beta;
  • O se "faʻalauiloa" tutusa (mai le alpha i le beta) na ausia e ala i le mafai ona faʻaogaina le CSI e fatuina ai voluma ephemeral i le lotoifale (CSI Inline Volume Lagolago).

Fa'ailoa i le lomiga muamua o Kubernetes galuega cloning volume (faʻaaogaina le PVC o loʻo iai e pei o DataSource e fatu ai le PVC fou) ua maua nei foi le tulaga beta.

Fa'atonu

E lua suiga iloga i le fa'atulagaina (e lua ile alpha):

  • EvenPodsSpreading - avanoa fa'aoga pods nai lo iunite fa'aoga talafeagai mo le "tufatufaina tutusa" o uta (pei o le Deployment and ReplicaSet) ma fetuutuunai lenei tufatufaga (o se manaʻoga faigata poʻo se tulaga vaivai, o lona uiga o le faamuamua). O le fa'aaliga o le a fa'alauteleina ai le gafatia fa'asoa o lo'o i ai nei o pods fuafuaina, o lo'o fa'atapula'aina nei i filifiliga PodAffinity и PodAntiAffinity, tu'uina atu i le au fa'atonu le pulea lelei i lenei mataupu, o lona uiga e sili atu le avanoa maualuga ma le fa'aogaina lelei o punaoa. Fa'amatalaga - i MATA.
  • Faaaoga Faiga Fa'avae BestFit в TalosagaToCapacityRatio Fa'amuamua Galuega i le taimi o fuafuaga pod, lea e mafai ai faʻaaoga fa'apipi'i talone (“fa'apipi'i i totonu o koneteina”) mo puna'oa fa'avae e lua (processor, memory) ma mea fa'alautele (pei o le GPU). Mo nisi fa'amatalaga, va'ai MATA.

    Kubernetes 1.16: va'aiga lautele o mea fou fou
    Fa'atulagaina o pods: a'o le'i fa'aogaina faiga fa'avae e fetaui lelei (tu'usa'o e ala i le fa'atulagaina o mea e le'i mafai) ma fa'atasi ai ma lona fa'aoga (e ala i le fa'alauteleina o fa'asologa)

I le faaopoopo atu, faʻatusalia e le tomai e fai ai au lava fa'apipi'i fa'atulagaina i fafo atu o le la'au fa'atupuina Kubernetes (out-of-tree).

Isi suiga

I totonu foi o le Kubernetes 1.16 faʻamalolo e mafai ona e matauina fuafuaga mo aumaia metric avanoa i le faasologa atoa, pe sili atu ona sa'o, e tusa ai ma tulafono faatonutonu aloaia i le K8s meafaigaluega. Latou te faʻalagolago tele i le fetaui Fa'amaumauga a le Prometheus. O faʻalavelave na tulaʻi mai mo mafuaaga eseese (mo se faʻataʻitaʻiga, o nisi metric na naʻo le faia aʻo leʻi faʻaalia faatonuga o loʻo i ai nei), ma na filifili le au atiaʻe ua oʻo i le taimi e aumai ai mea uma i se tulaga e tasi, "i laina ma isi vaega o le Prometheus ecosystem." O le fa'atinoga o lo'o i ai nei o lenei fa'amoemoe o lo'o i le tulaga o le alafa'i, lea o le a fa'agasolo fa'alaua'itele i lomiga mulimuli ane o Kubernetes i le beta (1.17) ma le mautu (1.18).

E le gata i lea, o suiga nei e mafai ona matauina:

  • Windows lagolago atinae с foliga vaaia Kubeadm utilities mo lenei OS (alpha version), avanoa RunAsUserName mo pusa Windows (alpha version), faaleleia Group Managed Service Account (gMSA) lagolago se'ia o'o atu ile beta version, lagolago faʻapipiʻi / faʻapipiʻi mo vSphere voluma.
  • Toe fa'aaogaina fa'amatalaga fa'apipi'i masini i tali API. I le taimi muamua, sa faʻaaogaina se faamama HTTP mo nei faʻamoemoega, lea na tuʻuina atu ai le tele o tapulaʻa na taofia ai mai le faʻaogaina e ala i le faaletonu. "Fa'amuta talosaga manino" o lo'o galue nei: tagata fa'atau e lafo Accept-Encoding: gzip i le ulutala, latou te maua se tali faʻapipiʻi GZIP pe afai o lona tele e sili atu i le 128 KB. E otometi lava ona lagolagoina e le au fa'atau le fa'apipi'i (auina atu le ulutala mana'omia), o lea o le a latou iloa vave ai le fa'aitiitia o feoaiga. (Atonu e mana'omia ni suiga laiti mo isi gagana.)
  • Na mafai fuaina le HPA mai/i le zero pods e fa'atatau ile metric i fafo. Afai e te fuaina e fa'atatau i meafaitino/tulaga i fafo, a o'o loa i le fa'aletonu o galuega e mafai ona e fuaina i le 0 fa'atusa e fa'asaoina ai punaoa. O lenei vaega e tatau ona aoga faapitoa mo mataupu e talosagaina ai e tagata faigaluega punaoa GPU, ma o le numera o ituaiga eseese o tagata faigaluega le aoga e sili atu nai lo le numera o GPU avanoa.
  • Kalani fou - k8s.io/client-go/metadata.Client - mo le "lautele" avanoa i mea faitino. Ua mamanuina ina ia faigofie ona toe maua metadata (e pei o le vaega metadata) mai punaoa faʻapipiʻi ma faʻatino le aoina o lapisi ma faʻagaioiga faʻatasi ma i latou.
  • Fausia Kubernetes o lea e te mafaia e aunoa ma se talatuu (“fausia i totonu” i totonu o le laau) kamupani ao (alpha version).
  • I le aoga kubeadm faʻaopoopo fa'ata'ita'iga (alpha version) mafai ona fa'aoga fa'ailoga fa'apitoa i taimi o fa'agaioiga init, join и upgrade. A'oa'o atili ile fa'aogaina ole fu'a --experimental-kustomize, vaai i totonu MATA.
  • Fa'ai'uga fou mo apiserver - readyz, - fa'atagaina oe e fa'atau atu fa'amatalaga e uiga i lona saunia. Ua iai fo'i le fu'a a le 'au'aunaga API --maximum-startup-sequence-duration, fa'atagaina oe e fa'atonutonu ona toe amata.
  • Lua foliga mo Azure fa'ailoa mautu: lagolago sone avanoa (Sone Avanoa) ma kulupu fa'asoa (RG). E le gata i lea, ua faaopoopo e Azure:
    • lagolago fa'amaoni AAD ma ADFS;
    • fa'amatalaga service.beta.kubernetes.io/azure-pip-name ia faʻamaonia le IP lautele o le paleni uta;
    • avanoa faatulagaga LoadBalancerName и LoadBalancerResourceGroup.
  • AWS ua iai nei lagolago mo EBS i Windows ma fa'alelei EC2 API valaau DescribeInstances.
  • Kubeadm ua tutoatasi nei malaga mai Fa'atonuga CoreDNS pe a fa'aleleia le fa'asologa o le CoreDNS.
  • Binaries ma isi mea i le ata Docker fetaui faia lalolagi-faʻaaogaina, lea e mafai ai ona e faʻataʻitaʻiina lenei ata e aunoa ma le manaʻomia o aia tatau. E le gata i lea, etcd migration image taofi etcd2 version support.
  • В Cluster Autoscaler 1.16.0 suia i le faʻaaogaina o le distroless e pei o le ata faʻavae, faʻaleleia le faʻatinoga, faʻaopoopoina le auʻaunaga ao fou (DigitalOcean, Magnum, Packet).
  • Fa'afouga i polokalama fa'aoga/fa'alagolago: Alu 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

SALA

Faitau foi i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga