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:
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.
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:
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.
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 maiLagolago 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;
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.
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), avanoaRunAsUserName 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'aaogainafa'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 mafaifuaina 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:
fa'amatalagaservice.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.