Mga operator para sa Kubernetes: unsaon pagpadagan ang stateful applications

Ang problema sa stateful nga mga aplikasyon sa Kubernetes

Ang pag-configure, paglansad ug dugang nga pag-scale sa mga aplikasyon ug serbisyo dali ra kung bahin sa mga kaso nga giklasipikar nga stateless, i.e. nga walay pag-save sa datos. Kombenyente ang pagpadagan sa maong mga serbisyo sa Kubernetes, gamit ang mga standard nga API niini, tungod kay ang tanan mahitabo “out of the box”: sumala sa standard configurations, nga walay labot sa bisan unsa nga specifics o magic.

Sa yanong pagkasulti, aron maglunsad og lima pa ka kopya sa backend sa PHP/Ruby/Python sa usa ka pungpong sa mga sudlanan, kinahanglan ka lang nga mag-set up og bag-ong server 5 ka beses ug kopyaha ang mga tinubdan. Tungod kay ang source code ug ang init nga script anaa sa hulagway, ang pag-scale sa usa ka stateless nga aplikasyon mahimong hingpit nga elementarya. Ingon nga nahibal-an pag-ayo sa mga fans sa mga sudlanan ug arkitektura sa microservice, nagsugod ang kalisud stateful nga mga app, i.e. nga adunay pagpadayon sa datos sama sa mga database ug mga cache (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). Kini magamit sa duha ka software nga independente nga nag-implementar sa usa ka quorum cluster (pananglitan, Percona XtraDB ug Cassandra), ug software nga nanginahanglan og bulag nga management utilities (sama sa Redis, MySQL, PostgreSQL...).

Ang mga kalisud mitungha tungod kay ang gigikanan nga code ug paglansad sa serbisyo dili na igo - kinahanglan nimo nga buhaton ang pipila pa nga mga lakang. Sa labing gamay, kopyaha ang datos ug/o apil sa cluster. Sa mas tukma, kini nga mga serbisyo nanginahanglan usa ka pagsabut kung giunsa ang husto nga pag-scale, pag-update ug pag-reconfigure niini nga wala’y pagkawala sa datos o temporaryo nga wala magamit. Ang pagkonsiderar niini nga mga panginahanglanon gitawag og "operational knowledge".

Mga Operator sa CoreOS

Aron sa "programa" operational kahibalo, ulahing bahin sa miaging tuig sa CoreOS proyekto gipaila “usa ka bag-ong klase sa software” para sa Kubernetes platform - Operators (gikan sa English nga “operation”, i.e. “operation”).

Ang mga operator nga naggamit ug nagpalapad sa kinauyokan nga kapabilidad sa Kubernetes (incl. StatefulSets, tan-awa ang kalainan sa ubos) tugoti ang mga espesyalista sa DevOps nga makadugang sa kahibalo sa operasyon sa code sa aplikasyon.

Katuyoan sa Operator — paghatag sa user og API nga nagtugot kanimo sa pagdumala sa daghang stateful application entity sa usa ka Kubernetes cluster, nga walay paghunahuna kon unsa ang anaa sa ilawom sa hood (unsa nga data ug unsay buhaton niini, unsa nga mga sugo ang kinahanglan pa nga ipatuman aron mapadayon ang cluster ). Sa tinuud, ang Operator gilaraw aron pasimplehon ang trabaho sa aplikasyon sa sulod sa cluster kutob sa mahimo, pag-automate sa pagpatuman sa mga buluhaton sa operasyon nga kaniadto kinahanglan nga masulbad nga mano-mano.

Giunsa Pagtrabaho ang mga Operator

Mga ReplicaSets Gitugotan ka sa Kubernetes nga ipiho ang gusto nga gidaghanon sa mga nagdagan nga mga pod, ug gisiguro sa mga tigkontrol nga ang ilang numero gipadayon (pinaagi sa paghimo ug pagtangtang sa mga pod). Ang usa ka Operator nagtrabaho sa parehas nga paagi, nagdugang usa ka set sa kahibalo sa operasyon sa usa ka sukaranan nga kapanguhaan ug tigkontrol sa Kubernetes nga nagtugot kanimo sa paghimo og dugang nga mga aksyon aron masuportahan ang gikinahanglan nga gidaghanon sa mga entidad sa aplikasyon.

Sa unsang paagi kini lahi gikan sa StatefulSets, gidisenyo alang sa mga aplikasyon nga nagkinahanglan sa cluster sa paghatag kanila sa stateful resources sama sa data storage o static IPs? Alang sa ingon nga mga aplikasyon, magamit sa mga Operator StatefulSets (imbes Mga ReplicaSets) isip basihan, pagtanyag dugang nga automation: pagbuhat sa gikinahanglan nga mga aksyon sa kaso sa crash, paghimo backups, update sa configuration, etc.

Ug busa, sa unsang paagi kining tanan molihok? Ang operator usa ka manager nga daemon nga:

  1. nag-subscribe sa event API sa Kubernetes;
  2. nakadawat gikan niini nga datos bahin sa sistema (bahin sa Mga ReplicaSets, pods, Services ug uban pa.);
  3. nakadawat og datos mahitungod sa Mga Kapanguhaan sa Third Party (tan-awa ang mga pananglitan sa ubos);
  4. reaksyon sa panagway/pagbag-o Mga Kapanguhaan sa Third Party (pananglitan, aron usbon ang gidak-on, usbon ang bersyon, ug uban pa);
  5. nag-reaksyon sa mga pagbag-o sa kahimtang sa sistema (bahin sa Mga ReplicaSets, pods, Services ug uban pa.);
  6. ang pinaka importante:
    1. nagtawag sa Kubernetes API sa paghimo sa tanan nga gikinahanglan niini (sa makausa pa, iyaha Mga ReplicaSets, pods, Services...),
    2. naghimo sa pipila ka salamangka (aron pasimplehon, mahimo nimong hunahunaon nga ang Operator moadto sa mga pods mismo ug motawag sa mga mando, pananglitan, aron moapil sa usa ka cluster o aron ma-upgrade ang format sa data kung mag-update sa usa ka bersyon).

Mga operator para sa Kubernetes: unsaon pagpadagan ang stateful applications
Sa tinuud, ingon sa makita gikan sa litrato, usa ka bulag nga aplikasyon gidugang ra sa Kubernetes (usa ka regular deployment с ReplicaSet), nga gitawag og Operator. Nagpuyo kini sa usa ka ordinaryo nga pod (kasagaran usa lang) ug, ingon nga usa ka lagda, responsable lamang alang niini Namespace. Kini nga operator nga aplikasyon nagpatuman sa iyang API - bisan dili direkta, apan pinaagi sa Mga Kapanguhaan sa Third Party sa Kubernetes.

Mao nga, pagkahuman nga nahimo namon ang Namespace Operator, mahimo naton kini idugang Mga Kapanguhaan sa Third Party.

Pananglitan sa etcd (tan-awa sa ubos para sa mga detalye):

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

Pananglitan alang sa 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

Mga Kinahanglanon alang sa mga Operator

Giporma sa CoreOS ang mga nag-unang sumbanan nga nakuha sa mga inhenyero samtang nagtrabaho sa mga Operator. Bisan pa sa kamatuoran nga ang tanan nga mga Operator indibidwal (gibuhat alang sa usa ka piho nga aplikasyon nga adunay kaugalingon nga mga kinaiya ug panginahanglan), ang ilang paglalang kinahanglan nga ibase sa usa ka klase nga balangkas nga nagpahamtang sa mga musunud nga kinahanglanon:

  1. Ang pag-instalar kinahanglan nga himuon pinaagi sa usa deployment: kubectl paghimo -f SOME_OPERATOR_URL/deployment.yaml - ug wala magkinahanglan og dugang nga mga aksyon.
  2. Kung mag-install ug Operator sa Kubernetes, kinahanglan nga maghimo usa ka bag-ong tipo sa ikatulo nga partido (ThirdPartyResource). Aron ilunsad ang mga instance sa aplikasyon (mga cluster instances) ug dugang pagdumala niini (pag-update sa mga bersyon, pagbag-o sa gidak-on, ug uban pa), ang user mogamit niini nga matang.
  3. Kung mahimo, kinahanglan nimong gamiton ang mga primitive nga gitukod sa Kubernetes, sama sa Services и Mga ReplicaSetssa paggamit sa maayo nga nasulayan ug masabtan nga code.
  4. Nagkinahanglan og atraso nga pagkaangay sa mga Operators ug suporta alang sa mga daan nga bersyon sa mga kapanguhaan nga hinimo sa user.
  5. Kung tangtangon ang Operator, ang aplikasyon mismo kinahanglan magpadayon nga molihok nga wala’y mga pagbag-o.
  6. Ang mga tiggamit kinahanglan nga makahimo sa paghubit sa gitinguha nga bersyon sa aplikasyon ug pag-orkestrate sa mga update sa bersyon sa aplikasyon. Ang kakulang sa mga pag-update sa software usa ka sagad nga gigikanan sa mga problema sa operasyon ug seguridad, busa kinahanglan nga tabangan sa mga Operator ang mga tiggamit niini nga butang.
  7. Ang mga operator kinahanglan nga sulayan sa usa ka himan sama sa Chaos Monkey nga nagpaila sa mga potensyal nga kapakyasan sa mga pod, mga pag-configure, ug sa network.

etcd Operator

Pananglitan sa Pagpatuman sa Operator - etcd Operator, giandam sa adlaw sa pagpahibalo niini nga konsepto. Ang etcd cluster configuration mahimong komplikado tungod sa panginahanglan sa pagpadayon sa korum, ang panginahanglan sa pag-reconfigure sa cluster membership, paghimo og backups, ug uban pa. Pananglitan, ang mano-mano nga pag-scale sa usa ka etcd cluster nagpasabut nga kinahanglan nimo nga maghimo usa ka DNS nga ngalan alang sa usa ka bag-ong miyembro sa cluster, magsugod usa ka bag-ong etcd entity, ug alerto ang cluster bahin sa bag-ong miyembro (etcdctl member add). Sa kaso sa Operator, ang user kinahanglan lamang nga usbon ang gidak-on sa cluster - ang tanan nga butang awtomatikong mahitabo.

Ug tungod kay ang etcd gibuhat usab sa CoreOS, makatarunganon nga makita ang Operator niini nga makita una. Giunsa niya pagtrabaho? Logika sa operator ug uban pa gitino sa tulo ka mga sangkap:

  1. Tan-awa. Gimonitor sa operator ang kahimtang sa cluster gamit ang Kubernetes API.
  2. Pagtuki. Nakapangita og mga kalainan tali sa kasamtangan nga status ug sa gusto (gihubit sa configuration sa user).
  3. Aksyon. Nasulbad ang nakit-an nga mga kalainan gamit ang etcd ug/o mga serbisyo sa Kubernetes API.

Mga operator para sa Kubernetes: unsaon pagpadagan ang stateful applications

Aron ipatuman kini nga lohika, ang mga gimbuhaton giandam sa Operator Paghimo/Paglaglag (paghimo ug pagtangtang sa etcd cluster members) ug Gipalabi (pagbag-o sa gidaghanon sa mga miyembro sa cluster). Ang pagkahusto sa operasyon niini gisusi gamit ang usa ka utility nga gihimo sa dagway sa Chaos Monkey gikan sa Netflix, i.e. pagpatay ug uban pa pod nga random.

Alang sa bug-os nga operasyon sa etcd, ang Operator naghatag dugang nga mga bahin: tabang (awtomatiko ug dili makita sa mga tiggamit ang paghimo sa mga backup nga kopya - sa config igo na aron mahibal-an kung unsa ka sagad buhaton kini ug kung pila ang itago - ug ang sunod nga pagpahiuli sa datos gikan kanila) ug upgrade (pag-update sa etcd installations nga walay downtime).

Unsa ang hitsura sa pagtrabaho sa usa ka 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

Ang kasamtangan nga kahimtang sa etcd Operator kay usa ka beta nga bersyon, nga nagkinahanglan sa Kubernetes 1.5.3+ ug etcd 3.0+ aron modagan. Source code ug dokumentasyon (lakip ang mga instruksyon sa paggamit) anaa sa GitHub.

Ang laing pananglitan nga pagpatuman gikan sa CoreOS nahimo - Operator sa Prometheus, apan naa pa kini sa alpha nga bersyon (dili tanan nga giplano nga mga bahin gipatuman).

Status ug mga palaaboton

5 ka bulan ang milabay sukad sa pag-anunsyo sa Kubernetes Operators. Adunay pa lang duha ka mga pagpatuman nga magamit sa opisyal nga CoreOS repository (alang sa etcd ug Prometheus). Ang duha wala pa makaabot sa ilang mga stable nga bersyon, apan ang mga commit giobserbahan matag adlaw.

Ang mga developers naghanduraw sa "usa ka kaugmaon diin ang mga tiggamit mag-instalar sa mga Postgres Operators, Cassandra Operators o Redis Operators sa ilang mga Kubernetes clusters ug magtrabaho uban sa mga scalable entity niini nga mga aplikasyon nga sama ka sayon ​​​​sa pag-deploy sa mga replika sa stateless nga mga aplikasyon sa web karon." Una Mga operator gikan sa mga developer sa ikatulo nga partido nagsugod gyud sa pagpakita:

Sa pinakadako nga European free software conference FOSDEM, nga nahitabo niadtong Pebrero 2017 sa Brussels, si Josh Wood gikan sa CoreOS mipahibalo sa mga Operator sa pagtaho (usa ka video anaa sa link!), nga kinahanglan makatampo sa pagtubo sa pagkapopular niini nga konsepto sa mas lapad nga Open Source nga komunidad.

PS Salamat sa imong interes sa artikulo! Subscribe sa among hub, aron dili masipyat ang bag-ong mga materyales ug mga resipe sa DevOps ug GNU/Linux system administration - kanunay namo kining imantala!

Source: www.habr.com

Idugang sa usa ka comment