Чӣ тавр пайваст кардани кластерҳои Kubernetes дар марказҳои гуногуни маълумот

Чӣ тавр пайваст кардани кластерҳои Kubernetes дар марказҳои гуногуни маълумот
Хуш омадед ба Силсилаи Quick Start Kubernetes. Ин як сутуни муқаррарӣ бо саволҳои ҷолибтаринест, ки мо онлайн ва дар тренингҳои мо мегирем. Коршиноси Kubernetes ҷавоб медиҳад.

Коршиноси имрӯза Даниел Поленчик (Даниэле Поленчич). Даниел ҳамчун омӯзгор ва таҳиягари нармафзор кор мекунад Learnk8s.

Агар шумо хоҳед, ки ба саволи худ дар мақолаи навбатӣ посух гиред, тавассути почтаи электронӣ бо мо тамос гиред ё Twitter: @learnk8s.

Паёмҳои қаблиро гум кардаед? Онҳоро дар ин ҷо ҷустуҷӯ кунед.

Чӣ тавр кластерҳои Kubernetes -ро дар марказҳои гуногуни маълумот пайваст кардан мумкин аст?

Ба таври мухтасар: Kubefed v2 ба зудӣ меояд, ва ман инчунин ба шумо маслиҳат медиҳам, ки дар бораи он хонед Интиқолдиҳанда и лоиҳаи бисёр кластер-нақша.

Аксар вақт, инфрасохтор дар минтақаҳои гуногун, махсусан дар муҳити назоратшаванда такрор ва тақсим карда мешавад.

Агар як минтақа дастрас набошад, трафик ба дигараш равона карда мешавад, то халал нарасонад.

Бо Kubernetes, шумо метавонед як стратегияи шабеҳро истифода баред ва сарбории корро дар минтақаҳои гуногун тақсим кунед.

Шумо метавонед як ё якчанд кластерҳо дар як даста, минтақа, муҳити зист ё маҷмӯи инҳо дошта бошед.

Кластерҳои шумо метавонанд дар абрҳои сершумор ва дар дохили бино ҷойгир карда шаванд.

Аммо инфрасохторро барои чунин паҳншавии ҷуғрофӣ чӣ гуна бояд ба нақша гирифт?
Оё ба шумо лозим аст, ки як кластери калон барои якчанд муҳити абрӣ дар як шабака эҷод кунед?
Ё бисёр кластерҳои хурд дошта бошед ва роҳи назорат ва ҳамоҳангсозии онҳоро пайдо кунед?

Як кластери роҳбарӣ

Эҷоди як кластер дар як шабака он қадар осон нест.

Тасаввур кунед, ки шумо садама доред, пайвастшавӣ байни сегментҳои кластер гум шудааст.

Агар шумо як сервери асосӣ дошта бошед, нисфи захираҳо фармонҳои навро қабул карда наметавонанд, зеро онҳо наметавонанд бо устод тамос гиранд.

Ва дар айни замон шумо ҷадвалҳои масиркунии кӯҳна доред (kube-proxy навҳоро зеркашӣ карда наметавонад) ва ҳеҷ гуна подкастҳои иловагӣ (kubelet наметавонад навсозиро дархост кунад).

Ҳатто бадтараш, агар Кубернетес гиреҳро набинад, онро ҳамчун ятим қайд мекунад ва подкҳои гумшударо ба гиреҳҳои мавҷуда тақсим мекунад.

Дар натича шумо ду баробар зиёд курак доред.

Агар шумо дар як минтақа як сервери асосӣ созед, дар базаи etcd бо алгоритми консенсус мушкилот пайдо мешавад. (тақрибан. ред. - Дар асл, базаи etcd набояд дар серверҳои асосӣ ҷойгир бошад. Он метавонад дар як гурӯҳи алоҳидаи серверҳо дар як минтақа иҷро карда шавад. Бо вуҷуди ин, дар айни замон нуқтаи нокомии кластерро гирифт. Аммо зуд.)

etcd истифода мебарад алгоритми raftПеш аз навиштани он ба диск мувофиқат кунед.
Яъне, пеш аз он ки давлат ба etcd навишта шавад, аксари ҳолатҳо бояд ба як консенсус расиданд.

Агар таъхир дар байни мисолҳои etcd, чунон ки дар се мисоли etcd дар минтақаҳои гуногун хеле баланд шавад, барои мувофиқа кардани арзиш ва навиштани он ба диск вақти зиёд лозим мешавад.
Ин дар контроллерҳои Kubernetes низ инъикос ёфтааст.

Ба менеҷери контроллер вақти бештар лозим аст, то дар бораи тағирот маълумот гирад ва посух ба пойгоҳи додаҳо нависад.

Ва азбаски назораткунанда як не, балки якчанд аст, реаксияи занҷирӣ ба даст оварда мешавад ва тамоми кластер хеле суст ба кор шурӯъ мекунад.

etcd он қадар ҳассос ба таъхир аст, ки ҳуҷҷатҳои расмӣ ба ҷои дискҳои сахти муқаррарӣ истифода бурдани SSD-ро тавсия медиҳанд.

Дар айни замон намунаҳои хуби шабакаи калон барои як кластер вуҷуд надоранд.

Асосан, ҷомеаи таҳиягарон ва гурӯҳи SIG-кластери кӯшиш мекунанд, ки чӣ гуна кластерҳоро ҳамон тавре ки Кубернетес контейнерҳоро ташкил мекунад, ташкил кунад.

Варианти 1: кластерҳои федератсия бо kubefed

Ҷавоби расмӣ аз кластери SIG - kubefed2, версияи нави муштарӣ ва оператори федератсияи аслии kube.

Бори аввал, мо кӯшиш кардем, ки маҷмӯи кластерҳоро ҳамчун объекти ягона бо истифода аз асбоби федератсияи kube идора кунем.

Ибтидо хуб буд, вале дар охир федерацияи кубе оммавй на-гардид, зеро вай на хамаи захирахоро дастгирй мекард.

Он маводҳо ва хидматҳои федератсияро дастгирӣ мекард, аммо на StatefulSets, масалан.
Инчунин, конфигуратсияи федератсия дар шакли эзоҳҳо гузашт ва чандир набуд.

Тасаввур кунед, ки чӣ тавр шумо метавонед тақсимоти репликаҳоро барои ҳар як кластер дар федератсия бо истифода аз як эзоҳ тавсиф кунед.

Маьлум шуд, ки ин як бесарусомонии комил будааст.

SIG-кластери пас аз kubefed v1 кори хуб кард ва тасмим гирифт, ки ба мушкилот аз як паҳлӯи дигар муносибат кунад.

Ба ҷои тавзеҳот, онҳо тасмим гирифтанд, ки контроллереро, ки дар кластерҳо насб шудааст, озод кунанд. Он метавонад бо истифода аз таърифҳои захираҳои фармоишӣ (Custom Resource Definition, CRD) танзим карда шавад.

Барои ҳар як захирае, ки федератсия мешавад, шумо дар се бахш таърифи фармоишии CRD доред:

  • таърифи стандартии захира, ба монанди ҷойгиркунӣ;
  • фасли placement, ки дар он шумо муайян мекунед, ки захира чӣ гуна дар федератсия тақсим карда мешавад;
  • фасли 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

Тавре ки шумо мебинед, таъминот ба ду кластер тақсим мешавад: cluster1 и cluster2.

Кластери якум се репликаро таъмин мекунад ва дуюмаш арзиши 5 дорад.

Агар ба шумо назорати бештар аз болои шумораи репликаҳо лозим бошад, kubefed2 объекти нави ReplicaSchedulingPreference медиҳад, ки дар он репликаҳоро вазн кардан мумкин аст:

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

Сохтори CRD ва API ҳанӯз комилан омода нестанд ва дар анбори расмии лоиҳа кори фаъол идома дорад.

Ба kubefed2 нигоҳ кунед, аммо дар хотир доред, ки он ҳанӯз барои муҳити истеҳсолӣ кофӣ нест.

Маълумоти бештарро дар бораи kubefed2 аз мақолаи расмӣ дар бораи kubefed2 дар блоги Kubernetes ва анбори расмии лоиҳаи kubefed.

Варианти 2: Clustering Booking.com Style

Таҳиягарони Booking.com бо kubefed v2 сару кор надоштанд, аммо онҳо бо Shipper, оператор барои таҳвил дар кластерҳои сершумор, минтақаҳои гуногун ва абрҳои сершумор пайдо шуданд.

Интиқолдиҳанда то ҳадде ба kubefed2 монанд аст.

Ҳарду воситаҳо ба шумо имкон медиҳанд, ки стратегияи ҷойгиркунии бисёр кластерии худро танзим кунед (кадом кластерҳо истифода мешаванд ва чанд нусхаи онҳо доранд).

аммо Вазифаи интиқолдиҳанда кам кардани хатари хатогиҳои интиқол мебошад.

Дар Shipper шумо метавонед як қатор қадамҳоро муайян кунед, ки тақсимоти репликаҳоро байни ҷойгиркунии қаблӣ ва ҷорӣ ва ҳаҷми трафики воридотӣ тавсиф мекунанд.

Вақте ки шумо захираро ба кластер тела медиҳед, контролери интиқолдиҳанда тадриҷан ин тағиротро ба ҳамаи кластерҳои федератсия ҷойгир мекунад.

Инчунин интиқолдиҳанда хеле маҳдуд аст.

Барои мисол, он диаграммаҳои Ҳелмро ҳамчун вуруд мегирад ва захираҳои ванилинро дастгирӣ намекунад.
Дар маҷмӯъ, Shipper чунин кор мекунад.

Ба ҷои тақсимоти стандартӣ, шумо бояд манбаи барномаеро эҷод кунед, ки диаграммаи 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

Интиқолдиҳанда як варианти хуб барои идоракунии кластерҳои сершумор аст, аммо робитаи наздики он бо Helm танҳо халал мерасонад.

Чӣ мешавад, агар ҳамаи мо аз Ҳелм гузарем мутобиқ кардан ё капитан?

Дар бораи Shipper ва фалсафаи ӯ бештар маълумот гиред ин хабари расмии матбуот.

Агар шумо хоҳед, ки кодро кобед, ба анбори расмии лоиҳа равед.

Варианти 3: якҷоякунии кластери "ҷодугарӣ"

Kubefed v2 ва Shipper бо федератсияи кластерҳо тавассути таъмин намудани захираҳои нав ба кластерҳо тавассути таърифи захираҳои фармоишӣ кор мекунанд.

Аммо чӣ мешавад, агар шумо нахоҳед, ки ҳамаи маводҳо, StatefulSets, DaemonSets ва ғайраро аз нав нависед, то якҷоя шаванд?

Чӣ гуна кластери мавҷударо бидуни тағир додани YAML ба федератсия дохил кардан мумкин аст?

multi-cluster-scheduler як лоиҳаи Admirality аст, ки бо банақшагирии сарбории корӣ дар кластерҳо сарукор дорад.

Аммо ба ҷои ихтирои як роҳи нави ҳамкорӣ бо кластер ва печонидани захираҳо дар таърифҳои фармоишӣ, банақшагирии бисёркастерӣ ба давраи стандартии Kubernetes ворид карда мешавад ва ҳама зангҳоеро, ки поддонҳоро эҷод мекунанд, бозмедорад.

Ҳар як порчаи сохташуда фавран бо думми иваз карда мешавад.

бисёр-кластер-нақша истифода мебарад қалмоқҳои веб барои тағир додани дастрасӣки зангро боздошта, думми бекорхобида созад.

Подшоҳи аслӣ аз давраи дигари банақшагирӣ мегузарад, ки дар он пас аз пурсиш дар тамоми федератсия қарори хостинг қабул карда мешавад.

Ниҳоят, поддон ба кластери мақсаднок интиқол дода мешавад.

Дар натиҷа, шумо як подтаи иловагӣ доред, ки ҳеҷ кор намекунад, танҳо ҷой мегирад.

Бартарии он дар он аст, ки ба шумо лозим нест, ки барои якҷоя кардани захираҳо захираҳои нав нависед.

Ҳар як захирае, ки подкастро эҷод мекунад, ба таври худкор барои федератсия омода аст.

Ин ҷолиб аст, зеро шумо ногаҳон захираҳоро дар якчанд минтақаҳо тақсим кардаед ва шумо пайхас накардед. Аммо, ин хеле хатарнок аст, зеро дар ин ҷо ҳама чиз ба ҷоду такя мекунад.

Аммо дар ҳоле ки интиқолдиҳанда асосан кӯшиш мекунад, ки таъсири интиқолро коҳиш диҳад, ҷадвали бисёр кластер умумӣтар аст ва шояд барои корҳои гурӯҳӣ мувофиқтар аст.

Он механизми пешқадами тадриҷан интиқол надорад.

Маълумоти бештарро дар бораи банақшагирии бисёр кластер дар ин ҷо пайдо кардан мумкин аст саҳифаи расмии репозиторий.

Агар шумо хоҳед, ки дар бораи банақшагирии бисёр кластер дар амал хонед, Admiralty дорад мисоли ҷолиби истифода бо Argo - ҷараёнҳои корӣ, рӯйдодҳо, CI ва CD Kubernetes.

Дигар воситаҳо ва ҳалли онҳо

Пайвастшавӣ ва идоракунии кластерҳои сершумор кори мураккаб аст ва ҳеҷ гуна ҳалли ягона вуҷуд надорад.

Агар шумо хоҳед, ки дар бораи ин мавзӯъ маълумоти бештар гиред, дар ин ҷо баъзе захираҳо мавҷуданд:

Ин ҳама барои имрӯз аст

Ташаккур барои хондан то охир!

Агар шумо медонед, ки чӣ тавр ба таври самаранок пайваст кардани кластерҳои сершумор, ба мо бигӯед.

Мо усули шуморо ба истинодҳо илова мекунем.

Ташаккури махсус ба Крис Несбит-Смит (Крис Несбитт-Смит) ва Винсент де Сме (Винсент Де Смет) (ба муҳандиси эътимоднокӣ дар swatmobile.io) барои хондани мақола ва мубодилаи маълумоти муфид дар бораи чӣ гуна кор кардани федератсия.

Манбаъ: will.com

Илова Эзоҳ