Bii o ṣe le sopọ awọn iṣupọ Kubernetes ni awọn ile-iṣẹ data oriṣiriṣi

Bii o ṣe le sopọ awọn iṣupọ Kubernetes ni awọn ile-iṣẹ data oriṣiriṣi
Kaabo si Kubernetes Quick Start jara wa. Eyi jẹ iwe deede pẹlu awọn ibeere ti o nifẹ julọ ti a gba lori ayelujara ati ninu awọn ikẹkọ wa. Kubernetes iwé idahun.

Onimọran oni ni Daniel Polenchik (Daniele Polencic). Daniel ṣiṣẹ bi oluko ati software Olùgbéejáde ni Kọ ẹkọ8s.

Ti o ba fẹ dahun ibeere rẹ ni ifiweranṣẹ atẹle, kan si wa nipasẹ imeeli tabi ni Twitter: @learnk8s.

Ṣe o padanu awọn ifiweranṣẹ ti tẹlẹ? Wa wọn nibi.

Bii o ṣe le sopọ awọn iṣupọ Kubernetes ni awọn ile-iṣẹ data oriṣiriṣi?

Ni ṣoki: Kubefed v2 nbo laipe, ati pe Mo tun ṣeduro kika nipa Sowo и olona-cluster-scheduler ise agbese.

Ni igbagbogbo, awọn amayederun ti wa ni ẹda ati pinpin kaakiri awọn agbegbe oriṣiriṣi, pataki ni awọn agbegbe iṣakoso.

Ti agbegbe kan ko ba si, a darí ijabọ si omiran lati yago fun awọn idilọwọ.

Pẹlu Kubernetes, o le lo ilana ti o jọra ati pinpin awọn ẹru iṣẹ kọja awọn agbegbe oriṣiriṣi.

O le ni ọkan tabi diẹ ẹ sii awọn iṣupọ fun ẹgbẹ kan, agbegbe, agbegbe, tabi apapo awọn eroja wọnyi.

Awọn iṣupọ rẹ le jẹ ti gbalejo ni oriṣiriṣi awọsanma ati awọn agbegbe ile.

Ṣugbọn bawo ni o ṣe gbero awọn amayederun fun iru itankale agbegbe?
Ṣe o nilo lati ṣẹda iṣupọ nla kan fun ọpọlọpọ awọn agbegbe awọsanma lori nẹtiwọki kan bi?
Tabi ni ọpọlọpọ awọn iṣupọ kekere ati wa ọna lati ṣakoso ati mu wọn ṣiṣẹpọ?

Opo olori kan

Ṣiṣẹda iṣupọ kan lori nẹtiwọki kan kii ṣe rọrun.

Fojuinu pe o ni ijamba, asopọ laarin awọn apa iṣupọ ti sọnu.

Ti o ba ni olupin titunto si, idaji awọn orisun kii yoo ni anfani lati gba awọn aṣẹ tuntun nitori wọn kii yoo ni anfani lati kan si oluwa naa.

Ati ni akoko kanna o ni awọn tabili afisona atijọ (kube-proxy ko le ṣe igbasilẹ awọn tuntun) ati pe ko si awọn adarọ-ese afikun (kubelet ko le beere awọn imudojuiwọn).

Lati jẹ ki ọrọ buru si, ti Kubernetes ko ba ri ipade kan, o samisi rẹ bi alainibaba ati pinpin awọn podu ti o padanu si awọn apa ti o wa tẹlẹ.

Bi abajade, o ni ilọpo meji ọpọlọpọ awọn podu.

Ti o ba ṣe olupin titunto si fun agbegbe kọọkan, awọn iṣoro yoo wa pẹlu algorithm ifọkanbalẹ ni ibi ipamọ data etcd. (isunmọ. ed. - Ni otitọ, aaye data etcd ko ni dandan lati wa lori awọn olupin oluwa. O le wa ni ṣiṣe lori lọtọ ẹgbẹ ti apèsè ni kanna agbegbe. Otitọ, ni akoko kanna gbigba aaye ikuna ti iṣupọ. Sugbon ni kiakia.)

etcd nlo raft alugoridimulati duna iye ṣaaju ki o to kikọ si disk.
Iyẹn ni, pupọ julọ awọn iṣẹlẹ gbọdọ de ipohunpo ṣaaju ki o to le kọ ipinlẹ si ati bẹbẹ lọ.

Ti o ba ti lairi laarin etcd instances posi bosipo, bi ni irú pẹlu mẹta etcd instances ni orisirisi awọn agbegbe, o gba igba pipẹ lati duna a iye ki o si kọ o si disk.
Eyi jẹ afihan ni awọn oludari Kubernetes.

Oluṣakoso oludari nilo akoko diẹ sii lati kọ ẹkọ nipa iyipada ati kọ esi si ibi ipamọ data.

Ati pe nitori ko si oludari kan, ṣugbọn pupọ, awọn abajade ifaseyin pq ati gbogbo iṣupọ bẹrẹ lati ṣiṣẹ laiyara pupọ.

etcd jẹ ki lairi kókó ti Awọn iwe aṣẹ osise ṣeduro lilo awọn SSD dipo awọn dirafu lile deede.

Lọwọlọwọ ko si awọn apẹẹrẹ to dara ti nẹtiwọọki nla kan fun iṣupọ ẹyọkan.

Ni ipilẹ, agbegbe idagbasoke ati ẹgbẹ SIG-cluster n gbiyanju lati ṣawari bi a ṣe le ṣe awọn iṣupọ ni ọna kanna ti awọn apoti ohun-ọṣọ Kubernetes.

Aṣayan 1: apapo iṣupọ pẹlu kubefed

Idahun osise lati SIG-cluster - kubefed2, ẹya tuntun ti alabara federation kube atilẹba ati oniṣẹ.

Fun igba akọkọ, a gbiyanju lati ṣakoso awọn akojọpọ awọn iṣupọ bi ohun kan ṣoṣo nipa lilo irinṣẹ kube federation.

Ibẹrẹ dara, ṣugbọn ni ipari kube federation ko di olokiki nitori ko ṣe atilẹyin gbogbo awọn orisun.

O ṣe atilẹyin awọn ifijiṣẹ apapọ ati awọn iṣẹ, ṣugbọn kii ṣe StatefulSets, fun apẹẹrẹ.
Paapaa, iṣeto ti federation ti gbejade ni irisi awọn asọye ati pe ko rọ.

Fojuinu bawo ni o ṣe le ṣapejuwe pipin ajọra fun iṣupọ kọọkan ni ajọ ni lilo awọn asọye nikan.

O je kan pipe idotin.

SIG-cluster ṣe ọpọlọpọ awọn iṣẹ lẹhin kubefed v1 ati pinnu lati sunmọ iṣoro naa lati igun oriṣiriṣi.

Dipo awọn akọsilẹ, wọn pinnu lati tu oluṣakoso kan ti a fi sori ẹrọ lori awọn iṣupọ. O le ṣe adani nipa lilo Awọn Itumọ Awọn orisun Aṣa (CRDs).

Fun orisun kọọkan ti yoo jẹ apakan ti federation, o ni itumọ aṣa CRD pẹlu awọn apakan mẹta:

  • boṣewa definition ti a oluşewadi, fun apẹẹrẹ imuṣiṣẹ;
  • apakan placement, nibi ti o ti ṣalaye bi a ṣe le pin awọn orisun ni apapo;
  • apakan override, Nibo fun awọn oluşewadi kan pato ti o le bori iwuwo ati awọn paramita lati ipo.

Eyi jẹ apẹẹrẹ ti ifijiṣẹ ni idapo pẹlu gbigbe ati awọn apakan idojuk.

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

Bi o ti le rii, ipese naa ti pin kaakiri awọn iṣupọ meji: cluster1 и cluster2.

Iṣupọ akọkọ n pese awọn ẹda mẹta, ati ekeji ti ṣeto si 5.

Ti o ba nilo iṣakoso diẹ sii lori nọmba awọn ẹda, kubefed2 n pese ohun elo ReplicaSchedulingPreference tuntun nibiti awọn ẹda le jẹ iwuwo:

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

Eto CRD ati API ko ti ṣetan sibẹsibẹ, ati pe iṣẹ ṣiṣe n lọ lọwọ ni ibi ipamọ iṣẹ akanṣe.

Jeki ohun oju lori kubefed2, ṣugbọn ranti pe o jẹ ko sibẹsibẹ dara fun gbóògì.

Kọ ẹkọ diẹ sii nipa kubefed2 lati osise article nipa kubefed2 ninu bulọọgi nipa Kubernetes ati ni ibi ipamọ osise ti kubefed ise agbese.

Aṣayan 2: apapọ awọn iṣupọ ni ara Booking.com

Awọn olupilẹṣẹ ti Booking.com ko ṣiṣẹ lori kubefed v2, ṣugbọn wọn wa pẹlu Shipper - oniṣẹ kan fun ifijiṣẹ lori ọpọlọpọ awọn iṣupọ, ni awọn agbegbe pupọ ati ni awọn awọsanma pupọ.

Sowo itumo iru si kubefed2.

Awọn irinṣẹ mejeeji gba ọ laaye lati ṣe akanṣe ilana imuṣiṣẹ iṣupọ pupọ rẹ (eyiti o lo awọn iṣupọ ati iye awọn ẹda ti wọn ni).

ṣugbọn Ibi-afẹde Shipper ni lati dinku eewu awọn aṣiṣe lakoko ifijiṣẹ.

Ni Shipper, o le ṣalaye lẹsẹsẹ awọn igbesẹ ti o ṣapejuwe pipin awọn ẹda laarin iṣaaju ati imuṣiṣẹ lọwọlọwọ ati iwọn awọn ijabọ ti nwọle.

Nigbati o ba Titari orisun kan si iṣupọ kan, oluṣakoso Shipper n yi diẹ sii ti o yipada ni gbogbo awọn iṣupọ ti o darapọ.

Paapaa, Shipper jẹ opin pupọ.

Fun apẹẹrẹ, o gba Helm shatti bi input ati ki o ko ni atilẹyin fanila oro.
Ni gbogbogbo, Shipper ṣiṣẹ bi eleyi.

Dipo ifijiṣẹ boṣewa, o nilo lati ṣẹda orisun ohun elo kan ti o pẹlu iwe aworan Helm kan:

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 jẹ aṣayan ti o dara fun ṣiṣakoso ọpọlọpọ awọn iṣupọ, ṣugbọn ibatan rẹ ti o sunmọ pẹlu Helm nikan wa ni ọna.

Kini ti gbogbo wa ba yipada lati Helm si ṣe akanṣe tabi balogun?

Wa diẹ sii nipa Shipper ati imoye rẹ ni yi osise tẹ Tu.

Ti o ba fẹ lati ma wà sinu koodu, ori si ibi ipamọ ise agbese osise.

Aṣayan 3: “idan” akojọpọ iṣupọ

Kubefed v2 ati Shipper ṣiṣẹ pẹlu apapo iṣupọ, pese awọn orisun tuntun si awọn iṣupọ nipasẹ asọye awọn orisun aṣa.

Ṣugbọn kini ti o ko ba fẹ tun gbogbo awọn ifijiṣẹ, StatefulSets, DaemonSets, ati bẹbẹ lọ lati dapọ?

Bii o ṣe le ṣafikun iṣupọ ti o wa tẹlẹ ninu ajọ kan laisi iyipada YAML?

olona-cluster-scheduler jẹ ẹya Admirality ise agbese, eyi ti o ṣe pẹlu ṣiṣe iṣeto awọn iṣẹ ṣiṣe lori awọn iṣupọ.

Ṣugbọn dipo wiwa pẹlu ọna tuntun lati ṣe ajọṣepọ pẹlu iṣupọ ati ipari awọn ohun elo ni awọn asọye aṣa, olona-cluster-scheduler ti wa ni ifibọ sinu boṣewa igbesi aye Kubernetes ati idilọwọ gbogbo awọn ipe ti o ṣẹda awọn adarọ-ese.

Podu ti a ṣẹda kọọkan ti rọpo lẹsẹkẹsẹ pẹlu idin.

olona-cluster-scheduler ipawo webhooks fun wiwọle iyipadalati da ipe naa duro ati ṣẹda adarọ-ese ti ko ṣiṣẹ.

Podu atilẹba ti n lọ nipasẹ eto igbero miiran nibiti, lẹhin idibo gbogbo apapo, ipinnu gbigbe kan ti ṣe.

Nikẹhin, a fi jiṣẹ podu naa si iṣupọ ibi-afẹde.

Bi abajade, o ni afikun podu ti ko ṣe nkankan, kan gba aaye.

Anfani ni pe o ko ni lati kọ awọn orisun tuntun lati ṣajọpọ awọn ipese.

Awọn orisun kọọkan ti o ṣẹda adarọ-ese ti šetan laifọwọyi lati dapọ.

Eyi jẹ iyanilenu, nitori lojiji o ni awọn ipese ti o pin kaakiri awọn agbegbe pupọ, ati pe iwọ ko paapaa ṣe akiyesi. Sibẹsibẹ, eyi jẹ eewu pupọ, nitori ohun gbogbo nibi wa lori idan.

Ṣugbọn lakoko ti Shipper n gbiyanju lati dinku ikolu ti awọn ifijiṣẹ, olona-iṣupọ-iṣatunṣe n ṣe awọn iṣẹ ṣiṣe gbogbogbo diẹ sii ati boya o dara julọ fun awọn iṣẹ ipele.

Ko si ẹrọ ifijiṣẹ mimu to ti ni ilọsiwaju.

Diẹ ẹ sii nipa olona-cluster-scheduler le ri ni oju-iwe ibi ipamọ osise.

Ti o ba fẹ ka nipa olona-cluster-scheduler ni igbese, Admiralty ni irú lilo awon pẹlu Argo - workflows, iṣẹlẹ, CI ati CD Kubernetes.

Miiran irinṣẹ ati awọn solusan

Sisopọ ati ṣiṣakoso awọn iṣupọ pupọ jẹ iṣẹ-ṣiṣe eka, ati pe ko si ojutu gbogbo agbaye.

Ti o ba fẹ lati ṣawari koko-ọrọ yii siwaju, eyi ni diẹ ninu awọn orisun:

Iyẹn ni gbogbo fun oni

O ṣeun fun kika si opin!

Ti o ba mọ bi o ṣe le sopọ ọpọlọpọ awọn iṣupọ daradara siwaju sii, so fun wa.

A yoo fi ọna rẹ kun si awọn ọna asopọ.

Ọpẹ pataki si Chris Nesbitt-Smith (Chris Nesbitt-Smithati Vincent de Sme (Vincent De Smet) (ẹlẹrọ igbẹkẹle ninu swatmobile.io) fun kika nkan naa ati pinpin alaye to wulo nipa bi apapo ṣe n ṣiṣẹ.

orisun: www.habr.com

Fi ọrọìwòye kun