Indlela yokudibanisa amaqela e-Kubernetes kumaziko ahlukeneyo edatha

Indlela yokudibanisa amaqela e-Kubernetes kumaziko ahlukeneyo edatha
Wamkelekile kuthotho lwethu lweKubernetes Quick Start. Le yikholamu eqhelekileyo eneyona mibuzo inomdla kakhulu esiyifumana kwi-Intanethi nakuqeqesho lwethu. Iingcali zeKubernetes ziphendula.

Ingcaphephe yanamhlanje nguDaniel Polenchik (UDaniel Polencic). UDaniel usebenza njengomhlohli kunye nomphuhlisi wesoftware kwi Fundak8s.

Ukuba ufuna ukuba umbuzo wakho uphendulwe kwisithuba esilandelayo, qhagamshelana nathi nge-imeyile okanye ngaphakathi Twitter: @learnk8s.

Uziphose izithuba zangaphambili? Zifumane apha.

Indlela yokudibanisa amaqela e-Kubernetes kumaziko ahlukeneyo edatha?

Ngokufutshane: IKubefed v2 iyeza kungekudala, kwaye ndikwacebisa ukufunda malunga Umthumeli и Iprojekthi yokucwangcisa amaqela amaninzi.

Rhoqo, iziseko zophuhliso ziphindaphindwa kwaye zisasazwe kwiingingqi ezahlukeneyo, ngakumbi kwiindawo ezilawulwayo.

Ukuba omnye ummandla awufumaneki, itrafikhi ithunyelwa kwenye ukuthintela ukuphazamiseka.

NgeKubernetes, ungasebenzisa isicwangciso esifanayo kwaye usasaze imithwalo yemisebenzi kwimimandla eyahlukeneyo.

Unokuba neqela elinye okanye ngaphezulu kwiqela ngalinye, ummandla, okusingqongileyo, okanye indibaniselwano yezi zinto.

Amaqela akho angabanjwa kumafu ahlukeneyo nakwindawo.

Kodwa uzicwangcisa njani iziseko zophuhliso losasazo lwejografi?
Ngaba kufuneka wenze iqoqo elikhulu leemeko-bume ezininzi zamafu ngaphezulu kwenethiwekhi enye?
Okanye unamaqela amaninzi amancinci kwaye ufumane indlela yokulawula kunye nokulungelelanisa?

Iqela lobunkokeli elinye

Ukudala iqela elinye phezu kwenethiwekhi enye akukho lula.

Khawufane ucinge ukuba ufumene ingozi, unxibelelwano phakathi kwamacandelo eqela lulahlekile.

Ukuba unomncedisi omnye oyintloko, isiqingatha semithombo asiyi kukwazi ukufumana imiyalelo emitsha kuba abayi kukwazi ukuqhagamshelana nenkosi.

Kwaye kwangaxeshanye unetafile endala yokukhokela (kube-proxy ayikwazi ukukhuphela ezintsha) kwaye akukho pods ezongezelelweyo (kubelet ayikwazi ukucela uhlaziyo).

Ukwenza izinto zibe zibi nakakhulu, ukuba i-Kubernetes ayiboni i-node, iphawula njengenkedama kwaye isasaze iipod ezilahlekileyo kwiindawo ezikhoyo.

Ngenxa yoko, une-pods ephindwe kabini.

Ukuba wenza i-master server enye kummandla ngamnye, kuya kubakho iingxaki kunye ne-algorithm yokuvumelana kwi-database etcd. (malunga. ed. - Enyanisweni, i-database ye- etcd akunyanzelekanga ukuba ibekwe kwiiseva eziphambili. Inokuqhutywa kwiqela elahlukileyo labancedisi abakummandla omnye. Enyanisweni, ngexesha elifanayo ukufumana inqaku lokungaphumeleli kweqela. Kodwa ngokukhawuleza.)

etcd usebenzisa raft algorithmukuthethana ngexabiso phambi kokuyibhala kwidiski.
Oko kukuthi, uninzi lwamaxesha kufuneka lufikelele kwimvumelwano phambi kokuba urhulumente abhalelwe njl.njl.

Ukuba i-latency phakathi kweemeko ze- etcd inyuka kakhulu, njengoko kunjalo kwiimeko ezintathu ze- etcd kwimimandla eyahlukeneyo, kuthatha ixesha elide ukuthetha-thethana ngexabiso kwaye ulibhale kwidiski.
Oku kubonakala kubalawuli beKubernetes.

Umphathi womlawuli ufuna ixesha elingakumbi lokufunda malunga notshintsho kwaye abhale impendulo kwiziko ledatha.

Kwaye kuba akukho mlawuli omnye, kodwa uninzi, iziphumo zokusabela kwetsheyini kwaye iqela lonke liqala ukusebenza ngokucothayo.

etcd inovakalelo lokubambezeleka kangangokuba Amaxwebhu asemthethweni acebisa ukuba kusetyenziswe ii-SSD endaweni yee-hard drives eziqhelekileyo.

Okwangoku akukho mizekelo ilungileyo yothungelwano olukhulu lweqela elinye.

Ngokusisiseko, uluntu lwabaphuhlisi kunye neqela le-SIG-iqela lizama ukufumanisa indlela yokudibanisa amaqela ngendlela efanayo i-Kubernetes orchestrates containers.

Ukhetho loku-1: umanyano lweqela kunye ne-kubefed

Impendulo esemthethweni evela kwi-SIG-cluster - kubefed2, uguqulelo olutsha lwentsusa ye-kubefederation umxhasi kunye nomsebenzisi.

Okokuqala, sizame ukulawula ingqokelela yamaqela njengento enye sisebenzisa isixhobo se-kube federation.

Isiqalo sasilungile, kodwa ekugqibeleni i-kubefederation ayizange idume kuba ayizange ixhase zonke izixhobo.

Ixhasa ukuhanjiswa kunye neenkonzo ezimanyeneyo, kodwa hayi iStatefulSets, umzekelo.
Kwakhona, ulungelelwaniso lwe-federation lwahanjiswa ngendlela ye-annotations kwaye aluzange lube bhetyebhetye.

Khawufane ucinge ukuba ungasichaza njani isahlulelo somfanekiso weqela ngalinye kumanyano usebenzisa amanqakwana nje.

Yayibubugxwayiba obupheleleyo.

Iqela le-SIG lenze umsebenzi omninzi emva kwe-kubefed v1 kwaye yagqiba ekubeni ijonge ingxaki ikwi-engile eyahlukileyo.

Esikhundleni sezichasiselo, bagqiba ekubeni bakhulule umlawuli ofakwe kumaqela. Ingenziwa ngokwezifiso usebenzisa iiNkcazo zeSibonelelo seSiko (CRDs).

Kwisixhobo ngasinye esiya kuba yinxalenye yomanyano, unenkcazo yeCRD yesiko enamacandelo amathathu:

  • inkcazo esemgangathweni yomthombo, umzekelo ukusasazwa;
  • icandelo placement, apho uchaza ukuba isibonelelo siya kusasazwa njani kumfelandawonye;
  • icandelo override, apho kwisixhobo esithile ungabhala ngaphezulu ubunzima kunye neeparameters ukusuka ekubekweni.

Nanku umzekelo wokuhanjiswa okudityanisiweyo kunye namacandelo okubekwa kunye nokugqithisa.

apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - image: nginx
              name: nginx
  placement:
    clusterNames:
      - cluster2
      - cluster1
  overrides:
    - clusterName: cluster2
      clusterOverrides:
        - path: spec.replicas
          value: 5

Njengoko ubona, unikezelo lusasazwa kumaqela amabini: cluster1 и cluster2.

Iqela lokuqala libonelela ngeekopi ezintathu, kwaye elesibini limiselwe ku-5.

Ukuba ufuna ulawulo olungaphezulu kwinani le replicas, kubefed2 ibonelela ngento entsha yeReplicaSchedulingPreference apho iikopi zinokulinganiswa:

apiVersion: scheduling.federation.k8s.io/v1alpha1
kind: ReplicaSchedulingPreference
metadata:
  name: test-deployment
  namespace: test-ns
spec:
  targetKind: FederatedDeployment
  totalReplicas: 9
  clusters:
    A:
      weight: 1
    B:
      weight: 2

Ubume beCRD kunye ne-API azikalungeli ncam, kwaye umsebenzi osebenzayo uyaqhubeka kwindawo yokugcina iprojekthi esemthethweni.

Gcina iliso kwi-kubefed2, kodwa khumbula ukuba ayikalungeli ukuveliswa.

Funda ngakumbi malunga kubefed2 ukusuka inqaku elisemthethweni malunga ne-befed2 kwibhlog malunga neKubernetes kunye ne indawo yokugcina esemthethweni yeprojekthi ye-kubefed.

Inketho yesi-2: ukudibanisa amaqela kwisitayile seBooking.com

Abaphuhlisi beBooking.com khange basebenze kwi-kubefed v2, kodwa beza noShipper-umqhubi wokuhanjiswa kumaqela aliqela, kwimimandla emininzi kunye namafu aliqela.

Umthumeli iyafana noko kubefed2.

Zombini izixhobo zikuvumela ukuba wenze ngokwezifiso isicwangciso sakho sokusasazwa kwamaqela amaninzi (aphi amaqela asetyenziswayo kunye nokuba zingaphi iireplicas abanazo).

kodwa Injongo yoMthumeli kukunciphisa umngcipheko weempazamo ngexesha lokuhambisa.

Kwi-Shipper, unokuchaza uluhlu lwamanyathelo achaza ulwahlulo lwee-replicas phakathi kwangaphambili kunye nokuthunyelwa kwangoku kunye nomthamo wetrafikhi engenayo.

Xa utyhala isixhobo ukuya kwiqela, umlawuli weShipper uqhubela phambili olo tshintsho kuwo onke amaqela adibeneyo.

Kwakhona, uShipper ulinganiselwe kakhulu.

Ngokomzekelo, iyazamkela iitshathi zehelm njengegalelo kwaye ayixhasi izixhobo ze-vanilla.
Ngokubanzi, uShipper usebenza ngolu hlobo.

Endaweni yokuhanjiswa okusemgangathweni, kufuneka udale isixhobo sokufaka isicelo esibandakanya itshathi yeHelm:

apiVersion: shipper.booking.com/v1alpha1
kind: Application
metadata:
  name: super-server
spec:
  revisionHistoryLimit: 3
  template:
    chart:
      name: nginx
      repoUrl: https://storage.googleapis.com/shipper-demo
      version: 0.0.1
    clusterRequirements:
      regions:
        - name: local
    strategy:
      steps:
        - capacity:
            contender: 1
            incumbent: 100
          name: staging
          traffic:
            contender: 0
            incumbent: 100
        - capacity:
            contender: 100
            incumbent: 0
          name: full on
          traffic:
            contender: 100
            incumbent: 0
    values:
      replicaCount: 3

UShipper lukhetho olulungileyo lokulawula amaqela amaninzi, kodwa ubudlelwane bayo obusondeleyo kunye neHelm bungena kuphela endleleni.

Kuthekani ukuba sonke sitshintshela kwi-Helm ukuya yenza ngokwezifiso okanye umphathi?

Fumana okungakumbi malunga neShipper kunye nefilosofi yayo esi saziso sisemthethweni.

Ukuba ufuna ukumba kwikhowudi, yiya kwindawo yokugcina iprojekthi esemthethweni.

Ukhetho lwesi-3: “umlingo” ukudityaniswa kweqela

I-Kubefed v2 kunye noShipper basebenza kunye ne-cluster federation, ukubonelela ngezixhobo ezitsha kumaqela ngokusebenzisa inkcazo yemithombo yesiko.

Kodwa kuthekani ukuba awufuni ukubhala konke ukuhanjiswa, iStatefulSets, iDaemonSets, njl.njl. ukudibanisa?

Ulibandakanya njani iqela elisele likhona kumdibaniso ngaphandle kokutshintsha i-YAML?

I-multi-cluster-scheduler yiprojekthi ye-Admirality, ejongene nokucwangcisa umthwalo wemisebenzi kumaqela.

Kodwa endaweni yokuza nendlela entsha yokusebenzisana kunye neqela kunye nokugubungela izixhobo kwiinkcazo eziqhelekileyo, i-multi-cluster-scheduler ifakwe kwi-standard Kubernetes lifecycle kwaye ibamba zonke iifowuni ezenza iipods.

I-pod nganye eyenziweyo ifakwe ngokukhawuleza endaweni ye-dummy.

usebenziso lweqela-luluhlu oluninzi iiwebhooks zokufikelela ukulungiswaukuthintela umnxeba kwaye wenze idummy pod engasebenziyo.

Ipod yokuqala ihamba ngomnye umjikelo wokucwangcisa apho, emva kokuvota i-federation yonke, isigqibo sokubeka senziwe.

Ekugqibeleni, i-pod inikezelwa kwiqela elijoliswe kuyo.

Ngenxa yoko, unepod eyongezelelweyo engenzi nto, ithatha nje indawo.

Inzuzo kukuba akuzange ubhale izixhobo ezitsha zokudibanisa izixhobo.

Isixhobo ngasinye esenza i-pod silungele ngokuzenzekelayo ukudityaniswa.

Oku kunomdla, kuba ngequbuliso unempahla esasazwe kwiingingqi ezininzi, kwaye awukhange uqaphele. Nangona kunjalo, oku kuyingozi kakhulu, kuba yonke into apha ixhomekeke kumlingo.

Kodwa ngelixa uShipper ezama ukunciphisa kakhulu impembelelo yokuhanjiswa, i-multi-cluster-scheduler iphatha imisebenzi ngokubanzi kwaye mhlawumbi iyilungele imisebenzi yebhetshi.

Ayinayo inkqubo yonikezelo oluhamba kancinci kancinci.

Okungakumbi malunga ne-multi-cluster-scheduler inokufumaneka apha iphepha elisemthethweni lokugcina.

Ukuba ufuna ukufunda malunga neqela le-multi-cluster-scheduler esebenzayo, i-Admiralty inakho Imeko yokusetyenziswa enomdla kunye neArgo - ukuhamba komsebenzi, imicimbi, iCI kunye neCD Kubernetes.

Ezinye izixhobo kunye nezisombululo

Ukudibanisa kunye nokulawula amaqela amaninzi ngumsebenzi onzima, kwaye akukho sisombululo sendalo yonke.

Ukuba ungathanda ukuphonononga esi sihloko ngakumbi, nazi ezinye izibonelelo:

Kuphelele apho namhlanje

Enkosi ngokufunda kude kube sekupheleni!

Ukuba uyayazi indlela yokudibanisa amaqela amaninzi ngokufanelekileyo, Sixelele.

Siza kongeza indlela yakho kwiikhonkco.

Umbulelo okhethekileyo kuChris Nesbitt-Smith (UChris Nesbitt-Smithkunye noVincent de Sme (UVincent De Smet) (injineli ethembekileyo kwi swatmobile.io) ukufunda inqaku kunye nokwabelana ngolwazi oluluncedo malunga nendlela umanyano olusebenza ngayo.

umthombo: www.habr.com

Yongeza izimvo