Operatorên ji bo Kubernetes: Meriv çawa serîlêdanên dewletî dimeşîne

Pirsgirêka serîlêdanên dewletî yên li Kubernetes

Veavakirin, destpêkirin û pîvandina zêde ya serîlêdan û karûbaran hêsan e dema ku ew tê ser dozên ku wekî bêdewlet têne dabeş kirin, ango. bêyî tomarkirina daneyan. Meriv karûbarên weha li Kubernetes-ê bi karanîna API-yên xwe yên standard rehet e, ji ber ku her tişt "ji hundurê qutikê" diqewime: li gorî mîhengên standard, bêyî ku ti taybetmendî û sêrbaziyê têkildar bike.

Bi hêsanî, ji bo destpêkirina pênc kopiyên din ên paşîn di PHP / Ruby / Python de di komek konteyneran de, hûn tenê hewce ne ku serverek nû 5 caran saz bikin û çavkaniyan kopî bikin. Ji ber ku hem çavkanî û hem jî skrîpta destpêkê di wêneyê de ne, pîvandina serîlêdanek bêdewlet bi tevahî bingehîn dibe. Wekî ku temaşevanên konteyneran û mîmariya mîkroxizmetê baş dizanin, dijwarî bi dest pê dike sepanên dewletî, yanî bi domdariya daneyê yên wekî databas û cache (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). Ev hem ji nermalava ku serbixwe komek quorum pêk tîne (mînak, Percona XtraDB û Cassandra), hem jî ji nermalava ku hewceyê karûbarên rêveberiyê yên cihêreng hewce dike (wek Redis, MySQL, PostgreSQL...).

Zehmetî derdikevin ji ber ku koda çavkaniyê û destpêkirina karûbarê êdî ne bes e - hûn hewce ne ku hin gavên din jî bikin. Bi kêmanî, daneyan kopî bikin û/an jî tevlî komê bibin. Zêdetir, van karûbaran hewceyê têgihiştinê ye ka meriv çawa bi rêkûpêk pîvandin, nûvekirin û veavakirina wan bêyî windabûna daneyê an tunebûna demkî hewce dike. Ji girtina van hewcedarîyan re "zanîna operasyonê" tê gotin.

Operatorên CoreOS

Ji bo "bername"kirina zanîna xebitandinê, dawiya sala borî projeya CoreOS danasîn "Çînek nû ya nermalavê" ji bo platforma Kubernetes - Operator (ji Englishngilîzî "operasyon", ango "operasyon").

Operatorên ku kapasîteyên bingehîn ên Kubernetes bikar tînin û dirêj dikin (di nav de. StatefulSets, cihêrengiya jêrîn bibînin) destûr bidin pisporên DevOps ku zanîna xebitandinê li koda serîlêdanê zêde bikin.

Armanca Operatorê - API-yek ji bikarhênerê re peyda bike ku destûrê dide te ku hûn di komikek Kubernetes de gelek sazûmanên serîlêdanê yên dewletî birêve bibin, bêyî ku bifikire ka çi di bin kavilê de ye (çi dane û bi wê re çi bike, çi ferman hîn jî hewce ne ku bêne darve kirin da ku komê biparêze ). Di rastiyê de, Operator ji bo hêsankirina xebata bi serîlêdanê di nav komê de bi qasî ku gengaz e, otomatîzekirina pêkanîna karên operasyonê yên ku berê diviyabû bi destan werin çareser kirin, hatî çêkirin.

Çawa Operator Kar

ReplicaSets Kubernetes destûrê dide te ku hûn jimareya xwestî ya podên xebitandinê diyar bikin, û kontrolker piştrast dikin ku hejmara wan tê domandin (bi afirandin û jêbirina podan). Operatorek bi heman rengî dixebite, komek zanîna xebitandinê li çavkaniyek standard û kontrolkerek Kubernetes zêde dike ku dihêle hûn çalakiyên din pêk bînin da ku hejmareka pêwîst a saziyên serîlêdanê piştgirî bikin.

Ev çawa ji hev cuda ye StatefulSets, ji bo serîlêdanên ku ji komê hewce dike ku çavkaniyên dewletî yên wekî hilanîna daneyan an IP-yên statîk peyda bike hatî çêkirin? Ji bo serîlêdanên weha, Operator dikarin bikar bînin StatefulSets (li şûna ReplicaSets) wek bingeh, pêşkêşî automation zêde: Di bûyera qezayê de çalakiyên pêwîst pêk bînin, paşvekêşan çêbikin, veavakirinê nûve bikin, hwd.

Û vî awayî, ev hemû çawa dixebite? Operator daemonek rêveber e ku:

  1. di Kubernetes de beşdarî API-ya bûyerê dibe;
  2. jê re daneyên di derbarê pergalê de distîne (li ser wê ReplicaSets, xernûfa, Services wate ya vê çîye.);
  3. di derbarê de daneyan distîne Çavkaniyên Partiya Sêyemîn (mînakên jêrîn binêrin);
  4. bertek nîşanî xuya/guhertinê dide Çavkaniyên Partiya Sêyemîn (mînak, ji bo guhertina mezinahiyê, guhertoyê biguherînin, û hwd.);
  5. bertek nîşanî guhertinên di rewşa pergalê de (derbarê wê ReplicaSets, xernûfa, Services wate ya vê çîye.);
  6. herî girîng:
    1. gazî Kubernetes API dike ku her tiştê ku ew hewce dike biafirîne (dîsa, ya xwe ReplicaSets, xernûfa, Services...),
    2. hin sêrbaziyê dike (ji bo hêsankirinê, hûn dikarin bifikirin ku Operator bixwe diçe nav potan û fermanan gazî dike, mînakî, ji bo ku beşdarî komekê bibe an dema nûvekirina guhertoyek formata daneyê nûve bike).

Operatorên ji bo Kubernetes: Meriv çawa serîlêdanên dewletî dimeşîne
Bi rastî, wekî ku ji wêneyê tê dîtin, serîlêdanek cihêreng bi tenê li Kubernetes tê zêdekirin (a rêkûpêk Dêrîn с ReplicaSet), ku jê re Operator tê gotin. Ew di qulikek asayî de (bi gelemperî tenê yek) dijî û, wekî qaîdeyek, tenê ji wê berpirsiyar e Navdêr. Vê serîlêdana operatorê API-ya xwe bicîh tîne - her çend ne rasterast, lê bi navgîniya Çavkaniyên Partiya Sêyemîn li Kubernetes.

Ji ber vê yekê, piştî ku me di afirand Navdêr Operator, em dikarin lê zêde bikin Çavkaniyên Partiya Sêyemîn.

Mînak ji bo etcd (ji bo hûragahiyan li jêr binêre):

apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
  name: example-etcd-cluster
spec:
  size: 3
  version: 3.1.0

Mînak ji bo Elasticsearch:

apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
  name: example-es-cluster
spec:
  client-node-replicas: 3
  master-node-replicas: 2
  data-node-replicas: 3
  zones:
  - us-east-1c
  - us-east-1d
  - us-east-1e
  data-volume-size: 10Gi
  java-options: "-Xms1024m -Xmx1024m"
  snapshot:
    scheduler-enabled: true
    bucket-name: elasticsnapshots99
    cron-schedule: "@every 2m"
  storage:
    type: gp2
    storage-class-provisioner: kubernetes.io/aws-ebs

Pêdiviyên ji bo Operatoran

CoreOS qalibên sereke yên ku ji hêla endezyaran ve di dema xebitandina Operatoran de hatine wergirtin formule kirin. Tevî vê rastiyê ku hemî Operator ferdî ne (ji bo serîlêdanek taybetî bi taybetmendî û hewcedariyên xwe ve hatine afirandin), divê çêkirina wan li ser bingehek çarçoveyek ku hewcedariyên jêrîn ferz dike be:

  1. Sazkirin divê bi yekane were kirin Dêrîn: kubectl biafirîne -f SOME_OPERATOR_URL/deployment.yaml - û ne hewceyê çalakiyên zêde ne.
  2. Dema ku Operatorek li Kubernetes saz bikin, divê celebek sêyemîn-a nû were afirandin (ThirdPartyResource). Ji bo destpêkirina mînakên serîlêdanê (nimûneyên komê) û bêtir birêvebirina wan (nûvekirina guhertoyan, mezinbûn, hwd.), bikarhêner dê vê celebê bikar bîne.
  3. Kengê ku gengaz be, divê hûn primitives ku di Kubernetes de hatine çêkirin bikar bînin, wek mînak Services и ReplicaSetsku koda baş-ceribandin û têgihîştî bikar bînin.
  4. Pêdivî ye ku lihevhatina paşde ya Operatoran û piştgirî ji bo guhertoyên kevntir ên çavkaniyên ku ji hêla bikarhêner ve hatî afirandin.
  5. Ger Operator were rakirin, pêdivî ye ku serîlêdan bixwe bêyî guhertinan kar bike.
  6. Pêdivî ye ku bikarhêner bikarin guhertoya serîlêdanê ya xwestin diyar bikin û nûvekirinên guhertoya serîlêdanê organîze bikin. Nebûna nûvekirinên nermalavê çavkaniyek hevpar a pirsgirêkên xebitandinê û ewlehiyê ye, ji ber vê yekê Operator divê di vê mijarê de alîkariya bikarhêneran bikin.
  7. Pêdivî ye ku operator bi amûrek mîna Chaos Monkey re were ceribandin, ku têkçûnên potansiyel ên di pods, veavakirin û torê de nas dike.

etcd Operator

Mînak Pêkanîna Operator - Operator etcd, amade kirin di roja ragihandina vê konseptê de. Veavakirina komê etcd dikare tevlihev be ji ber hewcedariya domandina quorumê, hewcedariya ji nû ve veavakirina endametiya komê, afirandina paşgiran, hwd. Mînakî, pîvandina bi destan komek etcd tê vê wateyê ku hûn hewce ne ku ji bo endamek koma nû navek DNS biafirînin, saziyek etcd ya nû bidin destpêkirin û komê li ser endamê nû hişyar bikin (endamê etcdctl lê zêde bike). Di doza Operatorê de, bikarhêner dê tenê hewce bike ku mezinahiya komê biguhezîne - her tiştê din dê bixweber çêbibe.

Û ji ber ku etcd jî di CoreOS-ê de hate afirandin, pir maqûl bû ku meriv yekem Operatorê wê xuya bike. Ew çawa dixebite? Mantiqa operatorê hwd ji hêla sê beşan ve tê destnîşankirin:

  1. Şopgirtin. Operator bi karanîna Kubernetes API-ê rewşa komê dişopîne.
  2. Lêkolîne. Cûdahiyên di navbera statûya heyî û ya xwestinê de (ji hêla veavakirina bikarhêner ve hatî destnîşankirin) de dibîne.
  3. Çalakî. Cûdahiyên tespîtkirî bi karanîna API-yên karûbarê etcd û / an Kubernetes çareser dike.

Operatorên ji bo Kubernetes: Meriv çawa serîlêdanên dewletî dimeşîne

Ji bo pêkanîna vê mantiqê, fonksiyonên di Operatorê de hatine amadekirin Çêkirin/hilweşandin (çêkirin û jêbirina endamên komê etcd) û Resize (guhertina hejmara endamên komê). Rastiya xebata wê bi karanîna karûbarek ku bi şêwaza Chaos Monkey ji Netflix hatî afirandin hate kontrol kirin, ango. kuştina etcd pods bi korfelaqî.

Ji bo xebata tevahî etcd, Operator taybetmendiyên din peyda dike: Backup (Afirandina kopiyên paşvekişandinê ji bikarhêneran re otomatîk û nayê dîtin - di mîhengê de bes e ku meriv diyar bike ka çend caran têne çêkirin û çend têne hilanîn - û dûv re vegerandina daneyan ji wan) û upgrade (nûvekirina sazkirinên etcd bêyî demdirêj).

Karkirina bi Operator re çawa xuya dike?

$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
etcd-cluster-0000                1/1       Running   0          23s
etcd-cluster-0001                1/1       Running   0          16s
etcd-cluster-0002                1/1       Running   0          8s
etcd-cluster-backup-tool-rhygq   1/1       Running   0          18s

Rewşa heyî ya etcd Operator guhertoyek beta ye, ji bo xebitandina Kubernetes 1.5.3+ û etcd 3.0+ hewce dike. Koda çavkaniyê û belgekirin (tevî rêwerzên ji bo karanînê) hene GitHub.

Nimûneyek din pêkanîna ji CoreOS hate afirandin - Operatorê Prometheus, lê ew hîn jî di guhertoya alpha de ye (hemî taybetmendiyên plansazkirî nehatine bicîh kirin).

Rewş û perspektîvên

Di ser ragihandina Operatorên Kubernetes re 5 meh derbas bûn. Di depoya fermî ya CoreOS de (ji bo etcd û Prometheus) hîn tenê du pêkanîn hene. Her du jî hîn negihîştine guhertoyên xwe yên stabîl, lê bi rojane peyman têne dîtin.

Pêşdebiran "pêşerojek ku tê de bikarhêner Operatorên Postgres, Operatorên Cassandra an Operatorên Redis li ser komikên xwe yên Kubernetes saz dikin û bi sazûmanên berbelavkirî yên van serlêdanan re bi hêsanî wekî îro bi cîhkirina kopiyên sepanên webê yên bê dewlet re kar dikin." Yekem Operatorên ji pêşdebirên partiya sêyemîn bi rastî dest pê kir ku xuya bibe:

Di mezintirîn konferansa nermalava azad a Ewropî de FOSDEM, ku di Sibata 2017an de li Brukselê pêk hat, Josh Wood ji CoreOS Operatorên li nûçe (vîdyoyek li ser zencîreyê heye!), ku divê beşdarî mezinbûna populerbûna vê têgehê di civata Berfirehiya Çavkaniya Vekirî de bibe.

PS Spas ji bo eleqeya we di gotarê de! bibin abone li navenda me, ji bo ku li ser DevOps û rêveberiya pergala GNU/Linux-ê materyal û reçeteyên nû ji dest nekevin - em ê wan bi rêkûpêk biweşînin!

Source: www.habr.com

Add a comment