Vashandi veKubernetes: maitiro ekumhanyisa maapplication

Dambudziko nemashandisirwo ane hunyanzvi muKubernetes

Kugadzirisa, kutanga uye kuwedzera kuyera kwekushandisa uye masevhisi zviri nyore kana zvasvika kune nyaya dzakarongedzerwa sedzisingaverengeki, i.e. pasina kuchengetedza data. Zviri nyore kumhanyisa masevhisi akadaro muKubernetes, uchishandisa ayo akajairwa APIs, nekuti zvese zvinoitika "kunze kwebhokisi": zvinoenderana neyakajairwa magadzirirwo, pasina kubatanidza chero zvakatemwa kana mashiripiti.

Zvichitaurwa zviri nyore, kuvhura mamwe makopi mashanu eiyo backend muPHP/Ruby/Python mune sumbu remidziyo, unongoda kuseta nyowani sevha kashanu uye kukopa masosi. Sezvo zvese zviri zviviri kodhi kodhi uye init script zviri pamufananidzo, kuyera application isina chirevo inova yekutanga. Sezvo mafeni emidziyo uye microservice architecture inonyatsoziva, kuoma kunotanga stateful apps, i.e. nekushingirira kwedata senge dhatabhesi uye cache (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). Izvi zvinoshanda kune ese ari maviri software anoshandisa akazvimirira quorum cluster (semuenzaniso, Percona XtraDB neCassandra), uye software inoda akasiyana manejimendi ekushandisa (seRedis, MySQL, PostgreSQL...).

Zvinetso zvinomuka nekuti iyo kodhi kodhi uye kutanga sevhisi hazvichakwane - unofanirwa kuita mamwe matanho. Pashoma, kopira iyo data uye / kana kujoinha sumbu. Zvakanyanya, masevhisi aya anoda nzwisiso yekuyera zvakanaka, kugadzirisa uye kugadzirisa zvakare pasina kurasikirwa nedata kana kusawanikwa kwenguva pfupi. Kutora zvinodiwa izvi kunonzi "ruzivo rwekushanda".

CoreOS Operators

Kuti "chirongwa" ruzivo rwekushanda, kupera kwegore rapfuura chirongwa cheCoreOS kuunzwa "chikamu chitsva chesoftware" yeKubernetes chikuva - Vashandisi (kubva kuChirungu "operation", i.e. "operation").

Vashandi vanoshandisa uye nekuwedzera hukuru hwekugona kweKubernetes (incl. StatefulSets, ona mutsauko uri pazasi) bvumira nyanzvi dzeDevOps kuti dziwedzere ruzivo rwekushandisa kune kodhi yekushandisa.

Chinangwa cheMushandi -Ipa mushandisi API iyo inokutendera iwe kuti utore akawanda ane hunyanzvi ekushandisa masangano muKubernetes cluster, usingafunge nezve zviri pasi pehodhi (ndeipi data uye zvekuita nayo, ndeipi mirairo ichiri kuda kuurayiwa kuchengetedza boka racho. ) Muchokwadi, iyo Operator yakagadzirirwa kurerutsa basa nekushandisa mukati mesumbu zvakanyanya sezvinobvira, kuita otomatiki kuitiswa kwemabasa ekushanda ayo aimbofanirwa kugadziriswa nemaoko.

Mashandiro Anoita Vashandisi

ReplicaSets Kubernetes inobvumidza iwe kuti utaure nhamba yaunoda yeanomhanya pods, uye vanodzora vanovimbisa kuti nhamba yavo inochengetwa (nekugadzira nekudzima mapodhi). Mushandi anoshanda nenzira yakafanana, achiwedzera seti yeruzivo rwekushandisa kune yakajairwa Kubernetes sosi uye controller iyo inobvumidza iwe kuita mamwe zviito kutsigira nhamba inodiwa yezvishandiso zvekushandisa.

Izvi zvakasiyana sei ne StatefulSets, yakagadzirirwa zvikumbiro zvinoda kuti cluster ivape zviwanikwa zvehurumende zvakadai sekuchengetedza data kana static IPs? Kune akadai maapplication, Operators anogona kushandisa StatefulSets (panzvimbo ReplicaSets) sehwaro, kupa kuwedzera otomatiki: ita zviito zvinodikanwa kana paine tsaona, gadzira ma backups, gadziridza zvigadziriso, nezvimwe.

Uye saka, zvese izvi zvinoshanda sei? Mushandi ndiye maneja daemon iyo:

  1. inonyoresa kune chiitiko API muKubernetes;
  2. inogamuchira kubva kwairi data nezve system (nezve yayo ReplicaSets, pods, Services zvichingoenda zvakadaro.);
  3. inogamuchira data nezve Wechitatu Zviwanikwa (ona mienzaniso pazasi);
  4. inopindirana nechitarisiko/shanduko Wechitatu Zviwanikwa (somuenzaniso, kuchinja ukuru, kushandura shanduro, nezvimwewo);
  5. inobata kune shanduko mumamiriro ehurongwa (nezve ReplicaSets, pods, Services zvichingoenda zvakadaro.);
  6. chinonyanya kukosha:
    1. inodaidza Kubernetes API kugadzira zvese zvainoda (zvakare, zvayo ReplicaSets, pods, Services...),
    2. inoita mamwe mashiripiti (kurerutsa, unogona kufunga kuti Operator inopinda mumapodhi pachayo uye inodaidza mirairo, semuenzaniso, kujoinha sumbu kana kusimudzira fomati yedata paunenge uchivandudza shanduro).

Vashandi veKubernetes: maitiro ekumhanyisa maapplication
Muchokwadi, sezvazvinoonekwa kubva pamufananidzo, yakaparadzana application inongowedzerwa kuKubernetes (yakajairika Deployment с ReplicaSet), iyo inonzi Operator. Iyo inogara mune yakajairwa pod (kazhinji ingori imwe chete) uye, sekutonga, inotarisira chete yayo Namespace. Iyi opareta application inoshandisa API yayo - kunyangwe isiri yakananga, asi kuburikidza Wechitatu Zviwanikwa in Kubernetes.

Saka, mushure mekugadzira mukati Namespace Operator, tinogona kuwedzera kwairi Wechitatu Zviwanikwa.

Muenzaniso we etcd (ona pazasi kuti uwane rumwe ruzivo):

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

Muenzaniso weElasticsearch:

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

Zvinodiwa kune Vanoshanda

CoreOS yakagadzira iwo makuru mapatani akawanikwa nevainjiniya vachiri kushanda paOperators. Kunyangwe chokwadi chekuti maOperators ese ari ega (akagadzirirwa imwe application ane maitiro ayo uye zvaanoda), kusikwa kwavo kunofanirwa kuve kwakavakirwa pamhando yehurongwa hunoisa zvinotevera zvinodiwa:

  1. Kuiswa kunofanira kuitwa kuburikidza neimwe Deployment: kubectl kugadzira -f SOME_OPERATOR_URL/deployment.yaml - uye hazvidi zvimwe zviito.
  2. Kana uchiisa Operator muKubernetes, itsva yechitatu-bato mhando inofanirwa kugadzirwa (ThirdPartyResource). Kuti utange zviitiko zvemashandisirwo (makesi emapoka) uye uwedzere kuzvibata (kuvandudza mavhezheni, kudzoreredza, nezvimwewo), mushandisi achashandisa iyi mhando.
  3. Pese pazvinogoneka, iwe unofanirwa kushandisa maprimitives akavakirwa muKubernetes, senge Services ΠΈ ReplicaSetskushandisa kodhi yakaedzwa uye inonzwisisika.
  4. Inoda kuenderana kumashure kweVashandi uye kutsigirwa kweshanduro dzekare dzezviwanikwa zvakagadzirwa nemushandisi.
  5. Kana iyo Operator ikabviswa, iyo application pachayo inofanirwa kuramba ichishanda pasina shanduko.
  6. Vashandisi vanofanirwa kukwanisa kutsanangura yaidiwa application vhezheni uye orchestrate application shanduro shanduro. Kushaikwa kwesoftware inogadziridza ndiyo yakajairika sosi yekushanda nekuchengetedza matambudziko, saka Vashandisi vanofanirwa kubatsira vashandisi mune iyi nyaya.
  7. Vashandi vanofanirwa kuyedzwa nechishandiso chakaita seChaos Monkey, chinotaridza zvinogona kutadza mumapods, zvigadziriso, uye network.

etcd Operator

Operator Implementation Muenzaniso - etcd Operator, yakagadzirirwa pazuva rekuziviswa kwepfungwa iyi. Iyo etcd cluster kumisikidzwa inogona kuve yakaoma nekuda kwechido chekuchengetedza quorum, kukosha kwekugadzirisazve nhengo yeboka, kugadzira backups, nezvimwe. Semuyenzaniso, kuyera nemaoko etcd cluster zvinoreva kuti unofanira kugadzira zita reDNS renhengo itsva yecluster, tanga new etcd entity, uye zivisa cluster nezvenhengo itsva (etcdctl member add) Panyaya yeOperator, mushandisi anongoda kushandura saizi yemasumbu - zvimwe zvese zvichaitika otomatiki.

Uye sezvo etcd yakagadzirwawo muCoreOS, zvaive zvine musoro kuona Operator yayo kutanga. Anoshanda sei? Operator logic etcd inosarudzwa nezvikamu zvitatu:

  1. Cherechedza. Mushandi anotarisisa mamiriro eboka achishandisa Kubernetes API.
  2. Analysis. Inowana misiyano pakati pechinzvimbo chazvino neinodiwa (inotsanangurwa nemushandisi kumisikidzwa).
  3. Chiito. Inogadzirisa misiyano yakaonekwa uchishandisa etcd uye/kana Kubernetes sevhisi APIs.

Vashandi veKubernetes: maitiro ekumhanyisa maapplication

Kuti uite izvi zvinonzwisisika, mabasa akagadzirirwa muOperator Gadzira/Kuparadza (kugadzira uye kudzima etcd cluster nhengo) uye Resize (kuchinja kwenhamba yenhengo dzecluster). Kurongeka kwekushanda kwayo kwakatariswa uchishandisa utility yakagadzirwa mumufananidzo weChaos Monkey kubva kuNetflix, i.e. kuuraya etcd pods zvisina tsarukano.

Kushanda kwakazara kwe etcd, Operator inopa mamwe maficha: negadziriro yeparutivi (otomatiki uye isingaonekwe kune vashandisi kugadzirwa kwemakopi ekuchengetedza - mune iyo config zvakakwana kuti uone kuti kangani kuti vagadzire uye vangani vachengete - uye kunotevera kudzoreredza data kubva kwavari) uye ndiwedzere (kugadzirisa etcd kuisirwa pasina nguva yekudzikira).

Kushanda neOperator kunoratidzika sei?

$ 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

Chimiro chazvino che etcd Operator ivhezheni yebeta, inoda Kubernetes 1.5.3+ uye etcd 3.0+ kuti ishande. Kunobva kodhi uye zvinyorwa (kusanganisira mirairo yekushandisa) zviripo pa GitHub.

Mumwe muenzaniso kuita kubva kuCoreOS wakagadzirwa - Prometheus Operator, asi ichiri mune alpha vhezheni (kwete ese akarongwa maficha aitwa).

Mamiriro uye tarisiro

Mwedzi mishanu yapfuura kubva pakaziviswa Kubernetes Operators. Pachine maviri chete ekushandisa anowanikwa mune yepamutemo CoreOS repository (ye etcd uye Prometheus). Vese vari vaviri havasati vasvika kune yavo yakagadzikana shanduro, asi kuzvipira kunoonekwa zuva nezuva.

Vagadziri vacho vanofungidzira "ramangwana iro vashandisi vanoisa Postgres Operators, Cassandra Operators kana Redis Operators pamasumbu avo eKubernetes uye vashande pamwe neanokatyamadza masangano ezvishandiso izvi zviri nyore sekutumira replicas yeasingaverengeki mawebhu application nhasi." Chekutanga Vashandi vanobva kune vechitatu vagadziri zvakatanga kuoneka:

Pamusangano mukuru weEuropean software weFOSDEM, wakaitika muna Kukadzi 2017 muBrussels, Josh Wood anobva kuCoreOS akazivisa Vashandisi muBrussels. Chirevo (vhidhiyo inowanikwa pane chinongedzo!), Iyo inofanirwa kubatsira mukukura kwekuzivikanwa kweiyi pfungwa munharaunda yakakura yeOpen Source.

PS Ndatenda nekufarira kwako muchinyorwa! Nyorera kune hub yedu, kuti usarasikirwe nezvinhu zvitsva uye mabikirwo paDevOps uye GNU/Linux system manejimendi - tichazvishambadza nguva nenguva!

Source: www.habr.com

Voeg