Ki jan yo konekte gwoup Kubernetes nan diferan sant done

Ki jan yo konekte gwoup Kubernetes nan diferan sant done
Byenveni nan seri Kubernetes Quick Start nou an. Sa a se yon kolòn regilye ak kesyon ki pi enteresan nou resevwa sou Entènèt ak nan fòmasyon nou yo. Repons ekspè Kubernetes.

Ekspè jodi a se Daniel Polenchik (Daniele Polencic). Daniel travay kòm yon enstriktè ak pwomotè lojisyèl nan Learnk8s.

Si ou vle reponn kesyon ou a nan pwochen pòs la, kontakte nou pa imel oswa Twitter: @learnk8s.

Te rate pòs anvan yo? Jwenn yo isit la.

Ki jan yo konekte gwoup Kubernetes nan diferan sant done?

Yon ti tan: Kubefed v2 ap vini byento, epi mwen rekòmande tou li sou Ekspeditè и pwojè milti-cluster-scheduler.

Byen souvan, enfrastrikti yo repwodui epi distribye atravè diferan rejyon, espesyalman nan anviwònman kontwole.

Si yon rejyon pa disponib, trafik yo redireksyone nan yon lòt pou evite entèripsyon.

Avèk Kubernetes, ou ka itilize yon estrateji menm jan an epi distribye chaj travay nan diferan rejyon yo.

Ou ka gen youn oswa plis gwoup pou chak ekip, rejyon, anviwònman, oswa yon konbinezon de eleman sa yo.

Gwoup ou yo ka òganize nan nyaj diferan ak sou lokal.

Men, ki jan ou planifye enfrastrikti pou gaye jeyografik sa yo?
Èske ou bezwen kreye yon sèl gwo gwoup pou plizyè anviwònman nwaj sou yon sèl rezo?
Oswa gen anpil ti grap epi jwenn yon fason pou kontwole ak senkronize yo?

Yon gwoup lidèchip

Kreye yon gwoup sou yon sèl rezo pa tèlman fasil.

Imajine ou gen yon aksidan, koneksyon ant segman gwoup yo pèdi.

Si ou gen yon sèl sèvè mèt, mwatye nan resous yo pa pral kapab resevwa kòmandman nouvo paske yo pa yo pral kapab kontakte mèt la.

Epi an menm tan ou gen ansyen tab routage (kube-proxy pa ka telechaje nouvo gous) epi pa gen okenn gous adisyonèl (kubelet pa ka mande mizajou).

Pou vin pi mal, si Kubernetes pa wè yon ne, li make li kòm òfelen epi distribye gous ki manke yo nan nœuds ki egziste deja.

Kòm yon rezilta, ou gen de fwa plis gous.

Si ou fè yon sèl sèvè mèt pou chak rejyon, pral gen pwoblèm ak algorithm konsansis nan baz done etcd la. (approx. ed. — An reyalite, baz done etcd la pa nesesèman dwe lokalize sou serveurs mèt yo. Li ka kouri sou yon gwoup separe de serveurs nan menm rejyon an. Vrè, an menm tan an ap resevwa yon pwen nan echèk nan gwoup la. Men byen vit.)

etcd itilize algorithm kannòtpou negosye valè a anvan ou ekri li sou disk.
Sa vle di, yon majorite nan ka yo dwe rive nan konsansis anvan yo ka ekri leta bay etcd.

Si latansi ant egzanp etcd ogmante dramatikman, menm jan ak twa egzanp etcd nan diferan rejyon, li pran anpil tan pou negosye yon valè epi ekri li sou disk.
Sa a reflete nan kontwolè Kubernetes.

Manadjè kontwolè a bezwen plis tan pou aprann sou chanjman an epi ekri repons nan baz done a.

Epi kòm pa gen yon sèl kontwolè, men plizyè, rezilta yon reyaksyon chèn ak tout gwoup la kòmanse travay trè dousman.

etcd se konsa latansi sansib sa Dokiman ofisyèl yo rekòmande pou itilize SSD olye de kondui regilye yo.

Kounye a pa gen bon egzanp sou yon gwo rezo pou yon sèl gwoup.

Fondamantalman, kominote devlopè a ak gwoup SIG-cluster yo ap eseye konnen ki jan yo òkestre gwoup yo menm jan Kubernetes òkestre resipyan yo.

Opsyon 1: federasyon gwoup ak kubefed

Repons ofisyèl SIG-cluster - kubefed2, yon nouvo vèsyon kliyan ak operatè orijinal kube federasyon an.

Pou la pwemye fwa, nou te eseye jere yon koleksyon grap kòm yon sèl objè lè l sèvi avèk zouti federasyon kube.

Kòmansman an te bon, men nan fen federasyon kube pa janm vin popilè paske li pa t sipòte tout resous yo.

Li sipòte livrezon ak sèvis federasyon, men pa StatefulSets, pou egzanp.
Epitou, konfigirasyon federasyon an te transmèt nan fòm lan nan anotasyon epi li pa t fleksib.

Imajine ki jan ou ta ka dekri kopi patisyon an pou chak gwoup nan yon federasyon lè l sèvi avèk jis annotasyon.

Se te yon dezòd konplè.

SIG-cluster te fè anpil travay apre kubefed v1 epi li deside apwoche pwoblèm nan nan yon ang diferan.

Olye pou yo anotasyon, yo deside lage yon kontwolè ki enstale sou grap. Li ka Customized lè l sèvi avèk Custom Resource Definitions (CRDs).

Pou chak resous ki pral fè pati federasyon an, ou gen yon definisyon CRD koutim ak twa seksyon:

  • definisyon estanda nan yon resous, pou egzanp deplwaman;
  • seksyon placement, kote ou defini kijan yo pral distribye resous la nan federasyon an;
  • seksyon override, kote pou yon resous espesifik ou ka pase sou plas pwa a ak paramèt nan plasman.

Isit la se yon egzanp yon livrezon konbine avèk seksyon plasman ak 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

Kòm ou ka wè, rezèv la distribye nan de gwoup: cluster1 и cluster2.

Premye gwoup la bay twa kopi, epi dezyèm lan se 5.

Si ou bezwen plis kontwòl sou kantite kopi, kubefed2 bay yon nouvo objè ReplicaSchedulingPreference kote kopi yo ka pondere:

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

Estrikti CRD ak API yo poko pare, epi travay aktif ap fèt nan depo ofisyèl pwojè a.

Kenbe yon je sou kubefed2, men sonje ke li poko apwopriye pou pwodiksyon an.

Aprann plis sou kubefed2 soti nan atik ofisyèl sou kubefed2 nan blog la sou Kubernetes ak nan repozitwa ofisyèl nan pwojè kubefed la.

Opsyon 2: konbine grap nan style Booking.com

Devlopè yo nan Booking.com pa t 'travay sou kubefed v2, men yo te vini ak Shipper - yon operatè pou livrezon sou plizyè grap, nan plizyè rejyon ak nan plizyè nyaj.

Ekspeditè yon ti jan sanble ak kubefed2.

Tou de zouti yo pèmèt ou pèsonalize estrateji deplwaman milti grap ou a (ki grap yo itilize ak konbyen kopi yo genyen).

Men, Objektif Shipper a se diminye risk pou erè pandan livrezon.

Nan Shipper, ou ka defini yon seri etap ki dekri divizyon kopi ant deplwaman anvan ak aktyèl la ak volim trafik k ap rantre.

Lè ou pouse yon resous nan yon gwoup, kontwolè Shipper la ap woule chanjman sa a nan tout gwoup yo ansanm.

Epitou, Shipper trè limite.

Pou egzanp, li aksepte tablo Helm kòm opinyon epi li pa sipòte resous vaniy.
An tèm jeneral, Shipper travay tankou sa a.

Olye de livrezon estanda, ou bezwen kreye yon resous aplikasyon ki gen ladann yon tablo 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 se yon bon opsyon pou jere gwoup miltip, men relasyon sere li ak Helm sèlman vin nan chemen an.

E si nou tout chanje de Helm a personnaliser oswa kapitènn?

Jwenn plis enfòmasyon sou Shipper ak filozofi li yo nan piblikasyon laprès ofisyèl sa a.

Si ou vle fouye nan kòd la, tèt nan depo ofisyèl pwojè a.

Opsyon 3: "majik" gwoup fusion

Kubefed v2 ak Shipper travay ak federasyon gwoup, bay gwoup nouvo resous atravè definisyon resous koutim.

Men, e si ou pa vle reekri tout livrezon, StatefulSets, DaemonSets, elatriye pou rantre?

Ki jan yo enkli yon gwoup ki egziste deja nan yon federasyon san yo pa chanje YAML?

multi-cluster-scheduler se yon pwojè Amiralite, ki fè fas ak orè chaj travay sou grap.

Men, olye pou yo vini ak yon nouvo fason pou kominike avèk gwoup la ak vlope resous nan definisyon koutim, milti-grap-orè entegre nan sik lavi estanda Kubernetes ak entèsepte tout apèl ki kreye gous.

Chak gous kreye imedyatman ranplase ak yon egare.

milti-cluster-scheduler itilize webhooks pou modifikasyon aksèpou entèsepte apèl la epi kreye yon gous egare san fè anyen konsa.

Gos orijinal la ale nan yon lòt sik planifikasyon kote, apre yo fin vote tout federasyon an, yo pran yon desizyon plasman.

Finalman, gous la delivre nan gwoup sib la.

Kòm yon rezilta, ou gen yon gous siplemantè ki pa fè anyen, jis pran espas.

Avantaj la se ke ou pa t 'gen pou ekri nouvo resous pou konbine pwovizyon.

Chak resous ki kreye yon gous se otomatikman pare yo dwe fizyone.

Sa a se enteresan, paske toudenkou ou gen pwovizyon distribye nan plizyè rejyon, epi ou pa t 'menm remake. Sepandan, sa a se byen riske, paske tout bagay isit la repose sou majik.

Men, pandan ke Shipper ap eseye sitou bese enpak livrezon, milti-cluster-scheduler okipe plis travay jeneral epi li petèt pi byen adapte pou travay pakèt.

Li pa gen yon mekanis avanse gradyèl livrezon.

Ou ka jwenn plis enfòmasyon sou milti-cluster-scheduler nan paj depo ofisyèl.

Si ou vle li sou milti-cluster-scheduler nan aksyon, Admiralty genyen ka itilize enteresan ak Argo - workflows, evènman yo, CI ak CD Kubernetes.

Lòt zouti ak solisyon

Konekte ak jere plizyè gwoup se yon travay konplèks, epi pa gen okenn solisyon inivèsèl.

Si ou ta renmen eksplore sijè sa a plis, men kèk resous:

Se tout pou jodi a

Mèsi paske w li jiska lafen!

Si w konnen ki jan yo konekte plizyè grap pi efikas, di nou.

Nou pral ajoute metòd ou a nan lyen yo.

Mèsi espesyal Chris Nesbitt-Smith (Chris Nesbitt-Smith) ak Vincent de Sme (Vincent De Smet) (enjenyè fyab nan swatmobile.io) pou li atik la epi pataje enfòmasyon itil sou fason federasyon an fonksyone.

Sous: www.habr.com

Add nouvo kòmantè