Basebelisi ba Kubernetes: mokhoa oa ho tsamaisa lits'ebetso tse hlakileng

Bothata ba lits'ebetso tse hlakileng ho Kubernetes

Tlhophiso, ho qala le ho eketseha ho eketsehileng ha lits'ebetso le lits'ebeletso ho bonolo ha ho tluoa tabeng ea linyeoe tse khetholloang e le tse se nang naha, ke hore. ntle le ho boloka data. Ho bonolo ho tsamaisa lits'ebeletso tse joalo ho Kubernetes, ho sebelisa li-API tsa eona tse tloaelehileng, hobane ntho e 'ngoe le e' ngoe e etsahala "ntle le lebokose": ho ea ka tlhophiso e tloaelehileng, ntle le ho kenyelletsa lintlha tse itseng kapa boselamose.

Ka mantsoe a bonolo, ho hlahisa likopi tse ling tse hlano tsa backend ho PHP / Ruby / Python ka har'a sehlopha sa lijana, u hloka feela ho theha seva se secha ka makhetlo a 5 le ho kopitsa mehloli. Kaha khoutu ea mohloli le init script li teng setšoantšong, ho lekanya ts'ebeliso e se nang palo ho fetoha ntho ea mantlha ka botlalo. Joalo ka ha balateli ba lijana le meaho ea microservice ba tseba hantle, bothata bo qala ka lisebelisoa tse phahameng, ke. ka phehello ea data joalo ka databases le cache (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra ...). Sena se sebetsa ho software ka bobeli e sebelisang ka boithaopo sehlopha sa quorum (mohlala, Percona XtraDB le Cassandra), le software e hlokang lits'ebeletso tse fapaneng tsa taolo (joalo ka Redis, MySQL, PostgreSQL...).

Mathata a hlaha hobane khoutu ea mohloli le ho qala ts'ebeletso ha e sa lekana - o hloka ho etsa mehato e meng hape. Bonyane, kopitsa lintlha le/kapa u ikopanye le sehlopha. Hantle-ntle, lits'ebeletso tsena li hloka kutloisiso ea ho lekanya hantle, ho li nchafatsa le ho li lokisa ntle le tahlehelo ea data kapa ho se fumanehe ha nakoana. Ho ela hloko litlhoko tsena ho bitsoa "tsebo ea ts'ebetso".

Basebelisi ba CoreOS

E le ho "program" tsebo ea ts'ebetso, qetellong ea selemo se fetileng morero oa CoreOS tsebisoa "sehlopha se secha sa software" bakeng sa sethala sa Kubernetes - Basebelisi (ho tsoa ho "operation" ea Senyesemane, ke hore "opereishene").

Basebelisi ba sebelisang le ho holisa bokhoni ba mantlha ba Kubernetes (ho kenyeletsoa. StatefulSets, bona phapang e ka tlase) lumella litsebi tsa DevOps ho eketsa tsebo ea ts'ebetso ho khoutu ea kopo.

Morero oa Opereishene - fa mosebelisi API e u lumellang hore u tsamaise mekhatlo e mengata ea ts'ebeliso e matla sehlopheng sa Kubernetes, ntle le ho nahana ka se ka tlas'a hood (ke data efe le seo u lokelang ho se etsa ka eona, ke litaelo life tse ntseng li hloka ho etsoa ho boloka sehlopha ). Ebile, Opereishene e etselitsoe ho nolofatsa mosebetsi ka ts'ebeliso ka har'a sehlopha ka hohle kamoo ho ka khonehang, ho iketsetsa ts'ebetso ea mesebetsi ea ts'ebetso eo pele e neng e tlameha ho rarolloa ka letsoho.

Kamoo Basebelisi ba Sebetsang

ReplicaSets Kubernetes e u lumella ho hlakisa palo e lakatsehang ea li-pods tse tsamaeang, 'me balaoli ba netefatsa hore palo ea bona e bolokiloe (ka ho theha le ho hlakola li-pods). Opereishene e sebetsa ka tsela e ts'oanang, e eketsa sete ea tsebo ea ts'ebetso ho sesebelisoa le molaoli oa Kubernetes tse u lumellang ho etsa liketso tse eketsehileng ho tšehetsa palo e hlokahalang ea mekhatlo ea kopo.

Sena se fapane joang le StatefulSets, e etselitsoeng lits'ebetso tse hlokang hore sehlopha se ba fe lisebelisoa tsa boemo bo holimo joalo ka polokelo ea data kapa li-IP tse tsitsitseng? Bakeng sa lits'ebetso tse joalo, Basebelisi ba ka sebelisa StatefulSets (sebakeng sa ReplicaSets) e le motheo, nyehelo othomathike e eketsehileng: etsa liketso tse hlokahalang haeba ho ka ba le likotsi, etsa li-backups, ntlafatsa tlhophiso, joalo-joalo.

Kahoo, see sohle se sebetsa joang? Opareitara ke daemon ea molaoli eo:

  1. o ingolisa ho API ea ketsahalo ho Kubernetes;
  2. e fumana ho eona data mabapi le sistimi (mabapi le eona ReplicaSets, pods, Services joalo joalo.);
  3. e fumana data mabapi le Lisebelisoa tsa Mokha oa Boraro (sheba mehlala e ka tlase);
  4. e sebetsana le chebahalo/phetoho Lisebelisoa tsa Mokha oa Boraro (mohlala, ho fetola boholo, ho fetola phetolelo, joalo-joalo);
  5. e sebetsana le liphetoho tsa boemo ba sistimi (mabapi le eona ReplicaSets, pods, Services joalo joalo.);
  6. ea bohlokoa ka ho fetisisa:
    1. e letsetsa Kubernetes API ho theha ntho e 'ngoe le e' ngoe eo e e hlokang (hape, ea eona ReplicaSets, pods, Services...),
    2. e etsa boselamose bo itseng (ho nolofatsa, o ka nahana hore Opereishene e kena ka har'a li-pods ka bo eona ebe e bitsa litaelo, mohlala, ho kopanya sehlopha kapa ho ntlafatsa sebopeho sa data ha o nchafatsa mofuta).

Basebelisi ba Kubernetes: mokhoa oa ho tsamaisa lits'ebetso tse hlakileng
Ebile, joalo ka ha ho ka bonoa setšoantšong, sesebelisoa se arohaneng se eketsoa ho Kubernetes (e tloaelehileng dulang с ReplicaSet), e bitsoang Mokhanni. E phela ka pod e tloaelehileng (hangata e le 'ngoe feela)' me, e le molao, e ikarabella feela bakeng sa eona Sebaka sa mabitso. Sesebelisoa sena sa opareitara se sebelisa API ea sona - leha e se ka kotloloho, empa ka Lisebelisoa tsa Mokha oa Boraro ho Kubernetes.

Kahoo, ka mor'a hore re bōpe ka Sebaka sa mabitso Opereishene, re ka eketsa ho eona Lisebelisoa tsa Mokha oa Boraro.

Mohlala bakeng sa etcd (sheba ka tlase bakeng sa lintlha):

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

Mohlala bakeng 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

Litlhoko tsa Basebelisi

CoreOS e thehile mekhoa ea mantlha e fumanoeng ke baenjiniere ha ba ntse ba sebetsa ho Opereishene. Leha taba ea hore Basebelisi bohle ke batho ka bomong (ba etselitsoe ts'ebeliso e itseng e nang le litšobotsi le litlhoko tsa bona), popo ea bona e tlameha ho ipapisa le mofuta oa moralo o fanang ka litlhoko tse latelang:

  1. Ho kenya ho tlameha ho etsoa ka mokhoa o le mong dulang: kubectl theha -f SOME_OPERATOR_URL/deployment.yaml - mme ha o hloke diketso tse eketsehileng.
  2. Ha o kenya Operator ho Kubernetes, ho tlameha ho thehoe mofuta o mocha oa motho oa boraro (ThirdPartyResource). Ho qala maemo a ts'ebeliso (maemo a sehlopha) le ho a laola (ho ntlafatsa liphetolelo, ho fetola boholo, joalo-joalo), mosebelisi o tla sebelisa mofuta ona.
  3. Nako le nako ha ho khonahala, o lokela ho sebelisa li-primitives tse hahiloeng ho Kubernetes, joalo ka Services и ReplicaSetsho sebedisa khoutu e lekiloeng hantle le e utlwahalang.
  4. E hloka tšebelisano ea morao-rao ea Basebelisi le tšehetso bakeng sa mefuta ea khale ea lisebelisoa tse entsoeng ke basebelisi.
  5. Haeba Opereishene e tlosoa, kopo ka boeona e lokela ho tsoela pele ho sebetsa ntle le liphetoho.
  6. Basebelisi ba tlameha ho tseba ho hlalosa mofuta o lakatsehang oa kopo le ho hlophisa lintlafatso tsa mofuta oa kopo. Khaello ea liapdeite tsa software ke mohloli o tloaelehileng oa mathata a ts'ebetso le ts'ireletso, kahoo Basebelisi ba tlameha ho thusa basebelisi tabeng ena.
  7. Basebelisi ba lokela ho lekoa ka sesebelisoa se kang Chaos Monkey, se supang liphoso tse ka bang teng ho li-pods, litlhophiso le marang-rang.

etcd Opereishene

Mohlala oa Phethahatso ea Opereishene - joalo-joalo Opereishene, lokisitsoe ka letsatsi la phatlalatso ea mohopolo ona. Sebopeho sa sehlopha sa etcd se ka ba se rarahaneng ka lebaka la tlhoko ea ho boloka quorum, tlhoko ea ho hlophisa bocha litho tsa sehlopha, ho theha li-backups, jj. Mohlala, ho lekanya sehlopha sa etcd ka bowena ho bolela hore o hloka ho theha lebitso la DNS bakeng sa setho se secha sa sehlopha, ho qala setheo se secha sa etcd, le ho lemosa sehlopha ka setho se secha (etcdctl setho eketsa). Tabeng ea Opereishene, mosebedisi o tla hloka feela ho fetola boholo ba sehlopha - ntho e 'ngoe le e' ngoe e tla etsahala ka bo eona.

Mme kaha etcd le eona e entsoe ho CoreOS, ho ne ho utloahala ho bona Opereishene ea eona e hlaha pele. O sebetsa joang? Opereishene logic etcd e khethoa ka likarolo tse tharo:

  1. Ela hloko. Opereishene e beha leihlo boemo ba sehlopha a sebelisa Kubernetes API.
  2. Tlhahlobo. E fumana phapang lipakeng tsa maemo a hajoale le a lakatsehang (a hlalosoang ke tlhophiso ea mosebelisi).
  3. Ketso. E rarolla liphapang tse lemohuoeng ka ho sebelisa li-etcd le/kapa Kubernetes litšebeletso tsa API.

Basebelisi ba Kubernetes: mokhoa oa ho tsamaisa lits'ebetso tse hlakileng

Ho kenya ts'ebetsong mohopolo ona, mesebetsi e lokiselitsoe ho Opereishene Theha/Senya (ho theha le ho phumula litho tsa cluster etcd) le Nchafatsa (ho fetoha ha palo ea litho tsa sehlopha). Ho nepahala ha ts'ebetso ea eona ho ile ha hlahlojoa ho sebelisoa sesebelisoa se entsoeng ka setšoantšo sa Chaos Monkey ho tloha Netflix, i.e. ho bolaea etcd pods ka tšohanyetso.

Bakeng sa ts'ebetso e felletseng ea etcd, Opereishene e fana ka likarolo tse ling: bekapo (ka ho iketsa le e sa bonahaleng ho basebelisi ho theha likopi tsa "backup" - ka har'a tlhophiso ho lekane ho tseba hore na li ka etsoa hangata hakae le hore na li bolokoe tse kae - le ho khutlisa data ho tsoa ho bona) le apkreite (ho nchafatsa lits'ebetso tsa etcd ntle le ho fokotsa nako).

Ho sebetsa le Opereishene ho shebahala joang?

$ 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

Boemo ba hajoale ba etcd Operator ke mofuta oa beta, o hlokang Kubernetes 1.5.3+ le etcd 3.0+ ho sebetsa. Khoutu ea mohloli le litokomane (ho kenyeletsoa le litaelo tsa tšebeliso) li fumaneha ho GitHub.

Mohlala o mong oa ts'ebetso ho tsoa ho CoreOS o entsoe - Moemeli oa Prometheus, empa e ntse e le mofuta oa alpha (ha se likarolo tsohle tse reriloeng tse kentsoeng tšebetsong).

Boemo le litebello

Likhoeli tse 5 li se li fetile ho tloha ha phatlalatso ea Kubernetes Operators. Ho ntse ho na le lits'ebetso tse peli feela tse fumanehang sebakeng sa semmuso sa CoreOS (bakeng sa etcd le Prometheus). Ka bobeli ha ba so fihle liphetolelong tsa bona tse tsitsitseng, empa boitlamo bo bonoa letsatsi le letsatsi.

Bahlahisi ba nahana ka "bokamoso boo ho bona basebelisi ba kenyang Postgres Operators, Cassandra Operators kapa Redis Operators lihlopheng tsa bona tsa Kubernetes 'me ba sebetse le mekhatlo e kotsi ea lits'ebetso tsena habonolo joalo ka ha ho le joalo kajeno." Ea pele Basebelisi ho tsoa ho batho ba bang ba ntlafatsang ehlile e qalile ho hlaha:

Sebokeng se seholo ka ho fetisisa sa mahala sa software sa Europe FOSDEM, se ileng sa etsahala ka Hlakola 2017 Brussels, Josh Wood oa CoreOS o phatlalalitse Basebelisi ho. tlaleha (video e fumaneha sehokelong!), E lokelang ho kenya letsoho kholong ea botumo ba mohopolo ona sechabeng se pharaletseng sa Open Source.

PES Ke leboha thahasello ea hau sehloohong sena! Ingolise ho hub ea rona, e le hore u se ke ua fetoa ke lisebelisoa tse ncha le diresepe ho DevOps le tsamaiso ea tsamaiso ea GNU/Linux - re tla li phatlalatsa kamehla!

Source: www.habr.com

Eketsa ka tlhaloso