Kubernetes 1.16: topimaso ny fanavaozana lehibe

Kubernetes 1.16: topimaso ny fanavaozana lehibe

Androany alarobia, hitranga Famoahana manaraka ny Kubernetes - 1.16. Araka ny fomban-drazana novolavolaina ho an'ny bilaoginay, izao no fotoana fitsingerenan'ny fahafolo iresahana momba ny fiovana lehibe indrindra amin'ny dikan-teny vaovao.

Ny fampahalalana ampiasaina hanomanana ity fitaovana ity dia nalaina avy amin'ny tabilao fanaraha-maso fanatsarana Kubernetes, CHANGELOG-1.16 ary ny olana mifandraika amin'izany, ny fangatahana fisarihana, ary ny tolo-kevitry ny fanatsarana ny Kubernetes (KEP). Noho izany, andao!..

Nodes

Betsaka ny fanavaozana malaza (amin'ny sata version alpha) no aseho eo amin'ny sisin'ny k8s cluster nodes (Kubelet).

Voalohany, ny antsoina hoe «fitoeran-javatra ephemeral» (Kaontenera Ephemeral), natao hanatsorana ny fizotran'ny debugging amin'ny pods. Ny mekanika vaovao dia ahafahanao mametraka kaontenera manokana izay manomboka amin'ny anaran'ireo pods efa misy ary miaina mandritra ny fotoana fohy. Ny tanjon'izy ireo dia ny hifanerasera amin'ny pods sy container hafa mba hamahana ny olana sy ny debug. Nisy baiko vaovao nampiharina ho an'ity endri-javatra ity kubectl debug, mitovy amin'ny tena izy amin'ny kubectl exec: fa tsy manao dingana ao anaty container (toy ny in exec) dia mandefa kaontenera ao anaty pod. Ohatra, ity baiko ity dia hampifandray fitoeran-javatra vaovao amin'ny pod:

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

Ny antsipiriany momba ny kaontenera ephemeral (sy ny ohatra amin'ny fampiasana azy) dia azo jerena ao mifanaraka amin'ny KEP. Ny fampiharana amin'izao fotoana izao (ao amin'ny K8s 1.16) dia dika alpha, ary anisan'ny fepetra amin'ny famindrana azy amin'ny dikan-beta ny "fitsapana ny Ephemeral Containers API ho an'ny famoahana 2 farafahakeliny [Kubernetes]."

NB: Amin'ny maha-izy azy ary na ny anarany aza dia mitovy amin'ny plugin efa misy ilay endri-javatra kubectl-debugmomba izay isika efa nanoratra. Antenaina fa miaraka amin'ny fahatongavan'ireo kaontenera ephemeral dia hitsahatra ny fivoaran'ny plugin ivelany misaraka.

Fanavaozana iray hafa - PodOverhead - natao hanomezana mekanika ho an'ny fikajiana ny vidin'ny overhead ho an'ny pods, izay mety miovaova be arakaraka ny fotoana fampandehanana ampiasaina. Ohatra, ny mpanoratra ity KEP Vokatry ny Kata Containers, izay mitaky ny fampandehanana ny kernel vahiny, ny mpiasan'ny kata, ny rafitra init, sns. Rehefa lasa be loatra ny overhead dia tsy azo odian-tsy hita izany, midika izany fa mila misy fomba hijerena azy amin'ny quota fanampiny, drafitra, sns. Mba hampiharana azy amin'ny PodSpec nampiana saha Overhead *ResourceList (ampitahao amin'ny data in RuntimeClass, raha iray no ampiasaina).

Fanavaozana miavaka iray hafa dia mpitantana ny node topology (Mpitantana Topologie Node), natao hampiraisana ny fomba fiasa amin'ny fanitsiana tsara ny famatsiana loharanon-karena ho an'ny singa samihafa ao amin'ny Kubernetes. Ity hetsika ity dia tarihin'ny fitomboan'ny filana rafitra maoderina isan-karazany (avy amin'ny sehatry ny fifandraisan-davitra, fianarana milina, tolotra ara-bola, sns.) ho an'ny informatika parallèle mahomby sy manamaivana ny fahatarana amin'ny fanatanterahana ny asa, izay ampiasain'izy ireo CPU mandroso sy fahaiza-manafaingana fitaovana. Ny fanatsarana toy izany ao amin'ny Kubernetes dia tontosa hatramin'izao noho ny singa samihafa (mpitantana CPU, mpitantana ny fitaovana, CNI), ary izao izy ireo dia ampiana interface tsara anatiny iray izay mampiray ny fomba fiasa ary manamora ny fifandraisana amin'ireo vaovao mitovy - antsoina hoe topology- mahafantatra - singa amin'ny lafiny Kubelet. Details - in mifanaraka amin'ny KEP.

Kubernetes 1.16: topimaso ny fanavaozana lehibe
Topology Manager Component Diagram

endri-javatra manaraka - manamarina ny kaontenera rehefa mandeha izy ireo (fanombohana probe). Araka ny fantatrao, ho an'ny kaontenera izay maharitra ela ny fandefasana azy dia sarotra ny mahazo ny sata vaovao: "vonoina" izy ireo alohan'ny hanombohan'ny asany, na hiafara amin'ny fahatapahan'ny fotoana maharitra. Fanamarinana vaovao (azo atao amin'ny alàlan'ny vavahadin-tserasera antsoina hoe StartupProbeEnabled) manafoana - na ny marimarina kokoa, mampihemotra - ny vokatry ny fisavana hafa mandra-pahavitan'ny pod. Noho izany antony izany dia nantsoina tany am-boalohany ilay endri-javatra pod-startup liveness-probe holdoff. Ho an'ny pods izay maharitra ela vao manomboka, dia azonao atao ny manadihady ny fanjakana ao anatin'ny fotoana fohy.

Ho fanampin'izay, misy fanatsarana ny RuntimeClass avy hatrany amin'ny sata beta, manampy fanohanana ho an'ny "cluster heterogène". C RuntimeClass fandaharam-potoana Amin'izao fotoana izao dia tsy ilaina mihitsy ny manana fanohanana ho an'ny RuntimeClass tsirairay isaky ny node: ho an'ny pods dia afaka misafidy RuntimeClass ianao raha tsy mieritreritra momba ny topolojia cluster. Teo aloha, mba hahatratrarana izany - mba hiafara amin'ny node ny pods miaraka amin'ny fanohanana ny zavatra rehetra ilainy - dia ilaina ny mametraka fitsipika mifanaraka amin'ny NodeSelector sy ny fandeferana. IN CAP Miresaka momba ny ohatra amin'ny fampiasana sy, mazava ho azy, ny antsipiriany momba ny fampiharana.

Network

Ny endri-tambajotra roa manan-danja izay niseho voalohany (amin'ny dikan-teny alpha) ao amin'ny Kubernetes 1.16 dia:

  • fanohanana tamba-jotra roa - IPv4/IPv6 - sy ny "fahatakarana" mifanaraka aminy amin'ny haavon'ny pods, nodes, serivisy. Tafiditra ao anatin'izany ny fifandraisana IPv4-to-IPv4 sy IPv6-to-IPv6 eo anelanelan'ny pods, manomboka amin'ny pods mankany amin'ny serivisy ivelany, fampiharana reference (ao anatin'ny plugins Bridge CNI, PTP CNI ary IPAM Host-Local IPAM), ary koa ny mifamadika Mifanaraka amin'ny cluster Kubernetes mandeha. IPv4 na IPv6 ihany. Ny antsipiriany momba ny fampiharana dia ao CAP.

    Ohatra iray amin'ny fampisehoana adiresy IP misy karazany roa (IPv4 sy IPv6) ao amin'ny lisitry ny 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 vaovao ho an'ny Endpoint - EndpointSlice API. Izy io dia mamaha ny olana momba ny fahombiazan'ny API Endpoint efa misy izay misy fiantraikany amin'ny singa isan-karazany ao amin'ny fiaramanidina fanaraha-maso (apiserver, etcd, endpoints-controller, kube-proxy). Hampiana ao amin'ny vondrona Discovery API ny API vaovao ary afaka manompo tondro faran'ny backend an'aliny amin'ny serivisy tsirairay ao anaty cluster misy node an'arivony. Mba hanaovana izany, ny serivisy tsirairay dia aseho amin'ny zavatra N EndpointSlice, ny tsirairay amin'izy ireo amin'ny alàlan'ny default dia tsy manana teboka farany mihoatra ny 100 (azo amboarina ny sandany). Ny EndpointSlice API dia hanome fahafahana ho an'ny fivoarany amin'ny ho avy: fanohanana adiresy IP maromaro ho an'ny pod tsirairay, fanjakana vaovao ho an'ny teboka farany (tsy hoe Ready и NotReady), subsetting mavitrika ho an'ny teboka farany.

Ny iray naseho tamin'ny famoahana farany dia tonga tamin'ny version beta finalizer, nomena anarana service.kubernetes.io/load-balancer-cleanup ary mifamatotra amin'ny serivisy tsirairay misy karazany LoadBalancer. Amin'ny fotoana famafana ny serivisy toy izany, dia manakana ny famafana ny loharanon-karena mandra-pahavitan'ny "fanadiovana" ny loharanon-danja rehetra mifandraika amin'izany.

API Machinery

Ny tena "zava-dehibe amin'ny fanamafisana" dia ao amin'ny faritry ny mpizara Kubernetes API sy ny fifandraisana aminy. Izany no nitranga indrindra noho ny mamindra amin'ny sata marin-toerana ireo izay tsy mila fampidirana manokana CustomResourceDefinitions (CRD), izay manana sata beta hatramin'ny andro lavitr'i Kubernetes 1.7 (ary Jona 2017 ity!). Ny fanamafisana mitovy dia tonga tamin'ireo endri-javatra mifandraika amin'izany:

  • "subresources" amin'ny /status и /scale ho an'ny CustomResources;
  • fiovana dikan-teny ho an'ny CRD, mifototra amin'ny webhook ivelany;
  • natolotra vao haingana (ao amin'ny K8s 1.15). (mivadika) ary fanesorana saha mandeha ho azy (famotehana) ho an'ny CustomResources;
  • fahafahana mampiasa ny tetika OpenAPI v3 hamoronana sy hamoahana ny antontan-taratasy OpenAPI ampiasaina hanamarina ny loharanon-karena CRD eo amin'ny lafiny mpizara.

Mekanisma iray hafa efa fantatry ny mpitantana Kubernetes hatry ny ela: fidirana webhook - nijanona tao amin'ny sata beta nandritra ny fotoana ela (hatramin'ny K8s 1.9) ary nambara ho stable.

Fampiasa roa hafa no tonga amin'ny beta: mihatra amin'ny lafiny server и mijery tsoratadidy.

Ary ny hany fanavaozana manan-danja amin'ny version alpha dia tsy fahombiazana от SelfLink - URI manokana maneho ny zavatra voatondro ary anisan'ny ObjectMeta и ListMeta (izany hoe ampahany amin'ny zavatra rehetra ao amin'ny Kubernetes). Nahoana izy ireo no mandao izany? Motivation amin'ny fomba tsotra feo noho ny tsy fisian'ny antony tena izy (mihoatra) amin'ny mbola misy an'io sehatra io. Ny antony ara-dalàna kokoa dia ny fanatsarana ny fampisehoana (amin'ny fanesorana saha tsy ilaina) sy ny fanatsorana ny asan'ny generic-apiserver, izay voatery mitantana sehatra toy izany amin'ny fomba manokana (io no hany sehatra napetraka eo anoloan'ilay zavatra dia serialized). Tena lany andro (ao anatin'ny beta) SelfLink dia hitranga amin'ny Kubernetes version 1.20, ary farany - 1.21.

Fitahirizana data

Ny asa lehibe eo amin'ny sehatry ny fitahirizana, toy ny tamin'ny famoahana teo aloha, dia hita ao amin'ny faritra Fanohanana CSI. Ny fiovana lehibe teto dia:

  • voalohany (amin'ny version alpha) niseho Fanohanana plugin CSI ho an'ny nodes mpiasa Windows: ny fomba fiasa amin'izao fotoana izao miaraka amin'ny fitahirizana dia hanolo ihany koa ireo plugins an-tree ao amin'ny Kubernetes core sy FlexVolume plugins avy amin'ny Microsoft miorina amin'ny Powershell;

    Kubernetes 1.16: topimaso ny fanavaozana lehibe
    Tetika fampiharana plugins CSI ao amin'ny Kubernetes ho an'ny Windows

  • fahafahana manova ny haben'ny CSI, nampidirina tao amin'ny K8s 1.12, dia nitombo ho version beta;
  • Ny "promotion" mitovy amin'izany (avy amin'ny alpha ka hatramin'ny beta) dia azo tamin'ny alàlan'ny fahaizana mampiasa CSI hamoronana boky ephemeral eo an-toerana (CSI Inline Volume Support).

Nampidirina tao amin'ny Kubernetes teo aloha asa kloning volume (mampiasa PVC efa misy toy ny DataSource mba hamoronana PVC vaovao) dia nahazo sata beta ihany koa.

Mpandrindra

Fiovana roa miavaka amin'ny fandaharam-potoana (samy amin'ny alpha):

  • EvenPodsSpreading - fahafahana mampiasa pods fa tsy vondrona fampiharana lojika ho an'ny "fizarana ara-drariny" ny entana (toy ny Deployment sy ReplicaSet) ary manitsy ity fizarana ity (ho toy ny fepetra henjana na toy ny fepetra malefaka, izany hoe laharam-pahamehana). Ny endri-javatra dia hanitatra ny fahafaha-mizara efa misy ny pods efa nomanina, izay voafetra amin'ny safidy PodAffinity и PodAntiAffinity, manome ny mpitantana ny fanaraha-maso tsara kokoa amin'ity raharaha ity, izay midika fa azo atao tsara kokoa sy azo ampiasaina tsara kokoa ny loharanon-karena. Details - in CAP.
  • ny fampiasana ny Politika BestFit в RequestedToCapacityRatio Laharam-pahamehana nandritra ny pod drafitra, izay hamela to apply famonosana daba ("famonoana ao anaty fitoeran-javatra") ho an'ny loharano fototra (processor, fitadidiana) sy ny fanampiny (toy ny GPU). Raha mila fanazavana fanampiny dia jereo CAP.

    Kubernetes 1.16: topimaso ny fanavaozana lehibe
    Fanomanana pods: alohan'ny hampiasana ny politika mifanaraka tsara indrindra (mivantana amin'ny alàlan'ny fandaharam-potoana mahazatra) ary amin'ny fampiasana azy (amin'ny alàlan'ny extender scheduler)

Ankoatra izany, aseho ny fahafahana mamorona plugins fandaharam-potoananao manokana ivelan'ny hazo fampandrosoana Kubernetes lehibe (tsy misy hazo).

Fiovana hafa

Ao amin'ny famoahana Kubernetes 1.16 ihany koa dia azo marihina izany fandraisana andraikitra ho an'ny MITONDRA metrika misy amin'ny filaharana feno, na ny marimarina kokoa, mifanaraka amin'ny fitsipika ofisialy ho an'ny fitaovana K8s. Miantehitra betsaka amin'ny mifanaraka amin'izany izy ireo Prometheus documentation. Nipoitra ny tsy fitovian-kevitra noho ny antony samihafa (ohatra, noforonina tsotra izao ny metrika sasany talohan'ny nisehoan'ny toromarika ankehitriny), ary nanapa-kevitra ny mpamorona fa tonga ny fotoana hitondrana ny zava-drehetra amin'ny fenitra tokana, "mifanaraka amin'ny tontolo iainana Prometheus". Ny fampiharana amin'izao fotoana izao amin'ity hetsika ity dia ao amin'ny sata alpha, izay hampiroborobo tsikelikely amin'ny dikan-teny Kubernetes manaraka ho beta (1.17) sy stable (1.18).

Ankoatra izany, dia azo marihina ireto fanovana manaraka ireto:

  • Windows fanohanana fampandrosoana с Bika Aman 'endrika Fitaovana Kubeadm ho an'ity OS ity (dikan-teny alpha), MITORY RunAsUserName ho an'ny kaontenera Windows (dikan-teny alpha), fanatsarana Manohana hatramin'ny version beta ny Groupe Managed Service Account (gMSA), MANAMPY mount/attach ho an'ny volume vSphere.
  • amboarina mekanika famatrarana data amin'ny valin'ny API. Teo aloha dia nisy sivana HTTP nampiasaina ho an'ireo tanjona ireo, izay nametraka fameperana maromaro izay nanakana azy tsy ho afaka amin'ny alàlan'ny default. Miasa izao ny "compression fangatahana mangarahara": mandefa ny mpanjifa Accept-Encoding: gzip ao amin'ny lohapejy dia mahazo valiny voaporitra GZIP izy ireo raha mihoatra ny 128 KB ny habeny. Ny mpanjifa Go dia manohana ho azy ny famatrarana (mandefa ny lohapejy ilaina), ka ho hitan'izy ireo avy hatrany ny fihenan'ny fifamoivoizana. (Mety ilaina ny fanovana kely amin'ny fiteny hafa.)
  • Lasa azo atao fampitomboana ny HPA manomboka amin'ny/hatramin'ny aotra pods mifototra amin'ny metrika ivelany. Raha miainga amin'ny zavatra/metrika ivelany ianao, dia rehefa tsy miasa ny enta-mavesatra dia azonao atao ny manitsy ho azy amin'ny replika 0 mba hitahiry loharano. Ity endri-javatra ity dia tokony ho ilaina indrindra amin'ny tranga izay angatahan'ny mpiasa ny loharanon-karena GPU, ary ny isan'ny karazana mpiasa tsy miasa dia mihoatra ny isan'ny GPU misy.
  • mpanjifa vaovao - k8s.io/client-go/metadata.Client - ho an'ny fidirana "ankapobeny" amin'ny zavatra. Izy io dia natao mba haka mora ny metadata (izany hoe subsection metadata) avy amin'ny loharanon-karenan'ny kluster ary manaova fanangonam-pako sy fampandehanana quota miaraka amin'izy ireo.
  • Amboary ny Kubernetes azonao atao izao tsy misy lova ("naorina" anaty hazo) mpamatsy rahona (dikan-teny alpha).
  • Ho an'ny utility kubeadm nanampy fahaiza-manao fanandramana (dikan-alpha) hampihatra ny patch manokana mandritra ny fandidiana init, join и upgrade. Mianara bebe kokoa momba ny fampiasana ny saina --experimental-kustomize, jereo ao CAP.
  • Toerana farany vaovao ho an'ny apiserver - readyz, - mamela anao hanondrana vaovao momba ny fahavononany. Manana saina ihany koa ny mpizara API --maximum-startup-sequence-duration, mamela anao hifehy ny fanombohana azy.
  • roa endri-javatra ho an'ny Azure nambara ho stable: fanohanana faritra misy (Faritra misy) ary vondrona cross resource (RG). Ankoatra izany, nanampy i Azure:
  • AWS izao dia manana fanohanana ho an'ny EBS amin'ny Windows sy optimisé EC2 API antso DescribeInstances.
  • Mahaleo tena izao i Kubeadm mifindra monina CoreDNS configuration rehefa manavao ny CoreDNS version.
  • Binary sns amin'ny sary Docker mifanaraka amin'izany hatao World-executable, izay ahafahanao mampandeha ity sary ity tsy mila zo fototra. Ary koa, sary fifindra-monina sns nitsahatra snsd2 version support.
  • В Cluster Autoscaler 1.16.0 nivadika tamin'ny fampiasana distroless ho sary fototra, fanatsarana ny fampisehoana, nampiana mpanome rahona vaovao (DigitalOcean, Magnum, Packet).
  • Fanavaozana amin'ny rindrambaiko ampiasaina/miankina: Mandehana 1.12.9, snsd 3.3.15, CoreDNS 1.6.2.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment