Fa'atonu mo Kubernetes: fa'afefea ona fa'agaoioia talosaga fa'apitoa

Le faʻafitauli i talosaga faʻapitoa i Kubernetes

Fa'atonuga, fa'alauiloa ma le fa'alauteleina atili o talosaga ma tautua e faigofie pe a o'o mai i mataupu fa'avasegaina e leai ni setete, i.e. e aunoa ma le faasaoina o faamatalaga. E faigofie le faʻatinoina o ia auaunaga i Kubernetes, e faʻaaoga ai ana API masani, aua o mea uma e tupu "mai le pusa": e tusa ai ma faʻasalalauga masani, e aunoa ma le aofia ai o soʻo se faʻamatalaga poʻo se togafiti.

I se faaupuga faigofie, e faʻalauiloa isi kopi e lima o le pito i tua ile PHP/Ruby/Python i totonu o se fuifui o koneteina, e naʻo lou manaʻomia e setiina se server fou 5 taimi ma kopi punaoa. Talu ai ona o le source code ma le init script o loʻo i totonu o le ata, o le faʻavasegaina o se talosaga e leai se setete e avea ma tulaga faʻavae atoa. E pei ona iloa lelei e tagata fiafia o containers ma microservice architecture, o le faigata e amata i polokalame fa'akomepiuta, i.e. faʻatasi ai ma faʻamaumauga tumau e pei o faʻamaumauga ma faʻamaumauga (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). E fa'atatau lea i polokalama fa'akomepiuta e lua e fa'atino tuto'atasi se vaega o le korama (mo se fa'ata'ita'iga, Percona XtraDB ma Cassandra), ma polokalama e mana'omia ai fa'aoga eseese tau pulega (e pei o Redis, MySQL, PostgreSQL...).

O faʻafitauli e tulaʻi mai ona ua le lava le code source ma le faʻalauiloaina o le auaunaga - e tatau ona e faia nisi laasaga. A itiiti ifo, kopi faʻamaumauga ma/pe auai i le fuifui. E sili atu le sa'o, o nei 'au'aunaga e mana'omia se malamalama i le fa'atatauina lelei, fa'afou ma toe fa'afou i latou e aunoa ma le leiloa o fa'amaumauga po'o le le maua mo sina taimi. O le amanaia o nei mana'oga ua ta'ua o le "malamalama faagaioiga".

CoreOS Operators

Ina ia mafai ona "polokalame" malamalamaga faʻatinoga, i le faaiuga o le tausaga talu ai le poloketi CoreOS faʻalauiloa “se vasega fou o polokalama faakomepiuta” mo le Kubernetes platform - Operators (mai le Igilisi “operation”, i.e. “operation”).

O lo'o fa'aogaina ma fa'alauteleina le malosi autu o Kubernetes (incl. StatefulSets, vaʻai i le eseesega o loʻo i lalo) faʻatagaina DevOps faʻapitoa e faʻaopoopo le faʻaogaina o le malamalama i le faʻasologa o talosaga.

Fa'amoemoega ole Fa'atonu - tuʻuina atu i le tagata faʻaoga se API e mafai ai e oe ona pulea le tele o faʻalapotopotoga faʻapitoa i totonu o le Kubernetes cluster, e aunoa ma le mafaufau i mea o loʻo i lalo o le pulou (o a faʻamatalaga ma mea e fai i ai, o a poloaiga e manaʻomia pea ona faʻatinoina e tausia ai le fuifui. ). O le mea moni, o le Operator ua mamanuina e faʻafaigofie le galuega ma le talosaga i totonu o le fuifui i le tele e mafai ai, faʻautometi le faʻatinoina o galuega faʻatino na tatau ona foia ma le lima.

Auala e galue ai le aufaipisinisi

ReplicaSets O le Kubernetes e mafai ai ona e faʻamaonia le numera manaʻomia o pusa taʻavale, ma faʻamautinoaina e le au faʻatonu o loʻo tausia a latou numera (e ala i le fatuina ma le tapeina o pods). E galue le Operator i se auala fa'apena, fa'aopoopo se seti o le malamalama fa'agaioiga i se puna'oa masani Kubernetes ma le pule e fa'atagaina oe e fa'atino gaioiga fa'aopoopo e lagolago ai le numera mana'omia o fa'alapotopotoga talosaga.

E faapefea ona ese lenei mea mai StatefulSets, fuafuaina mo talosaga e manaʻomia ai le fuifui e tuʻuina atu ia i latou punaoa faʻapitoa e pei o le teuina o faʻamaumauga poʻo IP faʻamau? Mo ia talosaga, e mafai e tagata fa'aoga ona fa'aoga StatefulSets (nai lo ReplicaSets) e fai ma faavae, ofoina masini fa'aopoopo: faia gaioiga talafeagai i le tulaga o faʻalavelave, fai faʻamaumauga, faʻafouina le faʻatulagaina, ma isi.

Ma o lea, e faapefea ona aoga nei mea uma? O le tagata faʻafoe o se pule daemon lea:

  1. e lesitala i le mea na tupu API i Kubernetes;
  2. maua mai ai faʻamatalaga e uiga i le faiga (e uiga i lona ReplicaSets, pods, auaunaga ma faapena atu ai lava.);
  3. maua faamatalaga e uiga i Punaoa Vaega Tolu (tagai i faataitaiga o loo i lalo);
  4. tali i foliga/suiga Punaoa Vaega Tolu (mo se faʻataʻitaʻiga, sui le tele, sui le faʻasologa, ma isi);
  5. tali atu i suiga i le tulaga o le faiga (e uiga i lona ReplicaSets, pods, auaunaga ma faapena atu ai lava.);
  6. sili ona taua:
    1. valaʻau i le Kubernetes API e fatu mea uma e manaʻomia (toe foʻi, o ia lava ReplicaSets, pods, auaunaga...),
    2. faia ni togafiti fa'ataulāitu (ina ia faafaigofieina, e mafai ona e manatu o le Operator e alu i totonu o le pusa lava ia ma valaau poloaiga, mo se faʻataʻitaʻiga, e auai i se fuifui pe faʻaleleia le faʻasologa o faʻamaumauga pe a faʻafouina se lomiga).

Fa'atonu mo Kubernetes: fa'afefea ona fa'agaoioia talosaga fa'apitoa
O le mea moni, e pei ona mafai ona vaʻaia mai le ata, o se isi talosaga e faʻaopoopoina i Kubernetes (se masani Deployment с ReplicaSet), lea e ta'ua o le Fa'atonu. E nofo i totonu o se pusa masani (e masani lava naʻo le tasi) ma, o se tulafono, e nafa naʻo lona Igoa ole igoa. O lenei fa'aoga fa'aoga e fa'atino lana API - e ui lava e le o tu'usa'o, ae e ala i Punaoa Vaega Tolu i Kubernetes.

O lea, ina ua uma ona tatou faia i Igoa ole igoa Fa'atonu, e mafai ona matou fa'aopoopo i ai Punaoa Vaega Tolu.

Faataitaiga mo etcd (silasila i lalo mo fa'amatalaga):

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

Faataitaiga mo 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

Manaoga mo Tagata Fa'atino

CoreOS faʻatulagaina mamanu autu na maua e inisinia aʻo galue i Operators. E ui lava i le mea moni o tagata uma o loʻo faʻatinoina e taʻitoʻatasi (faia mo se faʻaoga faʻapitoa ma ona lava uiga ma manaʻoga), o la latou foafoaga e tatau ona faʻavae i luga o se ituaiga faʻavae e tuʻuina atu ai manaʻoga nei:

  1. Fa'apipi'i e tatau ona faia e ala ile tasi Deployment: kubectl fai -f SOME_OPERATOR_URL/deployment.yaml - ma e le manaʻomia ni gaioiga faʻaopoopo.
  2. A faʻapipiʻi se Operator i Kubernetes, e tatau ona faia se isi vaega lona tolu (Third PartyResource). Ina ia faʻalauiloa faʻataʻitaʻiga (faʻasologa faʻapipiʻi) ma faʻatautaia atili (faʻafouina lomiga, suiga, ma isi), o le a faʻaogaina e le tagata faʻaoga lenei ituaiga.
  3. Soo se taimi lava e mafai ai, e tatau ona e faʻaogaina mea muamua na fausia i totonu o Kubernetes, pei ole auaunaga и ReplicaSetse fa'aoga le fa'ailoga ua fa'amaonia lelei ma malamalama.
  4. Manaomia le fetaui i tua o Operator ma le lagolago mo lomiga tuai o punaoa na fatuina e tagata.
  5. Afai e aveese le Operator, o le talosaga lava ia e tatau ona faʻaauau pea ona galue e aunoa ma ni suiga.
  6. E tatau ona mafai e tagata fa'aoga ona fa'amalamalamaina le fa'asologa o talosaga ma fa'atulaga fa'afouga fa'afouga o talosaga. O le leai o ni fa'afouga fa'akomepiuta ose fa'apogai masani lea o fa'afitauli tau fa'agaioiga ma le saogalemu, o lea e tatau ai i Tagata Fa'atonu ona fesoasoani i tagata fa'aoga i lenei mataupu.
  7. E tatau ona faʻataʻitaʻiina tagata faʻatautaia i se meafaigaluega e pei o Chaos Monkey, lea e faʻamaonia ai le toilalo i pods, faʻasologa, ma le fesoʻotaʻiga.

etcd Fa'atonu

Fa'ata'ita'iga o le Fa'atinoga - etcd tagata faigaluega, saunia i le aso o le faalauiloaina o lenei manatu. O le etcd cluster configuration e mafai ona faʻalavelave ona o le manaʻoga e tausia le korama, le manaʻoga e toe faʻaleleia le sui auai o le fuifui, faia faʻamaumauga, ma isi. Mo se faʻataʻitaʻiga, o le faʻavasegaina ma le lima o le etcd cluster o lona uiga e te manaʻomia le fatuina o se igoa DNS mo se sui fou o le fuifui, amata se faʻalapotopotoga fou etcd, ma faʻailoa le fuifui e uiga i le sui fou (etcdctl sui usufono faaopoopo). I le tulaga o le Operator, o le a naʻo le tagata faʻaoga e manaʻomia le suia o le tele o fuifui - o isi mea uma e otometi lava ona tupu.

Ma talu ai na faia foʻi etcd i CoreOS, e fetaui lelei le vaʻaia muamua o lona Operator. E faapefea ona ia galue? Logic operator etcd ua fuafuaina i vaega e tolu:

  1. Matau. E mata'ituina e le fa'alapotopotoga le tulaga o le fuifui e fa'aaoga ai le Kubernetes API.
  2. Iloiloga. Su'e eseesega i le va o le tulaga o lo'o i ai nei ma le mea e mana'omia (fa'amatalaina e le fa'aogaina o le tagata fa'aoga).
  3. Gaioiga. Fo'ia ni eseesega ua iloa e ala i le etcd ma/po'o le Kubernetes service APIs.

Fa'atonu mo Kubernetes: fa'afefea ona fa'agaoioia talosaga fa'apitoa

Ina ia faʻatinoina lenei manatu, ua saunia galuega i totonu o le Operator Fausia/Fa'aleaga (fausiaina ma tapeina etcd vaega kulupu) ma Toe fetuunai (suia le numera o sui o le fuifui). O le saʻo o lana faʻagaioiga na siakiina e faʻaaoga ai se aoga na faia i foliga o Chaos Monkey mai Netflix, i.e. fasiotia etcd pods fa'afuase'i.

Mo le faʻatinoga atoa o etcd, e tuʻuina atu e le Operator faʻaopoopoga faʻaopoopoga: faaleoleo (otometi ma le vaʻaia e tagata faʻaoga le fatuina o kopi faʻapolopolo - i le config ua lava lea e fuafua ai pe faʻafia ona faia ma pe fia le teuina - ma toe faʻafoʻisia faʻamaumauga mai ia i latou) ma faaleleia (faʻafouina mea faʻapipiʻi etcd e aunoa ma se taimi malolo).

O le a le foliga o le galue ma se Operator?

$ 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

Ole tulaga o iai nei ole etcd Operator ose version beta, e mana'omia ai le Kubernetes 1.5.3+ ma etcd 3.0+ e tamo'e. Source code ma fa'amaumauga (e aofia ai fa'atonuga mo le fa'aoga) o lo'o maua ile GitHub.

O le isi faʻataʻitaʻiga faʻatinoga mai CoreOS ua faia - Prometheus Operator, ae o loʻo i ai pea i le alpha version (e leʻo faʻatinoina uma fuafuaga fuafuaina).

Tulaga ma fa'amoemoega

5 masina ua mavae talu mai le faʻasalalauga a Kubernetes Operators. E naʻo le lua lava faʻatinoga o loʻo maua i le faleteuoloa CoreOS (mo etcd ma Prometheus). E le'i o'o uma i la'ua fa'amaumauga mautu, ae o lo'o fa'amauina i aso ta'itasi.

O loʻo vaʻaia e le au atinaʻe "se lumanaʻi e faʻapipiʻi ai e tagata faʻaoga Postgres Operators, Cassandra Operators poʻo Redis Operators i luga o latou Kubernetes fuifui ma galulue faʻatasi ma faʻalapotopotoga faʻapitoa o nei talosaga e pei o le faʻapipiʻiina o faʻataʻitaʻiga o talosaga i luga ole laiga i aso nei." Tulaga tasi Tagata fa'atino mai tagata atia'e isi vaega na amata ona aliali mai:

I le tele tele o Europa free software conference FOSDEM, lea na faia ia Fepuari 2017 i Brussels, Josh Wood mai CoreOS faʻasalalau Faʻatonu i totonu. lipoti (o loʻo maua se vitio i le soʻotaga!), lea e tatau ona saofagā i le faʻatupulaia o le lauiloa o lenei manatu i le lautele lautele Open Source community.

SALA Faafetai mo lou fiafia i le tusiga! Fa'asoa i la matou nofoaga, ina ia aua nei misia mea fou ma fua i luga o le DevOps ma le GNU/Linux system administration - o le a matou lolomiina i taimi uma!

puna: www.habr.com

Faaopoopo i ai se faamatalaga