Othandizira a Kubernetes: momwe mungayendetsere mapulogalamu apamwamba

Vuto logwiritsa ntchito bwino ku Kubernetes

Kukonzekera, kukhazikitsa ndi kukulitsanso ntchito ndi mautumiki ndikosavuta zikafika pamilandu yomwe ili ngati yopanda malire, i.e. popanda kusunga deta. Ndikosavuta kuyendetsa ntchito zotere ku Kubernetes, pogwiritsa ntchito ma API ake, chifukwa chilichonse chimachitika "kunja kwa bokosi": molingana ndi masinthidwe anthawi zonse, osaphatikizanso zenizeni kapena matsenga.

Mwachidule, kukhazikitsa makope ena asanu a backend mu PHP/Ruby/Python mugulu la zotengera, mumangofunika kukhazikitsa seva yatsopano nthawi 5 ndikukopera magwero. Popeza ma code source ndi init script ali pachithunzichi, kukweza pulogalamu yopanda malire kumakhala kofunikira. Monga mafani a zotengera ndi kamangidwe ka microservice amadziwa bwino, zovuta zimayamba mapulogalamu apamwamba,ndi. ndi kulimbikira kwa data monga nkhokwe ndi ma cache (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra ...). Izi zimagwiranso ntchito pamapulogalamu onse omwe amadzipangira okha gulu la quorum (mwachitsanzo, Percona XtraDB ndi Cassandra), ndi mapulogalamu omwe amafunikira zida zowongolera (monga Redis, MySQL, PostgreSQL...).

Zovuta zimayamba chifukwa nambala yoyambira ndikuyambitsa ntchitoyi sikukwaniranso - muyenera kuchitanso zina. Pang'ono ndi pang'ono, koperani deta ndi/kapena kujowina gulu. Kunena zowona, mautumikiwa amafunikira kumvetsetsa momwe mungasinthire bwino, kusintha ndikusinthanso popanda kutayika kwa data kapena kusapezeka kwakanthawi. Kuganizira zofunikira izi kumatchedwa "chidziwitso cha ntchito".

Othandizira a CoreOS

Kuti "programu" chidziwitso cha ntchito, kumapeto kwa chaka chatha polojekiti ya CoreOS anayambitsa "gulu latsopano la mapulogalamu" a nsanja ya Kubernetes - Ogwira ntchito (kuchokera ku Chingerezi "operation", mwachitsanzo, "operation").

Ogwiritsa ntchito ndi kukulitsa luso la Kubernetes (incl. StatefulSets, onani kusiyana komwe kuli pansipa) lolani akatswiri a DevOps kuti awonjezere chidziwitso cha ntchito ku code yogwiritsira ntchito.

Cholinga cha Operekera - perekani wogwiritsa ntchito API yomwe imakulolani kuti muzitha kuyang'anira mabungwe ambiri ogwiritsira ntchito gulu la Kubernetes, osaganizira zomwe zili pansi pa hood (zo data ndi zomwe angachite nazo, ndi malamulo ati omwe akuyenera kuchitidwa kuti asunge gululo ). M'malo mwake, Operator adapangidwa kuti azichepetsa ntchitoyo ndikugwiritsa ntchito mkati mwa tsango momwe angathere, ndikudzipangira okha ntchito zomwe zidayenera kuthetsedwa pamanja.

Momwe Operekera Amagwirira Ntchito

ReplicaSets Kubernetes amakulolani kuti mutchule nambala yomwe mukufuna ya ma pods, ndipo olamulira amaonetsetsa kuti chiwerengero chawo chikusungidwa (popanga ndi kuchotsa ma pod). Opaleshoni imagwira ntchito mofananamo, ndikuwonjezera chidziwitso cha magwiridwe antchito ku chipangizo chokhazikika cha Kubernetes ndi chowongolera chomwe chimakupatsani mwayi wochita zina zowonjezera kuti muthandizire kuchuluka kofunikira kwa mabungwe ofunsira.

Izi zikusiyana bwanji ndi StatefulSets, zopangidwira mapulogalamu omwe amafunikira gulu kuti liwapatse zinthu zodziwika bwino monga kusungirako deta kapena ma IP osasunthika? Pazinthu zoterezi, Operators angagwiritse ntchito StatefulSets (m'malo ReplicaSets) monga maziko, chopereka zina zokha zokha: chitani zofunikira pakagwa ngozi, pangani zosunga zobwezeretsera, sinthani masinthidwe, ndi zina.

Ndipo kotero, zonsezi zimagwira ntchito bwanji? Wogwiritsa ntchito ndi manejala daemon yemwe:

  1. amalembetsa ku chochitika cha API ku Kubernetes;
  2. amalandira kuchokera kwa iwo zambiri za dongosolo (za ReplicaSets, nyemba, Services ndi zina zotero.);
  3. amalandira deta za Zida Zachitatu (onani zitsanzo pansipa);
  4. zimatengera mawonekedwe/kusintha Zida Zachitatu (mwachitsanzo, kusintha kukula, kusintha mtundu, ndi zina zotero);
  5. imakhudzidwa ndi kusintha kwadongosolo ladongosolo (za ReplicaSets, nyemba, Services ndi zina zotero.);
  6. chofunika kwambiri:
    1. imayitanitsa Kubernetes API kuti ipange zonse zomwe ikufuna (kachiwiri, zake ReplicaSets, nyemba, Services...),
    2. amachita zamatsenga (kuti muchepetse, mutha kuganiza kuti Wogwiritsa ntchitoyo amalowa m'matumba omwewo ndikuyitanitsa malamulo, mwachitsanzo, kuti alowe mgulu kapena kukweza mawonekedwe a data pokonzanso mtundu).

Othandizira a Kubernetes: momwe mungayendetsere mapulogalamu apamwamba
M'malo mwake, monga tikuwonera pachithunzichi, pulogalamu ina imangowonjezeredwa ku Kubernetes (yokhazikika Kutumizidwa с ReplicaSet), yemwe amatchedwa Woyendetsa. Imakhala mu pod wamba (nthawi zambiri imodzi) ndipo, monga lamulo, imakhala ndi udindo wake Malo a Maina. Pulogalamuyi imagwiritsa ntchito API yake - ngakhale osati mwachindunji, koma kudzera Zida Zachitatu ku Kubernetes.

Chifukwa chake, titatha kupanga mu Malo a Maina Othandizira, tikhoza kuwonjezera kwa izo Zida Zachitatu.

Chitsanzo cha etcd (onani pansipa kuti mumve zambiri):

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

Chitsanzo cha 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

Zofunikira kwa Othandizira

CoreOS idapanga njira zazikulu zomwe akatswiri amapeza pomwe akugwira ntchito pa Operators. Ngakhale kuti ma Operators onse ndi amodzi (opangidwa kuti agwiritse ntchito ndi mawonekedwe ake ndi zosowa zake), kulengedwa kwawo kuyenera kukhazikitsidwa pamtundu wa chimango chomwe chimayika zofunikira izi:

  1. Kuyika kuyenera kuchitidwa ndi chimodzi Kutumizidwa: kubectl pangani -f SOME_OPERATOR_URL/deployment.yaml - ndipo safuna kuchita zina.
  2. Mukakhazikitsa Operator ku Kubernetes, mtundu watsopano wa chipani chachitatu uyenera kupangidwa (ThirdPartyResource). Kuti muyambitse zochitika zamapulogalamu (zochitika zamagulu) ndikuwongoleranso (kusintha mitundu, kusinthanso makulidwe, ndi zina zambiri), wogwiritsa ntchito azigwiritsa ntchito mtundu uwu.
  3. Ngati n'kotheka, muyenera kugwiritsa ntchito zoyambira zomwe zidamangidwa ku Kubernetes, monga Services ΠΈ ReplicaSetskugwiritsa ntchito code yoyesedwa bwino komanso yomveka.
  4. Imafunika kugwirizana m'mbuyo kwa Operators ndi chithandizo chamitundu yakale yazinthu zopangidwa ndi ogwiritsa ntchito.
  5. Ngati Wogwiritsa ntchito achotsedwa, pulogalamuyo iyenera kupitiliza kugwira ntchito popanda kusintha.
  6. Ogwiritsa ntchito akuyenera kutanthauzira mtundu wa pulogalamu yomwe akufuna ndikuwongolera zosintha zamapulogalamu. Kupanda zosintha zamapulogalamu ndizomwe zimayambitsa zovuta zogwirira ntchito ndi chitetezo, chifukwa chake Ogwiritsa ntchito ayenera kuthandiza ogwiritsa ntchito pankhaniyi.
  7. Ogwiritsa ntchito akuyenera kuyesedwa ndi chida ngati Chaos Monkey, chomwe chimazindikiritsa zolephera zomwe zingatheke mu ma pod, masanjidwe, ndi maukonde.

etcd Operesi

Chitsanzo cha Operekera Opaleshoni - Wothandizira etcd, kukonzekera pa tsiku lolengezedwa la lingaliro ili. Kukonzekera kwamagulu a etcd kumatha kukhala kovuta chifukwa chakufunika kosunga quorum, kufunikira kokonzanso umembala wamagulu, kupanga zosunga zobwezeretsera, ndi zina. Mwachitsanzo, kukulitsa gulu la etcd pamanja kumatanthauza kuti muyenera kupanga dzina la DNS la membala watsopano wa gulu, kuyambitsa gulu latsopano la etcd, ndikuchenjeza gululo za membala watsopanoyo (etcdctl membala add). Pankhani ya Opaleshoni, wogwiritsa ntchitoyo angofunika kusintha kukula kwa masango - china chilichonse chizichitika zokha.

Ndipo popeza etcd idapangidwanso ku CoreOS, zinali zomveka kuwona Wothandizira wake akuwonekera poyamba. Kodi amagwira ntchito bwanji? Operator logic etcd zimatsimikiziridwa ndi zigawo zitatu:

  1. Yang'anani. Wogwira ntchitoyo amayang'anira momwe gululi likuyendera pogwiritsa ntchito Kubernetes API.
  2. Kusanthula. Imapeza kusiyana pakati pa zomwe zikuchitika pano ndi zomwe mukufuna (zotanthauzidwa ndi kasinthidwe ka wogwiritsa ntchito).
  3. Zochita. Amathetsa kusiyana komwe kwapezeka pogwiritsa ntchito etcd ndi/kapena Kubernetes service APIs.

Othandizira a Kubernetes: momwe mungayendetsere mapulogalamu apamwamba

Kuti mugwiritse ntchito mfundo iyi, ntchito zakonzedwa mu Operator Pangani/Onanitsa (kupanga ndi kufufuta etcd mgulu) ndi Sintha (kusintha kwa chiwerengero cha mamembala amagulu). Kulondola kwa magwiridwe antchito ake kudawunikiridwa pogwiritsa ntchito zida zomwe zidapangidwa ngati Chaos Monkey kuchokera ku Netflix, i.e. kupha etcd pods mwachisawawa.

Kuti mugwiritse ntchito kwathunthu etcd, Operesheni imapereka zina zowonjezera: kubwerera (zokha komanso zosawoneka kwa ogwiritsa ntchito kupanga makope osunga zobwezeretsera - mu config ndikwanira kudziwa kuti angawapangire kangati komanso angati azisungira - ndikubwezeretsanso deta kuchokera kwa iwo) ndi Mokweza (kusintha makhazikitsidwe etcd popanda nthawi yopuma).

Kodi kugwira ntchito ndi Operator kumawoneka bwanji?

$ 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

Mkhalidwe wapano wa etcd Operator ndi mtundu wa beta, womwe umafunika Kubernetes 1.5.3+ ndi etcd 3.0+ kuti igwire ntchito. Nambala yochokera ndi zolemba (kuphatikiza malangizo ogwiritsira ntchito) zilipo GitHub.

Chitsanzo china chokhazikitsa kuchokera ku CoreOS chapangidwa - Wothandizira Prometheus, koma ikadali mu mtundu wa alpha (sizinthu zonse zomwe zakonzedwa zakhazikitsidwa).

Mkhalidwe ndi ziyembekezo

Miyezi 5 yadutsa kuchokera pomwe Kubernetes Operators adalengeza. Pali njira ziwiri zokha zomwe zikupezeka m'malo ovomerezeka a CoreOS (za etcd ndi Prometheus). Onsewa sanafikebe kumasulidwe awo okhazikika, koma zochita zimawonedwa tsiku ndi tsiku.

Madivelopa akuwona "tsogolo lomwe ogwiritsa ntchito amayika Postgres Operators, Cassandra Operators kapena Redis Operators m'magulu awo a Kubernetes ndikugwira ntchito ndi mabungwe omwe ali ndi mwayi wogwiritsa ntchito izi mosavuta monga momwe kulili masiku ano kutumiza zolemba zamawebusayiti osavomerezeka." Choyamba Othandizira kuchokera kwa omanga chipani chachitatu zinayamba kuwoneka:

Pamsonkhano waukulu kwambiri ku Europe waulere wa FOSDEM, womwe udachitika mu February 2017 ku Brussels, Josh Wood waku CoreOS adalengeza Operators mu lipoti (kanema ikupezeka pa ulalo!), Zomwe ziyenera kuthandizira kukulitsa kutchuka kwa lingaliro ili mgulu la Open Source.

PS Zikomo chifukwa cha chidwi chanu pankhaniyi! Lembani ku hubu yathu, kuti musaphonye zida zatsopano ndi maphikidwe pa DevOps ndi GNU/Linux system management - tizisindikiza pafupipafupi!

Source: www.habr.com

Kuwonjezera ndemanga