Oibreoirí do Kubernetes: conas feidhmchláir dhlisteanacha a rith

An fhadhb le hiarratais stateful i Kubernetes

Tá sé éasca feidhmchláir agus seirbhísí a chumrú, a sheoladh agus a scálú tuilleadh maidir le cásanna a aicmítear mar gan stát, i.e. gan sonraí a shábháil. Tá sé áisiúil seirbhísí den sórt sin a reáchtáil i Kubernetes, ag baint úsáide as a chuid API caighdeánach, toisc go dtarlaíonn gach rud “as an mbosca”: de réir cumraíochtaí caighdeánacha, gan aon sonraí nó draíocht a bheith i gceist.

Go simplí, chun cúig chóip eile den inneall a sheoladh i PHP/Ruby/Python i mbraisle coimeádán, ní gá duit ach freastalaí nua a chur ar bun 5 huaire agus na foinsí a chóipeáil. Ós rud é go bhfuil an cód foinse agus an script init araon san íomhá, éiríonn scála le feidhmchlár gan stát go hiomlán bunúsach. Mar is eol go maith do lucht leanúna coimeádán agus ailtireacht microservice, tosaíonn an deacracht leis apps stáit, i.e. le buanseasmhacht sonraí amhail bunachair shonraí agus taisce (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). Baineann sé seo le bogearraí a chuireann braisle córam i bhfeidhm go neamhspleách (mar shampla, Percona XtraDB agus Cassandra), agus bogearraí a éilíonn fóntais bhainistíochta ar leithligh (cosúil le Redis, MySQL, PostgreSQL ...).

Tagann deacrachtaí chun cinn toisc nach leor an cód foinse agus seoladh na seirbhíse a thuilleadh - ní mór duit roinnt céimeanna eile a dhéanamh. Ar a laghad, cóipeáil na sonraí agus/nó gabh isteach sa bhraisle. Níos cruinne, éilíonn na seirbhísí seo tuiscint ar conas iad a scála, a nuashonrú agus a athchumrú i gceart gan chailliúint sonraí nó gan a bheith ar fáil go sealadach. Tugtar “eolas oibriúcháin” ar na riachtanais seo a chur san áireamh.

Oibreoirí CoreOS

D'fhonn "clár" eolas oibriúcháin, go déanach anuraidh an tionscadal CoreOS tugadh isteach “aicme nua bogearraí” le haghaidh ardán Kubernetes - Oibreoirí (ón mBéarla “operation”, i.e. “operation”).

Oibreoirí ag baint úsáide as agus ag leathnú cumais lárnacha Kubernetes (lena n-áirítear. Sraitheanna Stáit, féach an difríocht thíos) cead a thabhairt do speisialtóirí DevOps eolas oibriúcháin a chur le cód iarratais.

Cuspóir an Oibreora - cuir API ar fáil don úsáideoir a ligeann duit aonáin fheidhmchláir iolracha a bhainistiú i mbraisle Kubernetes, gan smaoineamh ar cad atá faoin gcochall (cé na sonraí agus cad atá le déanamh leis, cad iad na horduithe atá le déanamh fós chun an braisle a chothabháil ). Go deimhin, tá an tOibreoir deartha chun an obair leis an iarratas laistigh den bhraisle a shimpliú a oiread agus is féidir, ag uathoibriú cur i gcrích tascanna oibríochtúla a bhí le réiteach de láimh roimhe seo.

Conas a Oibríonn Oibreoirí

MacasamhailSets Ligeann Kubernetes duit an líon pods reatha atá ag teastáil a shonrú, agus cinntíonn rialtóirí go gcoimeádtar a n-uimhir (trí pods a chruthú agus a scriosadh). Oibríonn Oibreoir ar an mbealach céanna, ag cur sraith eolais oibriúcháin le hacmhainn chaighdeánach Kubernetes agus rialtóir a ligeann duit gníomhartha breise a dhéanamh chun tacú leis an líon riachtanach eintiteas iarratais.

Conas atá sé seo difriúil ó Sraitheanna Stáit, atá deartha le haghaidh feidhmchláir a éilíonn ar an mbraisle acmhainní státseirbhíse a sholáthar dóibh mar stóráil sonraí nó IPanna statacha? I gcás iarratais den sórt sin, is féidir le hOibreoirí a úsáid Sraitheanna Stáit (ina ionad MacasamhailSets) mar bhonn, ag tairiscint uathoibriú breise: déan na gníomhartha riachtanacha i gcás tuairteanna, déan cúltacaí, nuashonraigh an chumraíocht, etc.

Mar sin, conas a oibríonn sé seo go léir? Is deamhan bainisteoir é an t-oibreoir:

  1. síníonn sí leis an imeacht API i Kubernetes;
  2. Faigheann uaidh sonraí faoin gcóras (faoi a MacasamhailSets, pods, Seirbhísí agus mar sin de.);
  3. fhaigheann sonraí faoi Acmhainní Tríú Páirtí (féach samplaí thíos);
  4. imoibríonn sé le cuma/athrú Acmhainní Tríú Páirtí (mar shampla, an méid a athrú, an leagan a athrú, agus mar sin de);
  5. imoibríonn sé d'athruithe ar staid an chórais (thart ar a MacasamhailSets, pods, Seirbhísí agus mar sin de.);
  6. an ceann is tábhachtaí:
    1. glaonna ar an Kubernetes API gach rud a theastaíonn uaidh a chruthú (arís, a chuid féin MacasamhailSets, pods, Seirbhísí...),
    2. go ndéanann sé roinnt draíocht (le simpliú, is féidir leat smaoineamh go dtéann an tOibreoir isteach sna pods iad féin agus glaonna orduithe, mar shampla, a bheith páirteach i mbraisle nó chun an fhormáid sonraí a uasghrádú agus leagan á nuashonrú).

Oibreoirí do Kubernetes: conas feidhmchláir dhlisteanacha a rith
Go deimhin, mar atá le feiceáil ón bpictiúr, ní chuirtear ach feidhmchlár ar leith le Kubernetes (gnáth imscaradh с MacasamhailSet), ar a dtugtar an tOibreoir. Tá sé ina chónaí i ngnáthnós pod (de ghnáth ach ceann amháin) agus, mar riail, níl sé freagrach ach as a chuid Spás Ainmneacha. Cuireann an t-iarratas oibreora seo a API i bhfeidhm - cé nach bhfuil sé go díreach, ach tríd Acmhainní Tríú Páirtí i gCubernetes.

Dá bhrí sin, tar éis dúinn a cruthaíodh i Spás Ainmneacha Oibreoir, is féidir linn cur leis Acmhainní Tríú Páirtí.

Sampla do etcd (féach thíos le haghaidh sonraí):

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

Sampla do 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

Ceanglais le haghaidh Oibreoirí

Chuir CoreOS le chéile na príomhphatrúin a fuair innealtóirí agus iad ag obair ar Oibreoirí. In ainneoin go bhfuil na hOibreoirí go léir aonair (cruthaithe le haghaidh feidhmchlár sonrach lena saintréithe agus a riachtanais féin), ní mór a gcruthú a bheith bunaithe ar chineál creata a fhorchuireann na ceanglais seo a leanas:

  1. Ní mór suiteáil a dhéanamh trí amháin imscaradh: kubectl cruthaigh -f SOME_OPERATOR_URL/deployment.yaml - agus nach bhfuil gá le gníomhartha breise.
  2. Agus Oibreoir á shuiteáil i Kubernetes, ní mór cineál nua tríú páirtí a chruthú (Acmhainn Tríú Páirtí). Chun cásanna feidhmchláir a sheoladh (cnuasach cásanna) agus chun iad a bhainistiú tuilleadh (leaganacha a nuashonrú, méid a athrú, etc.), úsáidfidh an t-úsáideoir an cineál seo.
  3. Nuair is féidir, ba cheart duit na primitives a tógadh isteach i Kubernetes a úsáid, mar shampla Seirbhísí и MacasamhailSetscód dea-thástáilte agus intuigthe a úsáid.
  4. Teastaíonn comhoiriúnacht siar na nOibreoirí agus tacaíocht do leaganacha níos sine d’acmhainní cruthaithe ag úsáideoirí.
  5. Má bhaintear an tOibreoir, ba cheart go leanfadh an t-iarratas féin ag feidhmiú gan athruithe.
  6. Ba cheart go mbeadh úsáideoirí in ann an leagan feidhmchláir atá ag teastáil a shainiú agus nuashonraithe leagan an fheidhmchláir a ordú. Is foinse coiteann d’fhadhbanna oibriúcháin agus slándála é easpa nuashonruithe bogearraí, mar sin ní mór d’Oibreoirí cabhrú le húsáideoirí san ábhar seo.
  7. Ba cheart oibreoirí a thástáil le huirlis cosúil le Chaos Monkey, a shainaithníonn teipeanna féideartha sna pods, cumraíochtaí, agus an líonra.

etcd Oibreoir

Sampla Forfheidhmithe Oibreora - srl Oibreoir, ullmhaithe ar an lá a fógraíodh an coincheap seo. Is féidir le cumraíocht braisle srld a bheith casta mar gheall ar an ngá atá le córam a choinneáil, an gá atá le ballraíocht braisle a athchumrú, cúltacaí a chruthú, etc. Mar shampla, má dhéantar braisle srld a scálú de láimh, ní mór duit ainm DNS a chruthú do bhall braisle nua, aonán nua etcd a thosú, agus an braisle a chur ar an eolas faoin bhall nua (ball etcdctl add). I gcás an Oibreora, ní bheidh ar an úsáideoir ach méid an bhraisle a athrú - tarlóidh gach rud eile go huathoibríoch.

Agus ós rud é gur cruthaíodh etcd freisin i CoreOS, bhí sé loighciúil go leor a Oibreoir a fheiceáil le feiceáil ar dtús. Conas a oibríonn sé? Loighic an oibreora etc arna chinneadh ag trí chomhpháirt:

  1. Breathnaigh. Déanann an t-oibreoir monatóireacht ar staid an bhraisle ag baint úsáide as Kubernetes API.
  2. Anailís. Faightear difríochtaí idir an stádas reatha agus an stádas atá ag teastáil (arna shainiú ag cumraíocht an úsáideora).
  3. Gníomh. Réitíonn sé difríochtaí braite trí úsáid a bhaint as APIs seirbhíse srld agus/nó Kubernetes.

Oibreoirí do Kubernetes: conas feidhmchláir dhlisteanacha a rith

Chun an loighic seo a chur i bhfeidhm, ullmhaíodh feidhmeanna san Oibreoir Cruthaigh/Scrios (baill braisle etcd a chruthú agus a scriosadh) agus Athraigh méid (athrú ar líon na mball braisle). Seiceáladh cruinneas a oibríochta trí úsáid a bhaint as fóntais a cruthaíodh i gcosúlacht Chaos Monkey ó Netflix, i.e. marú pods etcd go randamach.

Chun oibriú iomlán srld, cuireann an tOibreoir gnéithe breise ar fáil: cúltaca (uathoibríoch agus dofheicthe d'úsáideoirí cóipeanna cúltaca a chruthú - sa chumraíocht is leor a chinneadh cé chomh minic iad a dhéanamh agus cé mhéad atá le stóráil - agus sonraí a athchóiriú ina dhiaidh sin uathu) agus uasghrádú (suiteálacha srl ​​a thabhairt cothrom le dáta gan downtime).

Cén chuma atá ar oibriú le hOibreoir?

$ 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

Is leagan béite é stádas reatha Oibreora etcd, a éilíonn Kubernetes 1.5.3+ agus etcd 3.0+ a rith. Tá cód foinse agus doiciméadú (lena n-áirítear treoracha úsáide) ar fáil ag GitHub.

Cruthaíodh cur i bhfeidhm samplach eile ó CoreOS - Oibreoir Prometheus, ach tá sé fós i leagan alfa (níl gach gné pleanáilte curtha i bhfeidhm).

Stádas agus ionchais

Tá 5 mhí caite ó fógraíodh Oibreoirí Kubernetes. Níl ach dhá chur i bhfeidhm fós ar fáil i stór oifigiúil CoreOS (le haghaidh srld agus Prometheus). Níl a leaganacha cobhsaí bainte amach ag an mbeirt go fóill, ach breathnaítear gealltanais ar bhonn laethúil.

Samhlaíonn na forbróirí “todhchaí ina suiteálann úsáideoirí Oibreoirí Postgres, Oibreoirí Cassandra nó Oibreoirí Redis ar a mbraislí Kubernetes agus ina n-oibríonn siad le haonáin inscálaithe na bhfeidhmchlár seo chomh héasca agus a imscartar macasamhla feidhmchláir ghréasáin gan stát inniu.” Ar dtús Oibreoirí ó fhorbróirí tríú páirtí thosaigh sé ag láithriú i ndáiríre:

Ag an gcomhdháil bogearraí saor in aisce Eorpach is mó FOSDEM, a bhí ar siúl i mí Feabhra 2017 sa Bhruiséil, d'fhógair Josh Wood ó CoreOS Oibreoirí i tuarascáil (tá físeán ar fáil ag an nasc!), Ba cheart go gcuideodh sé leis an bhfás ar éileamh an choincheapa seo i bpobal Foinse Oscailte níos leithne.

PS Go raibh maith agat as do spéis san alt! Liostáil lenár mol, ionas nach gcaillfear ábhair agus oidis nua ar riarachán córais DevOps agus GNU/Linux - foilseoimid go rialta iad!

Foinse: will.com

Add a comment