Sut i gysylltu clystyrau Kubernetes mewn gwahanol ganolfannau data

Sut i gysylltu clystyrau Kubernetes mewn gwahanol ganolfannau data
Croeso i'n cyfres Kubernetes Quick Start. Mae hon yn golofn reolaidd gyda'r cwestiynau mwyaf diddorol rydyn ni'n eu derbyn ar-lein ac yn ein sesiynau hyfforddi. Atebion arbenigol Kubernetes.

Yr arbenigwr heddiw yw Daniel Polenchik (Daniele Polencic). Mae Daniel yn gweithio fel hyfforddwr a datblygwr meddalwedd yn Learnk8s.

Os hoffech ateb eich cwestiwn yn y post nesaf, cysylltwch â ni trwy e-bost neu Trydar: @dysgu8s.

Wedi colli postiadau blaenorol? Dewch o hyd iddynt yma.

Sut i gysylltu clystyrau Kubernetes mewn gwahanol ganolfannau data?

Yn fyr: Kubefed v2 yn dod yn fuan, ac rwyf hefyd yn argymell darllen am Llongwr и prosiect aml-glwstwr-amserlen.

Yn aml iawn, mae seilwaith yn cael ei ailadrodd a'i ddosbarthu ar draws gwahanol ranbarthau, yn enwedig mewn amgylcheddau rheoledig.

Os nad yw un rhanbarth ar gael, caiff traffig ei ailgyfeirio i un arall er mwyn osgoi ymyrraeth.

Gyda Kubernetes, gallwch ddefnyddio strategaeth debyg a dosbarthu llwythi gwaith ar draws gwahanol ranbarthau.

Gallwch gael un neu fwy o glystyrau fesul tîm, rhanbarth, amgylchedd, neu gyfuniad o'r elfennau hyn.

Gellir cynnal eich clystyrau mewn gwahanol gymylau ac ar y safle.

Ond sut ydych chi'n cynllunio seilwaith ar gyfer lledaeniad daearyddol o'r fath?
A oes angen i chi greu un clwstwr mawr ar gyfer sawl amgylchedd cwmwl dros un rhwydwaith?
Neu a oes gennych lawer o glystyrau bach a dod o hyd i ffordd i'w rheoli a'u cydamseru?

Un clwstwr arweinyddiaeth

Nid yw mor hawdd creu un clwstwr dros un rhwydwaith.

Dychmygwch eich bod yn cael damwain, mae cysylltedd rhwng segmentau clwstwr yn cael ei golli.

Os oes gennych un gweinydd meistr, ni fydd hanner yr adnoddau yn gallu derbyn gorchmynion newydd oherwydd ni fyddant yn gallu cysylltu â'r meistr.

Ac ar yr un pryd mae gennych chi hen fyrddau llwybro (kube-proxy methu lawrlwytho rhai newydd) a dim codennau ychwanegol (ni all kubelet ofyn am ddiweddariadau).

I wneud pethau'n waeth, os nad yw Kubernetes yn gweld nod, mae'n ei nodi'n amddifad ac yn dosbarthu'r codennau coll i nodau presennol.

O ganlyniad, mae gennych ddwywaith cymaint o godennau.

Os gwnewch un prif weinydd ar gyfer pob rhanbarth, bydd problemau gyda'r algorithm consensws yn y gronfa ddata ac ati. (tua. gol. — Mewn gwirionedd, nid oes rhaid lleoli'r gronfa ddata ac ati o reidrwydd ar y prif weinyddion. Gellir ei redeg ar grŵp ar wahân o weinyddion yn yr un rhanbarth. Gwir, ar yr un pryd yn cael pwynt o fethiant y clwstwr. Ond yn gyflym.)

defnyddiau ac ati algorithm raffti drafod y gwerth cyn ei ysgrifennu i ddisg.
Hynny yw, rhaid i fwyafrif o achosion ddod i gonsensws cyn y gellir ysgrifennu at y wladwriaeth ac ati.

Os yw'r hwyrni rhwng achosion ac ati yn cynyddu'n ddramatig, fel sy'n wir am dri achos ac ati mewn gwahanol ranbarthau, mae'n cymryd amser hir i drafod gwerth a'i ysgrifennu ar ddisg.
Adlewyrchir hyn yn rheolwyr Kubernetes.

Mae angen mwy o amser ar y rheolwr rheoli i ddysgu am y newid ac ysgrifennu'r ymateb i'r gronfa ddata.

A chan nad oes un rheolydd, ond sawl un, mae adwaith cadwynol yn arwain ac mae'r clwstwr cyfan yn dechrau gweithio'n araf iawn.

ac ati mor hwyrni sensitif hynny Mae'r ddogfennaeth swyddogol yn argymell defnyddio SSDs yn lle gyriannau caled rheolaidd.

Ar hyn o bryd nid oes unrhyw enghreifftiau da o rwydwaith mawr ar gyfer un clwstwr.

Yn y bôn, mae'r gymuned ddatblygwyr a'r grŵp clwstwr SIG yn ceisio darganfod sut i drefnu clystyrau yn yr un modd y mae Kubernetes yn trefnu cynwysyddion.

Opsiwn 1: ffedereiddio clwstwr gyda kubefed

Ymateb swyddogol gan glwstwr SIG - kubefed2, fersiwn newydd o'r cleient a gweithredwr ffederasiwn kube gwreiddiol.

Am y tro cyntaf, fe wnaethom geisio rheoli casgliad o glystyrau fel un gwrthrych gan ddefnyddio offeryn ffederasiwn kube.

Roedd y cychwyn yn dda, ond yn y diwedd ni ddaeth ffederasiwn ciwb yn boblogaidd oherwydd nid oedd yn cefnogi'r holl adnoddau.

Roedd yn cefnogi danfoniadau a gwasanaethau ffederal, ond nid StatefulSets, er enghraifft.
Hefyd, trosglwyddwyd cyfluniad y ffederasiwn ar ffurf anodiadau ac nid oedd yn hyblyg.

Dychmygwch sut y gallech chi ddisgrifio'r atgynhyrchiad o raniad ar gyfer pob clwstwr mewn ffederasiwn gan ddefnyddio anodiadau yn unig.

Roedd yn llanast llwyr.

Gwnaeth SIG-cluster lawer o waith ar ôl kubefed v1 a phenderfynu mynd at y broblem o ongl wahanol.

Yn lle anodiadau, fe benderfynon nhw ryddhau rheolydd sydd wedi'i osod ar glystyrau. Gellir ei addasu gan ddefnyddio Diffiniadau Adnoddau Personol (CRDs).

Ar gyfer pob adnodd a fydd yn rhan o'r ffederasiwn, mae gennych ddiffiniad CRD wedi'i deilwra gyda thair adran:

  • diffiniad safonol o adnodd, er enghraifft defnydd;
  • adran placement, lle rydych yn diffinio sut y caiff yr adnodd ei ddosbarthu yn y ffederasiwn;
  • adran override, lle ar gyfer adnodd penodol gallwch ddiystyru'r pwysau a'r paramedrau o leoliad.

Dyma enghraifft o gyflwyniad cyfun gydag adrannau lleoliad a diystyru.

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

Fel y gwelwch, mae'r cyflenwad wedi'i ddosbarthu ar draws dau glwstwr: cluster1 и cluster2.

Mae'r clwstwr cyntaf yn cyflenwi tri atgynhyrchiad, a'r ail wedi'i osod i 5.

Os oes angen mwy o reolaeth arnoch dros nifer y copïau, mae kubefed2 yn darparu gwrthrych ReplicaSchedulingPreference newydd lle gellir pwysoli atgynyrchiadau:

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

Nid yw'r strwythur CRD a'r API yn hollol barod eto, ac mae gwaith gweithredol ar y gweill yn ystorfa swyddogol y prosiect.

Cadwch lygad ar kubefed2, ond cofiwch nad yw'n addas ar gyfer cynhyrchu eto.

Dysgwch fwy am kubefed2 oddi wrth erthygl swyddogol am kubefed2 yn y blog am Kubernetes ac yn storfa swyddogol y prosiect kubefed.

Opsiwn 2: cyfuno clystyrau yn arddull Booking.com

Nid oedd datblygwyr Booking.com yn gweithio ar kubefed v2, ond fe wnaethant lunio Shipper - gweithredwr i'w ddosbarthu ar sawl clwstwr, mewn sawl rhanbarth ac mewn sawl cwmwl.

Llongwr braidd yn debyg i kubefed2.

Mae'r ddau offeryn yn caniatáu ichi addasu eich strategaeth defnyddio aml-glwstwr (pa glystyrau a ddefnyddir a faint o atgynhyrchiadau sydd ganddynt).

Ond Nod y cludwr yw lleihau'r risg o gamgymeriadau wrth ddosbarthu.

Yn Shipper, gallwch ddiffinio cyfres o gamau sy'n disgrifio'r rhaniad o gopïau rhwng y defnydd blaenorol a chyfredol a maint y traffig sy'n dod i mewn.

Pan fyddwch chi'n gwthio adnodd i glwstwr, mae'r rheolwr Shipper yn cyflwyno'r newid hwnnw'n raddol ar draws yr holl glystyrau cysylltiedig.

Hefyd, mae Shipper yn gyfyngedig iawn.

Er enghraifft, mae'n derbyn siartiau helm fel mewnbwn ac nid yw'n cefnogi adnoddau fanila.
Yn gyffredinol, mae Shipper yn gweithio fel hyn.

Yn lle danfoniad safonol, mae angen i chi greu adnodd cais sy'n cynnwys siart Helm:

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

Mae shipper yn opsiwn da ar gyfer rheoli clystyrau lluosog, ond dim ond yn y ffordd y mae ei berthynas agos â Helm yn rhwystr.

Beth os ydym i gyd yn newid o Helm i addasu neu capten?

Dysgwch fwy am Shipper a'i athroniaeth yn y datganiad swyddogol hwn i'r wasg.

Os ydych chi am gloddio i mewn i'r cod, ewch i ystorfa swyddogol y prosiect.

Opsiwn 3: uno clwstwr “hud”.

Mae Kubefed v2 a Shipper yn gweithio gyda ffederasiwn clwstwr, gan ddarparu adnoddau newydd i glystyrau trwy ddiffinio adnoddau wedi'u teilwra.

Ond beth os nad ydych am ailysgrifennu'r holl ddanfoniadau, StatefulSets, DaemonSets, ac ati i uno?

Sut i gynnwys clwstwr presennol mewn ffederasiwn heb newid YAML?

Mae aml-glwstwr-scheduler yn brosiect Morlys, sy'n ymdrin ag amserlennu llwythi gwaith ar glystyrau.

Ond yn lle meddwl am ffordd newydd o ryngweithio â'r clwstwr a lapio adnoddau mewn diffiniadau arferol, mae amserlen aml-glwstwr wedi'i hymgorffori yng nghylch bywyd safonol Kubernetes ac yn rhyng-gipio pob galwad sy'n creu codennau.

Mae pob pod a grëwyd yn cael ei ddisodli ar unwaith gyda dymi.

defnyddiau aml-glwstwr-amserlen bachau gwe ar gyfer addasu mynediadi ryng-gipio'r alwad a chreu pod dymi segur.

Mae'r pod cychwynnol yn mynd trwy gylch cynllunio arall lle, ar ôl pleidleisio'r ffederasiwn cyfan, gwneir penderfyniad lleoli.

Yn olaf, mae'r pod yn cael ei ddosbarthu i'r clwstwr targed.

O ganlyniad, mae gennych god ychwanegol nad yw'n gwneud dim, dim ond yn cymryd lle.

Y fantais yw nad oedd yn rhaid i chi ysgrifennu adnoddau newydd i gyfuno cyflenwadau.

Mae pob adnodd sy'n creu pod yn barod i'w uno'n awtomatig.

Mae hyn yn ddiddorol, oherwydd yn sydyn mae gennych gyflenwadau wedi'u dosbarthu ar draws sawl rhanbarth, ac ni wnaethoch chi hyd yn oed sylwi. Fodd bynnag, mae hyn yn eithaf peryglus, oherwydd mae popeth yma yn dibynnu ar hud.

Ond er bod Shipper yn ceisio lliniaru effaith danfoniadau yn bennaf, mae amserlen aml-glwstwr yn delio â thasgau mwy cyffredinol ac efallai ei fod yn fwy addas ar gyfer swyddi swp.

Nid oes ganddo fecanwaith cyflawni graddol uwch.

Ceir rhagor o wybodaeth am amserlennu aml-glwstwr yn tudalen ystorfa swyddogol.

Os ydych chi eisiau darllen am amserlen aml-glwstwr ar waith, mae gan y Morlys achos defnydd diddorol gydag Argo — llifoedd gwaith, digwyddiadau, CI a CD Kubernetes.

Offer ac atebion eraill

Mae cysylltu a rheoli clystyrau lluosog yn dasg gymhleth, ac nid oes ateb cyffredinol.

Os hoffech chi archwilio'r pwnc hwn ymhellach, dyma rai adnoddau:

Dyna i gyd am heddiw

Diolch am ddarllen hyd y diwedd!

Os ydych chi'n gwybod sut i gysylltu clystyrau lluosog yn fwy effeithlon, dywedwch wrthym.

Byddwn yn ychwanegu eich dull at y dolenni.

Diolch arbennig i Chris Nesbitt-Smith (Chris Nesbitt-Smith) a Vincent de Sme (Vincent De Smet) (peiriannydd dibynadwyedd yn swatmobile.io) am ddarllen yr erthygl a rhannu gwybodaeth ddefnyddiol am sut mae'r ffederasiwn yn gweithio.

Ffynhonnell: hab.com

Ychwanegu sylw