Fa'afefea ona fa'afeso'ota'i fuifui Kubernetes i nofoaga fa'amaumauga eseese

Fa'afefea ona fa'afeso'ota'i fuifui Kubernetes i nofoaga fa'amaumauga eseese
Fa'afeiloa'i ile matou Kubernetes Quick Start series. Ole koluma masani lea ma fesili e sili ona manaia tatou te maua i luga ole laiga ma a tatou aʻoaʻoga. Kubernetes tali poto.

O le tagata poto i aso nei o Daniel Polenchik (Daniele Polencic). O Daniel e galue o se faiaoga ma le atina'e polokalame i Learnk8s.

Afai e te manaʻo e tali lau fesili i le isi pou, fa'afeso'ota'i matou ile imeli poʻo Twitter: @learnk8s.

Ua misia pou muamua? Su'e i latou iinei.

E fa'afefea ona fa'afeso'ota'i fuifui Kubernetes i nofoaga fa'amaumauga eseese?

Faapuupuu: Kubefed v2 lata mai, ma ou te fautuaina foi e faitau e uiga i Tagata lafo и galuega fa'aopoopo fa'atasi-fa'asologa.

O le tele o taimi, o atina'e e toe fa'atusa ma tufatufa atu i itu eseese, aemaise lava i siosiomaga pulea.

Afai e le maua se tasi itulagi, e toe fa'afeiloa'i feoaiga i le isi e aloese ai mai fa'alavelave.

Faatasi ai ma Kubernetes, e mafai ona e faʻaogaina se taʻiala tutusa ma tufatufa atu galuega i vaega eseese.

E mafai ona maua se tasi pe sili atu fuifui i le au, itulagi, siosiomaga, poʻo se tuʻufaʻatasia o nei elemene.

E mafai ona talimalo au fuifui i ao eseese ma luga ole fale.

Ae faʻafefea ona e fuafuaina atinaʻe mo ia faʻasalalauga faʻafanua?
E te manaʻomia le fatuina o se tasi fuifui tele mo le tele o siosiomaga ao i luga o se fesoʻotaʻiga e tasi?
Pe iai ni fuifui laiti se tele ma su'e se auala e pulea ai ma fa'amaopoopo?

Tasi le vaega ta'ita'i

O le fatuina o se tasi fuifui i luga o se fesoʻotaʻiga e tasi e le faigofie tele.

Va'ai faalemafaufau e iai sau fa'alavelave, ua leiloa le feso'ota'iga i le va o vaega fuifui.

Afai e tasi lau 'auʻaunaga matai, o le afa o punaoa o le a le mafai ona maua ni faʻatonuga fou ona o le a le mafai ona latou faʻafesoʻotaʻi le matai.

Ma i le taimi lava e tasi e iai au laulau tuai (kube-proxy e le mafai ona sii mai ni mea fou) ma e leai ni isi pods (e le mafai e kubelet ona talosagaina ni fa'afouga).

O le mea e sili atu ona leaga, afai e le iloa e Kubernetes se pona, e faʻailogaina ua matuaoti ma tufatufa atu pusa o loʻo misi i pona o loʻo iai.

O se taunuuga, e faaluaina le tele o au pods.

Afai e te faia se tasi matai server mo itulagi taʻitasi, o le ai ai faʻafitauli i le maliega algorithm i le etcd database. (tusa. ed. - O le mea moni, o le etcd database e le tatau ona tuʻuina i luga o le pule sili. E mafai ona fa'atautaia i luga o se vaega 'ese'ese o 'au'aunaga i le itulagi lava e tasi. E moni, i le taimi lava e tasi e maua ai se tulaga o le toilalo o le fuifui. Ae vave.)

etcd fa'aoga va'a algorithme fa'atalanoa le tau a'o le'i tusia i le tisiki.
O lona uiga, o le tele o taimi e tatau ona oʻo i le maliega aʻo leʻi mafai ona tusi le setete i etcd.

Afai e fa'atupula'ia tele le fa'aletonu i le va o etcd, e pei o le tolu etcd fa'ata'ita'iga i itu eseese, e umi se taimi e fa'atalanoaina ai se tau ma tusi i le tisiki.
O loʻo faʻaalia lea i le Kubernetes controllers.

E manaʻomia e le pule faʻatonutonu se taimi sili atu e aʻoaʻo ai e uiga i le suiga ma tusi le tali i le database.

Ma talu ai e le tasi le pule, ae tele, ose tali fa'ai'au fa'ai'uga ma o le fuifui atoa ua amata ona galue lemu.

etcd e matua maaleale lava le latency lea O faʻamaumauga aloaia e fautuaina le faʻaaogaina o SSD nai lo taʻavale masani masani.

E leai ni fa'ata'ita'iga lelei i le taimi nei o se feso'otaiga tele mo se fuifui e tasi.

O le mea moni, o loʻo taumafai le faʻalapotopotoga faʻapitoa ma le vaega o le SIG-cluster e fuafua pe faʻapefea ona faʻapipiʻi fuifui i le auala lava e tasi e faʻapipiʻi ai e Kubernetes pusa.

Filifiliga 1: fa'aputuga federation ma kubefed

Tali aloa'ia mai le SIG-cluster - kubefed2, ose fa'afou fou o le ulua'i tagata fa'atau ma le fa'afoe a le kube federation.

Mo le taimi muamua, na matou taumafai e faʻatautaia se aofaʻiga o fuifui o se mea e tasi e faʻaaoga ai le meafaigaluega faʻapotopotoga kube.

Na lelei le amataga, ae i le faaiuga e leʻi taʻutaʻua le kube federation ona e leʻi lagolagoina uma punaoa.

Na lagolagoina federated tilivaina ma auaunaga, ae le o StatefulSets, mo se faataitaiga.
E le gata i lea, o le fetuutuunaiga o le federation na tuʻuina atu i foliga o faʻamatalaga ma e leʻi faʻaogaina.

Va'ai faalemafaufau pe fa'apefea ona e fa'amatalaina le fa'atusa o le vaeluaga mo fuifui ta'itasi i totonu o le feterale e fa'aaoga ai na'o fa'amatalaga.

Sa matua’i vevesi lava.

SIG-cluster na faia le tele o galuega ina ua maeʻa le kubefed v1 ma filifili e faʻafeiloaʻi le faʻafitauli mai se isi itu.

Nai lo o faʻamatalaga, na latou filifili e faʻasaʻo se pule faʻapipiʻi i luga o fuifui. E mafai ona fa'avasegaina i le fa'aaogaina o Fa'auigaga Punaoa Fa'apitoa (CRDs).

Mo punaoa taʻitasi o le a avea ma vaega o le federasi, e iai sau faʻamatalaga masani CRD ma vaega e tolu:

  • fa'amatalaga masani o se puna'oa, mo se fa'ata'ita'iga o le fa'atinoina;
  • vaega placement, o fea e te faʻamatalaina ai pe faʻafefea ona tufatufa atu punaoa i le federasi;
  • vaega override, o fea mo se punaoa faʻapitoa e mafai ona e faʻaogaina le mamafa ma faʻamaufaʻailoga mai le tuʻuina.

O se fa'ata'ita'iga lea o le tu'ufa'atasia o le fa'ao'o fa'atasi ma le tu'u ma fa'amalo vaega.

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

E pei ona mafai ona e vaʻai, o le sapalai o loʻo tufatufa atu i vaega e lua: cluster1 и cluster2.

O le fuifui muamua e maua ai ni kopi se tolu, ae o le lona lua e seti i le 5.

Afai e te manaʻomia le faʻatonutonu atili o le aofaʻi o faʻataʻitaʻiga, o le kubefed2 e tuʻuina atu se mea fou ReplicaSchedulingPreference lea e mafai ai ona fua faʻatusa:

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

O le fausaga o le CRD ma le API e leʻi saunia lelei, ma o loʻo faʻagasolo galuega i totonu o le fale teu oloa faʻapitoa.

Va'ai mata i le kubefed2, ae ia manatua e le'i talafeagai mo le gaosiga.

A'oa'o atili e uiga i kubefed2 mai tala aloaia e uiga i kubefed2 i le blog e uiga i Kubernetes ma totonu faleteuoloa aloaia o le poloketi kubefed.

Filifiliga 2: tu'ufa'atasia fuifui ile faiga Booking.com

O le au atiaʻe o le Booking.com e leʻi galue i luga o le kubefed v2, ae na latou o mai ma le Shipper - o se tagata faʻapipiʻi mo le tuʻuina atu i luga o le tele o fuifui, i le tele o itulagi ma le tele o ao.

Tagata lafo e foliga tutusa ma kubefed2.

O meafaigaluega uma e lua e mafai ai e oe ona faʻavasega lau taʻiala e faʻapipiʻi ai le tele-cluster (o fea fuifui o loʻo faʻaaogaina ma pe fia faʻatusa latou te maua).

ae O le sini a le Shipper o le faʻaitiitia o le lamatiaga o mea sese i le taimi o le tilivaina.

I le Shipper, e mafai ona e faʻamatalaina se faasologa o laasaga e faʻamatalaina ai le vaevaega o faʻataʻitaʻiga i le va o le tuʻuina atu muamua ma le taimi nei ma le tele o felauaiga o loʻo oʻo mai.

A e tuleia se punaoa i se fuifui, o le Shipper controller e faasolosolo atu i fafo lena suiga i luga o fuifui uma ua tuufaatasia.

E le gata i lea, o le Shipper e matua faʻatapulaʻaina.

Mo se faataitaiga, e talia siata foeuli e fai ma fa'aoga ma e le lagolagoina punaoa vanilla.
I tulaga lautele, e galue le Shipper e pei o lenei.

Nai lo o le tu'uina atu masani, e tatau ona e fatuina se punaoa talosaga e aofia ai se siata 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 o se filifiliga lelei mo le puleaina o fuifui se tele, ae o lona vavalalata vavalalata ma Helm e naʻo le faʻalavelave.

Ae faapefea pe a tatou sui uma mai le Helm i fa'apitoa poʻo kapitana?

Saili atili e uiga i Shipper ma lona filosofia i lenei fa'asalalauga aloa'ia.

Afai e te manaʻo e eli i totonu o le code, ulu i le faleteuoloa o galuega faatino.

Filifiliga 3: "magic" fuifui tuufaatasi

O le Kubefed v2 ma le Shipper o lo'o galulue fa'atasi ma le fa'apotopotoga fa'aopoopo, e tu'uina atu alagaoa fou i fuifui e ala i fa'amatalaga aganu'u aganu'u.

Ae fa'afefea pe a e le mana'o e toe tusi uma tiliva, StatefulSets, DaemonSets, etc. e tu'ufa'atasia?

E fa'afefea ona fa'aaofia se fuifui o lo'o iai i totonu o le feterale e aunoa ma le suia o le YAML?

multi-cluster-scheduler o se poloketi Admirality, lea e fa'atatau i le fa'atulagaina o galuega i luga o fuifui.

Ae nai lo le sau ma se auala fou e fegalegaleai ai ma le fuifui ma afifi punaoa i faʻamatalaga masani, multi-cluster-scheduler o loʻo faʻapipiʻiina i totonu ole olaga masani Kubernetes ma faʻalavelave uma telefoni e fatuina pods.

O pod uma na faia e vave ona suia i se dummy.

fa'aoga fa'aputuga-fa'asologa webhooks mo suiga avanoae fa'alavelave le valaau ma fa'atupu se pu'e fa'agae'e.

O le uluai pod e ui atu i se isi taamilosaga fuafuaina lea, pe a uma le palota a le federasi atoa, e faia se filifiliga e tuʻuina atu.

Mulimuli ane, o le pod e tuʻuina atu i le faʻapipiʻi taulaʻi.

O le i'uga, e iai sau pusa fa'aopoopo e leai se mea e fai, na'o le fa'aogaina o avanoa.

O le lelei e te le tau tusia ni punaoa fou e tuʻufaʻatasia ai sapalai.

O puna'oa ta'itasi e fausia ai se pod e otometi lava ona sauni e tu'ufa'atasia.

E manaia lenei mea, aua e faʻafuaseʻi ona e tufaina atu sapalai i le tele o itulagi, ma e te leʻi matauina. Ae ui i lea, o lenei mea e matua lamatia lava, aua o mea uma iinei e faalagolago i togafiti.

Ae a o taumafai Shipper e faʻaitiitia le aʻafiaga o tiliva, e faʻatautaia e le multi-cluster-scheduler galuega sili atu ma atonu e sili atu ona fetaui mo galuega faʻavae.

E le o iai se masini fa'asolo fa'asolosolo fa'asolosolo.

E mafai ona maua nisi fa'amatalaga e uiga i multi-cluster-scheduler i itulau faleteuoloa aloaia.

Afai e te manaʻo e faitau e uiga i le tele-cluster-scheduler i le gaioiga, Admiralty e iai mata'ina le fa'aoga mataupu ma Argo - faʻasologa o galuega, mea tutupu, CI ma CD Kubernetes.

O isi meafaigaluega ma fofo

Faʻafesoʻotaʻi ma le puleaina o fuifui se tele o se galuega faigata, ma e leai se fofo lautele.

Afai e te manaʻo e suʻesuʻe atili lenei autu, o nisi nei o punaoa:

Pau lava lena mo le aso

Faafetai mo le faitau e oo i le iuga!

Afai e te iloa pe faʻafefea ona faʻafesoʻotaʻi le tele o fuifui sili atu ona lelei, ta'u mai ia i matou.

O le a matou fa'aopoopo lau metotia i so'otaga.

Fa'afetai fa'apitoa ia Chris Nesbitt-Smith (Chris Nesbitt-Smith) ma Vincent de Sme (Vincent De Smet) (enisinia faatuatuaina i swatmobile.io) mo le faitauina o le tusiga ma faʻasoa faʻamatalaga aoga e uiga i le auala e galue ai le federasi.

puna: www.habr.com

Faaopoopo i ai se faamatalaga