Kif tikkonnettja clusters Kubernetes f'ċentri tad-dejta differenti

Kif tikkonnettja clusters Kubernetes f'ċentri tad-dejta differenti
Merħba fis-serje tagħna ta' Quick Start ta' Kubernetes. Din hija kolonna regolari bl-aktar mistoqsijiet interessanti li nirċievu online u fit-taħriġ tagħna. Tweġibiet esperti ta’ Kubernetes.

L-espert tal-lum huwa Daniel Polenchik (Daniele Polencic). Daniel jaħdem bħala għalliem u żviluppatur ta' softwer fuq Learnk8s.

Jekk trid li l-mistoqsija tiegħek titwieġeb fil-post li jmiss, ikkuntattjana bl-email jew Twitter: @learnk8s.

Tlift karigi preċedenti? Sibhom hawn.

Kif tikkonnettja raggruppamenti ta' Kubernetes f'ċentri tad-dejta differenti?

In breve: Kubefed v2 dalwaqt, u nirrakkomanda wkoll li taqra dwar Trasportatur и proġett multi-cluster-scheduler.

Spiss, l-infrastruttura hija replikata u mqassma f'reġjuni differenti, speċjalment f'ambjenti kkontrollati.

Jekk reġjun wieħed ma jkunx disponibbli, it-traffiku jiġi ridirett lejn ieħor biex jiġu evitati interruzzjonijiet.

B'Kubernetes, tista' tuża strateġija simili u tqassam il-piżijiet tax-xogħol f'reġjuni differenti.

Jista' jkollok raggruppament wieħed jew aktar għal kull tim, reġjun, ambjent, jew taħlita ta' dawn l-elementi.

Il-clusters tiegħek jistgħu jiġu ospitati fi sħab differenti u fuq il-post.

Imma kif tippjana infrastruttura għal firxa ġeografika bħal din?
Għandek bżonn toħloq cluster wieħed kbir għal diversi ambjenti sħab fuq netwerk wieħed?
Jew għandek ħafna gruppi żgħar u ssib mod kif tikkontrollahom u tissinkronizzahom?

Raggruppament wieħed ta' tmexxija

Il-ħolqien ta' raggruppament wieħed fuq netwerk wieħed mhuwiex daqshekk faċli.

Immaġina li għandek inċident, il-konnettività bejn is-segmenti tal-cluster tintilef.

Jekk għandek server kaptan wieħed, nofs ir-riżorsi ma jkunux jistgħu jirċievu kmandi ġodda għax ma jkunux jistgħu jikkuntattjaw lill-kaptan.

U fl-istess ħin għandek tabelli qodma tar-routing (kube-proxy ma tistax tniżżel oħrajn ġodda) u l-ebda pods addizzjonali (kubelet ma jistax jitlob aġġornamenti).

Biex tgħaxxaq, jekk Kubernetes ma jarax node, jimmarkah bħala orfni u jqassam il-miżwed neqsin lin-nodi eżistenti.

Bħala riżultat, għandek id-doppju tal-imżiewed.

Jekk tagħmel server ewlieni wieħed għal kull reġjun, se jkun hemm problemi bl-algoritmu tal-kunsens fid-database etcd. (madwar. ed. — Fil-fatt, id-database etcd mhux bilfors trid tkun tinsab fuq is-servers prinċipali. Jista 'jitħaddem fuq grupp separat ta' servers fl-istess reġjun. Veru, fl-istess ħin jkollna punt ta 'falliment tal-cluster. Imma malajr.)

użi etcd algoritmu taċ-ċattrabiex tinnegozja l-valur qabel tikteb fuq disk.
Jiġifieri, il-maġġoranza tal-istanzi jridu jilħqu kunsens qabel ma l-istat ikun jista’ jinkiteb lil etcd.

Jekk il-latency bejn l-istanzi etcd tiżdied b'mod drammatiku, kif inhu l-każ bi tliet istanzi etcd f'reġjuni differenti, jieħu ħafna żmien biex jinnegozja valur u jiktbu fuq id-diska.
Dan huwa rifless fil-kontrolluri Kubernetes.

Il-maniġer tal-kontrollur jeħtieġ aktar ħin biex jitgħallem dwar il-bidla u jikteb ir-rispons għad-database.

U peress li m'hemmx kontrollur wieħed, iżda diversi, tirriżulta reazzjoni katina u l-cluster kollu jibda jaħdem bil-mod ħafna.

etcd hija tant latency sensittiva li Id-dokumentazzjoni uffiċjali tirrakkomanda li tuża SSDs minflok hard drives regolari.

Bħalissa m'hemmx eżempji tajbin ta' netwerk kbir għal cluster wieħed.

Bażikament, il-komunità tal-iżviluppaturi u l-grupp SIG-cluster qed jippruvaw isibu kif orkestraw clusters bl-istess mod kif Kubernetes orkestra l-kontenituri.

Għażla 1: federazzjoni tal-clusters ma kubefed

Risposta uffiċjali minn SIG-cluster - kubefed2, verżjoni ġdida tal-klijent u l-operatur oriġinali tal-federazzjoni kube.

Għall-ewwel darba, ippruvajna namministraw ġabra ta 'clusters bħala oġġett wieħed bl-użu tal-għodda tal-federazzjoni kube.

Il-bidu kien tajjeb, imma fl-aħħar mill-aħħar il-federazzjoni tal-kube qatt ma saret popolari għax ma appoġġjatx ir-riżorsi kollha.

Huwa appoġġja kunsinni u servizzi federati, iżda mhux StatefulSets, pereżempju.
Ukoll, il-konfigurazzjoni tal-federazzjoni ġiet trażmessa fil-forma ta 'annotazzjonijiet u ma kinitx flessibbli.

Immaġina kif tista' tiddeskrivi l-qsim tar-repliki għal kull cluster f'federazzjoni billi tuża biss annotazzjonijiet.

Kien mess sħiħ.

SIG-cluster għamel ħafna xogħol wara kubefed v1 u ddeċieda li javviċina l-problema minn angolu differenti.

Minflok annotazzjonijiet, iddeċidew li jirrilaxxaw kontrollur li huwa installat fuq clusters. Jista 'jiġi personalizzat bl-użu tad-Definizzjonijiet tar-Riżorsi Custom (CRDs).

Għal kull riżorsa li se tkun parti mill-federazzjoni, għandek definizzjoni CRD personalizzata bi tliet taqsimiet:

  • definizzjoni standard ta' riżorsa, pereżempju skjerament;
  • taqsima placement, fejn tiddefinixxi kif ir-riżorsa se titqassam fil-federazzjoni;
  • taqsima override, fejn għal riżors speċifiku tista' tegħleb il-piż u l-parametri mit-tqegħid.

Hawn hu eżempju ta’ kunsinna magħquda b’sezzjonijiet ta’ tqegħid u ta’ override.

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

Kif tistgħu taraw, il-provvista hija mqassma f'żewġ gruppi: cluster1 и cluster2.

L-ewwel cluster jipprovdi tliet repliki, u t-tieni huwa ssettjat għal 5.

Jekk għandek bżonn aktar kontroll fuq in-numru ta' repliki, kubefed2 jipprovdi oġġett ReplicaSchedulingPreference ġdid fejn ir-repliki jistgħu jiġu ppeżati:

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

L-istruttura tas-CRD u l-API għadhom mhumiex lesti, u għaddej xogħol attiv fir-repożitorju uffiċjali tal-proġett.

Żomm għajnejk fuq kubefed2, imma ftakar li għadu mhux adattat għall-produzzjoni.

Sir af aktar dwar kubefed2 minn artiklu uffiċjali dwar kubefed2 fil-blog dwar Kubernetes u in repożitorju uffiċjali tal-proġett kubefed.

Għażla 2: tgħaqqad clusters fl-istil Booking.com

L-iżviluppaturi ta' Booking.com ma ħadmux fuq kubefed v2, iżda ħarġu bi Shipper - operatur għall-kunsinna fuq diversi clusters, f'diversi reġjuni u f'diversi sħab.

Trasportatur xi ftit simili għal kubefed2.

Iż-żewġ għodod jippermettulek tippersonalizza l-istrateġija tal-iskjerament multi-cluster tiegħek (liema clusters jintużaw u kemm għandhom repliki).

Imma L-għan tal-shipper huwa li jitnaqqas ir-riskju ta 'żbalji waqt il-kunsinna.

F'Shipper, tista' tiddefinixxi serje ta' passi li jiddeskrivu d-diviżjoni tar-repliki bejn l-iskjerament preċedenti u attwali u l-volum tat-traffiku deħlin.

Meta timbotta riżors għal raggruppament, il-kontrollur tal-Baħħara jwettaq b'mod inkrementali dik il-bidla fil-clusters kollha magħquda.

Ukoll, Shipper huwa limitat ħafna.

Per eżempju, jaċċetta charts tat-tmun bħala input u ma jappoġġjax ir-riżorsi tal-vanilla.
F'termini ġenerali, Shipper jaħdem bħal dan.

Minflok kunsinna standard, trid toħloq riżors ta' applikazzjoni li jinkludi chart 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

Shipper huwa għażla tajba għall-ġestjoni ta 'raggruppamenti multipli, iżda r-relazzjoni mill-qrib tiegħu ma' Helm tfixkel biss.

X'jiġri jekk ilkoll naqilbu minn Helm għal Ippersonalizza jew kaptan?

Sir af aktar dwar Shipper u l-filosofija tiegħu fuq din l-istqarrija għall-istampa uffiċjali.

Jekk trid tħaffer fil-kodiċi, ras għar-repożitorju uffiċjali tal-proġett.

Għażla 3: għaqda tal-cluster "maġika".

Kubefed v2 u Shipper jaħdmu mal-federazzjoni tal-clusters, u jipprovdu riżorsi ġodda lill-clusters permezz tad-definizzjoni tar-riżorsi tad-dwana.

Imma x'jiġri jekk ma tridx tikteb mill-ġdid il-kunsinni kollha, StatefulSets, DaemonSets, eċċ biex jingħaqdu?

Kif tinkludi cluster eżistenti f'federazzjoni mingħajr ma tbiddel YAML?

multi-cluster-scheduler huwa proġett Admirality, li jittratta l-iskedar ta' xogħolijiet fuq clusters.

Iżda minflok ma toħroġ b'mod ġdid biex jinteraġixxu mal-cluster u wrap riżorsi f'definizzjonijiet personalizzati, multi-cluster-scheduler huwa inkorporat fiċ-ċiklu tal-ħajja standard ta 'Kubernetes u jinterċetta s-sejħiet kollha li joħolqu l-imżiewed.

Kull pod maħluq huwa immedjatament sostitwit b'manikin.

użi multi-cluster-scheduler Webhooks għall-modifika tal-aċċessbiex tinterċetta s-sejħa u toħloq pod finta idle.

Il-pod oriġinali jgħaddi minn ċiklu ta’ ppjanar ieħor fejn, wara li ssir votazzjoni tal-federazzjoni kollha, tittieħed deċiżjoni ta’ tqegħid.

Fl-aħħarnett, il-pod titwassal lill-cluster fil-mira.

Bħala riżultat, għandek pod żejjed li ma jagħmel xejn, biss jieħu spazju.

Il-vantaġġ huwa li ma kellekx għalfejn tikteb riżorsi ġodda biex tgħaqqad il-provvisti.

Kull riżorsa li toħloq pod hija awtomatikament lesta biex tiġi magħquda.

Dan huwa interessanti, għax f'daqqa waħda għandek provvisti mqassma f'diversi reġjuni, u lanqas biss ndunajt. Madankollu, dan huwa pjuttost riskjuż, għaliex kollox hawn jistrieħ fuq il-maġija.

Iżda filwaqt li Speditur qed jipprova l-aktar itaffu l-impatt tal-kunsinni, multi-cluster-scheduler jimmaniġġja kompiti aktar ġenerali u forsi huwa adattat aħjar għal impjiegi ta 'lott.

M'għandux mekkaniżmu avvanzat ta 'kunsinna gradwali.

Aktar dwar multi-cluster-scheduler tista 'tinstab fuq paġna tar-repożitorju uffiċjali.

Jekk trid taqra dwar multi-cluster-scheduler fl-azzjoni, Admiralty għandu każ ta 'użu interessanti ma' Argo — flussi tax-xogħol, avvenimenti, CI u CD Kubernetes.

Għodod u soluzzjonijiet oħra

Il-konnessjoni u l-ġestjoni ta' clusters multipli hija kompitu kumpless, u m'hemm l-ebda soluzzjoni universali.

Jekk tixtieq tesplora aktar dan is-suġġett, hawn xi riżorsi:

Dak kollu għal-lum

Grazzi talli qrajt sal-aħħar!

Jekk taf kif tikkonnettja gruppi multipli b'mod aktar effiċjenti, Għidilna.

Aħna se nżidu l-metodu tiegħek mal-links.

Grazzi speċjali lil Chris Nesbitt-Smith (Chris Nesbitt-Smith) u Vincent de Sme (Vincent De Smet) (inġinier tal-affidabbiltà fi swatmobile.io) talli taqra l-artiklu u taqsam informazzjoni utli dwar kif taħdem il-federazzjoni.

Sors: www.habr.com

Żid kumment