Momwe mungalumikizire magulu a Kubernetes m'malo osiyanasiyana a data

Momwe mungalumikizire magulu a Kubernetes m'malo osiyanasiyana a data
Takulandilani pamndandanda wathu wa Kubernetes Quick Start. Ili ndi gawo lanthawi zonse lomwe lili ndi mafunso osangalatsa kwambiri omwe timalandira pa intaneti komanso m'maphunziro athu. Katswiri wa Kubernetes amayankha.

Katswiri wamasiku ano ndi Daniel Polenchik (Daniele Polencic). Daniel amagwira ntchito ngati mlangizi komanso wopanga mapulogalamu pa Maphunziro8s.

Ngati mukufuna kuti funso lanu liyankhidwe patsamba lotsatira, titumizireni imelo kapena Twitter: @learnk8s.

Zolemba zam'mbuyo mwaphonya? Apezeni apa.

Momwe mungalumikizire magulu a Kubernetes m'malo osiyanasiyana a data?

Mwachidule: Kubefed v2 ikubwera posachedwa, ndipo ndikupangiranso kuwerenga za Wotumiza и Multicluster-scheduler project.

Nthawi zambiri, zomangamanga zimabwerezedwanso ndikugawidwa kumadera osiyanasiyana, makamaka m'malo olamulidwa.

Ngati dera lina silikupezeka, magalimoto amatumizidwa kudera lina kuti apewe kusokoneza.

Ndi Kubernetes, mutha kugwiritsa ntchito njira yofananira ndikugawa ntchito kumadera osiyanasiyana.

Mutha kukhala ndi gulu limodzi kapena angapo pagulu lililonse, dera, chilengedwe, kapena kuphatikiza kwazinthu izi.

Magulu anu amatha kusungidwa mumitambo yosiyanasiyana komanso pamalopo.

Koma mumakonzekera bwanji zomanga za kufalikira kotereku?
Kodi mukufunika kupanga gulu limodzi lalikulu la malo angapo amtambo pa netiweki imodzi?
Kapena muli ndi magulu ang'onoang'ono ambiri ndikupeza njira yowalamulira ndi kuwagwirizanitsa?

Gulu limodzi la utsogoleri

Kupanga gulu limodzi pamaneti amodzi sikophweka.

Tangoganizani kuti mwachita ngozi, kulumikizana pakati pa magulu am'magulu kwatayika.

Ngati muli ndi seva imodzi ya master, theka lazinthu sizidzatha kulandira malamulo atsopano chifukwa sangathe kulumikizana ndi mbuye.

Ndipo nthawi yomweyo muli ndi matebulo akale (kube-proxy sangathe kutsitsa zatsopano) ndipo palibe ma pod owonjezera (kubelet sangathe kupempha zosintha).

Kuti zinthu ziipireipire, ngati Kubernetes sakuwona mfundo, amawonetsa ngati amasiye ndikugawa ma pod omwe akusowa ku node zomwe zilipo.

Zotsatira zake, muli ndi ma pods owirikiza kawiri.

Ngati mupanga seva imodzi m'dera lililonse, padzakhala zovuta ndi algorithm yogwirizana mu database ya etcd. (pafupifupi. ed. - M'malo mwake, nkhokwe ya etcd sikuyenera kukhala pa ma seva akuluakulu. Itha kuyendetsedwa pagulu lapadera la ma seva mdera lomwelo. Zoona, nthawi yomweyo kupeza mfundo ya kulephera kwa tsango. Koma mwamsanga.)

etcd amagwiritsa ntchito raft algorithmkukambirana za mtengo musanalembe ku disk.
Ndiko kuti, nthawi zambiri ziyenera kufikira mgwirizano boma lisanalembedwe ku etcd.

Ngati kuchedwa pakati pa etcd kumawonjezeka kwambiri, monga momwe zimakhalira ndi zochitika zitatu etcd m'madera osiyanasiyana, zimatenga nthawi yaitali kukambirana zamtengo wapatali ndikuzilembera ku disk.
Izi zikuwonetsedwa mu olamulira a Kubernetes.

Woyang'anira wowongolera amafunikira nthawi yochulukirapo kuti aphunzire zakusintha ndikulemba yankho ku database.

Ndipo popeza palibe wowongolera m'modzi, koma angapo, zotsatira za unyolo ndipo gulu lonse limayamba kugwira ntchito pang'onopang'ono.

etcd ndi latency sensitive kuti Zolemba zovomerezeka zimalimbikitsa kugwiritsa ntchito ma SSD m'malo mwa hard drive wamba.

Pakali pano palibe zitsanzo zabwino za netiweki yayikulu ya gulu limodzi.

Kwenikweni, gulu la otukula ndi gulu la SIG-cluster akuyesera kudziwa momwe angapangire magulu momwemonso Kubernetes amapangira zotengera.

Njira 1: chitaganya chamagulu ndi kubefed

Yankho lovomerezeka kuchokera ku SIG-cluster - kubefed2, mtundu watsopano wa kasitomala woyamba wa kubefederation ndi woyendetsa.

Kwa nthawi yoyamba, tidayesa kuyang'anira gulu lamagulu ngati chinthu chimodzi pogwiritsa ntchito chida cha kube federal.

Chiyambi chinali chabwino, koma pamapeto pake federation ya kube sichinayambe kutchuka chifukwa sichimathandiza zonse.

Idathandizira zoperekera ndi ntchito zoyendetsedwa ndi mabungwe, koma osati StatefulSets, mwachitsanzo.
Komanso, kasinthidwe ka chitaganya adafalitsidwa mu mawonekedwe a zofotokozera ndipo sikunali kusinthika.

Tangoganizirani momwe mungafotokozere kugawika kwa gulu lililonse m'chitaganya pogwiritsa ntchito mawu ofotokozera.

Zinali zosokoneza.

SIG-cluster idachita ntchito zambiri itatha kubefed v1 ndipo idaganiza zothana ndi vutoli mwanjira ina.

M'malo mofotokozera, adaganiza zomasula chowongolera chomwe chimayikidwa pamagulu. Itha kusinthidwa makonda pogwiritsa ntchito Custom Resource Definitions (CRDs).

Pazinthu zilizonse zomwe zidzakhale gawo la federal, muli ndi tanthauzo la CRD lomwe lili ndi magawo atatu:

  • matanthauzo okhazikika a chinthu, mwachitsanzo kutumizidwa;
  • gawo placement, komwe mumafotokozera momwe chumacho chidzagawidwira m'chitaganya;
  • gawo override, komwe kwa gwero linalake mungathe kupitirira kulemera kwake ndi magawo kuchokera pakuyika.

Nachi chitsanzo cha kutumiza kophatikizana ndi magawo oyika ndi kutulutsa.

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

Monga mukuonera, zoperekazo zimagawidwa m'magulu awiri: cluster1 и cluster2.

Gulu loyamba limapereka zofananira zitatu, ndipo lachiwiri lakhazikitsidwa 5.

Ngati mukufuna kuwongolera kuchuluka kwa zofananira, kubefed2 imapereka chinthu chatsopano cha ReplicaSchedulingPreference komwe zofananira zitha kulemedwa:

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

Mapangidwe a CRD ndi API sizinakonzekerebe, ndipo ntchito yokhazikika ikuchitika m'malo osungiramo ntchito.

Yang'anirani kubefed2, koma kumbukirani kuti sinali yoyenera kupanga.

Dziwani zambiri za kubefed2 kuchokera nkhani yovomerezeka ya kubefed2 mu blog za Kubernetes ndi in malo ovomerezeka a projekiti ya kubefed.

Njira 2: kuphatikiza magulu mu kalembedwe ka Booking.com

Madivelopa a Booking.com sanagwire ntchito pa kubefed v2, koma adabwera ndi Shipper - wogwiritsa ntchito kuti atumizidwe pamagulu angapo, m'magawo angapo komanso m'mitambo ingapo.

Wotumiza zofanana ndi kubefed2.

Zida zonsezi zimakupatsani mwayi wosinthira makonda anu amitundu yambiri (omwe masango amagwiritsidwa ntchito komanso kuchuluka kwa ma replicas omwe ali nawo).

koma Cholinga cha Shipper ndi kuchepetsa chiopsezo cha zolakwika panthawi yobereka.

Mu Shipper, mutha kufotokozera masitepe angapo omwe amafotokoza kugawanika kwa zofananira pakati pa zomwe zidatumizidwa kale ndi zomwe zachitika pano komanso kuchuluka kwa magalimoto omwe akubwera.

Mukakankhira gwero ku gulu, wolamulira wa Shipper amatulutsa kusintha kumeneku m'magulu onse omwe adalumikizidwa.

Komanso, Shipper ndi ochepa kwambiri.

Mwachitsanzo, imavomereza ma chart a helm ngati cholowetsa ndipo sichithandizira zothandizira vanila.
Nthawi zambiri, Shipper amagwira ntchito motere.

M'malo motumiza wamba, muyenera kupanga chothandizira chomwe chimaphatikizapo tchati cha 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 ndi njira yabwino yoyendetsera magulu angapo, koma ubale wake wapamtima ndi Helm umangofika panjira.

Bwanji ngati tonse tisintha kuchoka ku Helm kupita makonda kapena Captain?

Dziwani zambiri za Shipper ndi filosofi yake pa kutulutsa kwa atolankhani.

Ngati mukufuna kukumba mu code, pita ku malo ovomerezeka a polojekiti.

Njira 3: kuphatikiza masango a "matsenga".

Kubefed v2 ndi Shipper amagwira ntchito ndi chitaganya chamagulu, kupatsa zida zatsopano m'magulu kudzera pakutanthauzira kwazinthu.

Koma bwanji ngati simukufuna kulembanso zotumiza zonse, StatefulSets, DaemonSets, ndi zina zambiri kuti muphatikize?

Momwe mungaphatikizire gulu lomwe lidalipo m'chitaganya osasintha YAML?

multicluster-scheduler ndi ntchito ya Admirality, yomwe imagwira ntchito pakukonza zochulukira pamagulu.

Koma m'malo mobwera ndi njira yatsopano yolumikizirana ndi masango ndikukulunga zothandizira muzofotokozera zachikhalidwe, ma multicluster-scheduler amalowetsedwa mumayendedwe okhazikika a Kubernetes ndipo amadula mafoni onse omwe amapanga ma pod.

Poda iliyonse yopangidwa imasinthidwa nthawi yomweyo ndi dummy.

kugwiritsa ntchito ma multicluster-scheduler ma webhooks kuti musinthekuti muyimbe kuyimba ndi kupanga dummy pod.

Poda yoyambirira imadutsanso njira ina yokonzekera pomwe, pambuyo povotera chitaganya chonse, chigamulo chokhazikitsa chimapangidwa.

Pomaliza, poto imaperekedwa kumagulu omwe akufuna.

Chotsatira chake, muli ndi pod yowonjezera yomwe sichita kanthu, imangotenga malo.

Ubwino wake ndikuti simunayenera kulemba zida zatsopano kuti muphatikize zinthu.

Chida chilichonse chomwe chimapanga pod chimakonzeka kuphatikizidwa.

Izi ndizosangalatsa, chifukwa mwadzidzidzi muli ndi zinthu zomwe zagawidwa kumadera angapo, ndipo simunazindikire. Komabe, izi ndizowopsa, chifukwa zonse pano zimakhazikika pamatsenga.

Koma pamene Shipper akuyesera kuchepetsa kukhudzidwa kwa kubweretsa, ma multicluster-scheduler amagwira ntchito zambiri ndipo mwina ali oyenera ntchito zamagulu.

Ilibe njira yopititsira patsogolo pang'onopang'ono.

Zambiri za Multi-cluster-scheduler zitha kupezeka pa tsamba lovomerezeka.

Ngati mukufuna kuwerenga za ma multicluster-scheduler akugwira ntchito, Admiralty ali nayo chosangalatsa chogwiritsa ntchito ndi Argo - mayendedwe, zochitika, CI ndi CD Kubernetes.

Zida zina ndi zothetsera

Kulumikiza ndi kuyang'anira magulu angapo ndi ntchito yovuta, ndipo palibe yankho lachilengedwe chonse.

Ngati mukufuna kufufuza zambiri za mutuwu, nazi zina zothandiza:

Ndizo zonse za lero

Zikomo powerenga mpaka kumapeto!

Ngati mukudziwa momwe mungalumikizire magulu angapo bwino, tiuzeni.

Tikuwonjezera njira yanu ku maulalo.

Zikomo kwambiri Chris Nesbitt-Smith (Chris Nesbitt-Smithndi Vincent de Sme (Vincent De Smet) (katswiri wodalirika mu swatmobile.io) powerenga nkhaniyi ndikugawana zambiri zothandiza za momwe chitaganya chimagwirira ntchito.

Source: www.habr.com

Kuwonjezera ndemanga