Како повезати Кубернетес кластере у различитим центрима података

Како повезати Кубернетес кластере у различитим центрима података
Добродошли у нашу серију Кубернетес Куицк Старт. Ово је редовна рубрика са најзанимљивијим питањима која добијамо онлајн и на нашим тренинзима. Одговори стручњака за Кубернетес.

Данашњи стручњак је Данијел Поленчик (Даниеле Поленчић). Данијел ради као инструктор и програмер софтвера у Леарнк8с.

Ако желите одговор на ваше питање у следећем посту, контактирајте нас путем е-поште или Твиттер: @леарнк8с.

Пропустили сте претходне постове? Пронађите их овде.

Како повезати Кубернетес кластере у различитим центрима података?

Укратко: Кубефед в2 стиже ускоро, а такође препоручујем читање о Схиппер и пројекат мулти-цлустер-сцхедулер.

Често се инфраструктура реплицира и дистрибуира у различитим регионима, посебно у контролисаним окружењима.

Ако је један регион недоступан, саобраћај се преусмерава на други како би се избегли прекиди.

Са Кубернетес-ом можете користити сличну стратегију и дистрибуирати радна оптерећења у различитим регионима.

Можете имати један или више кластера по тиму, региону, окружењу или комбинацију ових елемената.

Ваши кластери могу бити хостовани у различитим облацима и на локалном нивоу.

Али како планирате инфраструктуру за такво географско ширење?
Да ли треба да креирате један велики кластер за неколико окружења у облаку преко једне мреже?
Или имате много малих кластера и пронађите начин да их контролишете и синхронизујете?

Један кластер лидера

Стварање једног кластера преко једне мреже није тако лако.

Замислите да имате несрећу, веза између сегмената кластера је изгубљена.

Ако имате један главни сервер, половина ресурса неће моћи да прима нове команде јер неће моћи да контактира мастер.

И у исто време имате старе табеле рутирања (kube-proxy не може да преузме нове) и нема додатних подова (кубелет не може да захтева ажурирања).

Да ствар буде гора, ако Кубернетес не види чвор, означава га као сироче и дистрибуира модуле који недостају постојећим чворовима.

Као резултат, имате двоструко више махуна.

Ако направите један главни сервер за сваки регион, биће проблема са алгоритмом консензуса у етцд бази података. (прибл. ед. — У ствари, етцд база података не мора нужно да се налази на главним серверима. Може се покренути на посебној групи сервера у истом региону. Истина, у исто време добијање тачке неуспеха кластера. Али брзо.)

етцд користи рафт алгоритамда преговарате о вредности пре него што је запишете на диск.
То јест, већина случајева мора постићи консензус пре него што се држава може писати итд.

Ако се кашњење између етцд инстанци драматично повећа, као што је случај са три етцд инстанце у различитим регионима, потребно је много времена да се договори вредност и запише на диск.
Ово се огледа у Кубернетес контролерима.

Менаџер контролора треба више времена да сазна о промени и напише одговор у базу података.

А пошто не постоји један контролор, већ неколико, долази до ланчане реакције и цео кластер почиње да ради веома споро.

етцд је толико осетљив на кашњење да Званична документација препоручује коришћење ССД-а уместо обичних чврстих дискова.

Тренутно нема добрих примера велике мреже за један кластер.

У суштини, заједница програмера и група СИГ-кластера покушавају да схвате како да оркестрирају кластере на исти начин на који Кубернетес оркестрира контејнере.

Опција 1: кластер федерација са кубефед-ом

Званичан одговор СИГ-кластера - кубефед2, нова верзија оригиналног клијента и оператера кубе федерације.

По први пут смо покушали да управљамо колекцијом кластера као једним објектом користећи алатку за федерацију кубе.

Почетак је био добар, али на крају кубе федерација никада није постала популарна јер није подржавала све ресурсе.

Подржавао је федералне испоруке и услуге, али не и СтатефулСетс, на пример.
Такође, конфигурација федерације је преношена у облику напомена и није била флексибилна.

Замислите како бисте могли да опишете партиционисање реплике за сваки кластер у федерацији користећи само напомене.

Испоставило се да је то био потпуни неред.

СИГ-кластер је урадио доста посла након кубефед в1 и одлучио је да приступи проблему из другог угла.

Уместо напомена, одлучили су да издају контролер који је инсталиран на кластерима. Може се прилагодити коришћењем прилагођених дефиниција ресурса (ЦРД).

За сваки ресурс који ће бити део федерације, имате прилагођену ЦРД дефиницију са три одељка:

  • стандардна дефиниција ресурса, на пример распоређивање;
  • одељак 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.

Ако вам је потребна већа контрола над бројем реплика, кубефед2 обезбеђује нови објекат РеплицаСцхедулингПреференце где се реплике могу мерити:

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

ЦРД структура и АПИ још увек нису сасвим спремни, а активан је рад у званичном репозиторијуму пројекта.

Пазите на кубефед2, али запамтите да још није погодан за производњу.

Сазнајте више о кубефед2 од званични чланак о кубефед2 у блогу о Кубернетесу и у званични репозиториј пројекта кубефед.

Опција 2: комбиновање кластера у стилу Боокинг.цом

Програмери Боокинг.цом-а нису радили на кубефед в2, али су смислили Схиппер - оператера за испоруку на неколико кластера, у неколико региона и у неколико облака.

Схиппер донекле сличан кубефед2.

Оба алата вам омогућавају да прилагодите своју стратегију постављања више кластера (који кластери се користе и колико реплика имају).

Али Циљ пошиљаоца је да смањи ризик од грешака током испоруке.

У Схиппер-у можете дефинисати низ корака који описују поделу реплика између претходне и тренутне примене и обима долазног саобраћаја.

Када гурнете ресурс у кластер, контролер отпремника постепено уводи ту промену у све спојене кластере.

Такође, пошиљалац је веома ограничен.

На пример, прихвата карте кормила као улаз и не подржава ресурсе ваниле.
Уопштено говорећи, Схиппер функционише овако.

Уместо стандардне испоруке, потребно је да креирате ресурс апликације који укључује Хелм графикон:

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

Схиппер је добра опција за управљање вишеструким кластерима, али његова блиска веза са Хелмом само смета.

Шта ако сви пређемо са Хелма на прилагоди или цапитан?

Сазнајте више о Схиппер-у и његовој филозофији на ово званично саопштење за јавност.

Ако желите да копате по коду, идите до званичног спремишта пројекта.

Опција 3: „магично“ спајање кластера

Кубефед в2 и Схиппер раде са федерацијом кластера, обезбеђујући нове ресурсе кластерима кроз прилагођену дефиницију ресурса.

Али шта ако не желите да препишете све испоруке, СтатефулСетс, ДаемонСетс, итд. за спајање?

Како укључити постојећи кластер у федерацију без промене ИАМЛ-а?

мулти-цлустер-сцхедулер је пројекат Адмиралите, који се бави распоређивањем оптерећења на кластерима.

Али уместо да смисли нови начин за интеракцију са кластером и умотавање ресурса у прилагођене дефиниције, мулти-цлустер-сцхедулер је уграђен у стандардни животни циклус Кубернетес-а и пресреће све позиве који креирају подове.

Свака креирана махуна се одмах замењује лутком.

мулти-цлустер-сцхедулер користи вебхоокс за модификацију приступада пресретне позив и створи лажну подлогу.

Оригинална група пролази кроз још један циклус планирања где се, након анкетирања целе федерације, доноси одлука о пласману.

Коначно, махуна се испоручује у циљни кластер.

Као резултат, имате додатну капсулу која не ради ништа, само заузима простор.

Предност је што нисте морали да пишете нове ресурсе да бисте комбиновали залихе.

Сваки ресурс који креира под је аутоматски спреман за спајање.

Ово је занимљиво, јер одједном имате залихе распоређене у неколико региона, а нисте ни приметили. Међутим, ово је прилично ризично, јер овде све почива на магији.

Али док Схиппер покушава углавном да ублажи утицај испорука, планер са више кластера се бави општијим задацима и можда је боље прилагођен за групне послове.

Нема напредни механизам постепеног испоруке.

Више о мулти-цлустер-сцхедулеру можете пронаћи на званична страница репозиторијума.

Ако желите да читате о мулти-кластер-планеру у акцији, Адмиралитет има занимљив случај употребе са Аргом — токови посла, догађаји, ЦИ и ЦД Кубернетес.

Други алати и решења

Повезивање и управљање више кластера је сложен задатак и не постоји универзално решење.

Ако желите даље да истражите ову тему, ево неких ресурса:

То је све за данас

Хвала што сте прочитали до краја!

Ако знате како да ефикасније повежете више кластера, реците нам.

Ваш метод ћемо додати на линкове.

Посебно хвала Крису Несбит-Смиту (Цхрис Несбитт-Смитх) и Винцент де Сме (Винцент Де Смет) (инжењер поузданости у сватмобиле.ио) за читање чланка и дељење корисних информација о томе како федерација функционише.

Извор: ввв.хабр.цом

Додај коментар