Kaiwhakahaere mo Kubernetes: me pehea te whakahaere i nga tono mana

Ko te raru ki nga tono whaimana i Kubernetes

He ngawari te whirihora, te whakarewatanga me te whakarahi ake i nga tono me nga ratonga ina tae mai ki nga keehi kua kiia he koretake, ara. me te kore e penapena raraunga. He pai ki te whakahaere i nga ratonga penei i Kubernetes, ma te whakamahi i ona API paerewa, na te mea ka puta nga mea katoa "i waho o te pouaka": kia rite ki nga whirihoranga paerewa, me te kore e uru ki nga tohu motuhake, makutu ranei.

Me korero noa, ki te whakarewa i etahi atu kape e rima o te tuara ki PHP/Ruby/Python i roto i te kahui ipu, me whakatu he tūmau hou kia 5 nga wa ka kape i nga puna. I te mea ko te waehere puna me te tuhinga init kei roto i te ahua, ko te whakahiato i te tono kore whenua ka tino timatanga. I te mea e mohio ana nga kaiwhaiwhai ipu me te hoahoanga microservice, ka timata te uaua taupānga mana, i.e. me te mau tonu o nga raraunga penei i nga papaa raraunga me nga keteroki (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). E pa ana tenei ki nga rorohiko e rua e whakamahi takitahi ana i te roopu roopu (hei tauira, Percona XtraDB me Cassandra), me nga rorohiko e hiahia ana ki nga taputapu whakahaere motuhake (penei i te Redis, MySQL, PostgreSQL...).

Ka puta ake nga uaua na te mea kua kore e ranea te waehere puna me te whakarewatanga o te ratonga - me mahi ano koe. I te iti rawa, kape i nga raraunga me te whakauru ranei ki te roopu. He tika ake, me maarama enei ratonga me pehea te whakatika tika, te whakahou me te whirihora ano me te kore e ngaro nga raraunga me te kore e waatea mo te wa poto. Ko te whai whakaaro ki enei hiahia ka kiia ko te "mohiotanga whakahaere".

Nga Kaiwhakahaere CoreOS

I roto i te tikanga ki te "hōtaka" matauranga whakahaere, te mutunga o te tau whakamutunga te kaupapa CoreOS whakaurua “he karaehe rorohiko hou” mo te turanga Kubernetes - Kaiwhakahaere (mai i te reo Ingarihi “operation”, ara, “operation”).

Ko nga kaiwhakahaere e whakamahi ana, e whakawhānui ana hoki i nga kaha matua o Kubernetes (incl. Tautuhinga Stateful, tirohia te rereketanga i raro nei) tukua nga tohungatanga DevOps ki te taapiri i nga matauranga whakahaere ki te waehere tono.

Te Kaupapa o te Kaiwhakahaere — whakarato ki te kaiwhakamahi he API e taea ai e koe te whakahaere i nga hinonga tono ahua maha i roto i te roopu Kubernetes, me te kore e whakaaro ki nga mea kei raro i te awhi (he aha nga raraunga me te aha me mahi, he aha nga whakahau e tika ana kia mahia hei pupuri i te roopu. ). Inaa, i hangaia te Kaiwhakahaere ki te whakangawari i te mahi me te tono i roto i te roopu ka taea, me te mahi aunoa i nga mahi whakahaere i mua me whakaoti ma te ringa.

Me pehea te Mahi a nga Kaiwhakahaere

Tautuhi Tauira Ka taea e Kubernetes te tautuhi i te maha e hiahiatia ana o nga pene e rere ana, a ka whakarite nga kaiwhakahaere kia mau tonu to raatau nama (ma te hanga me te whakakore i nga pene). He rite te mahi a te Kaiwhakahaere, me te taapiri i te huinga matauranga whakahaere ki tetahi rauemi Kubernetes paerewa me te kaiwhakahaere e taea ai e koe te mahi i etahi atu mahi hei tautoko i te maha o nga hinonga tono.

He pehea te rereke o tenei Tautuhinga Stateful, i hangaia mo nga tono e hiahia ana te roopu ki te whakarato ki a raatau nga rauemi tuuturu penei i te rokiroki raraunga, IP pateko ranei? Mo enei tono, ka taea e nga Kaiwhakahaere te whakamahi Tautuhinga Stateful (hei utu o Tautuhi Tauira) hei turanga, tuku aunoatanga taapiri: mahi i nga mahi e tika ana mo nga tukinga, hanga he taapiri, whakahou i te whirihoranga, aha atu.

Na pehea enei mahi katoa? Ko te kaiwhakahaere he daemon kaiwhakahaere e:

  1. ka ohauru ki te API takahanga i Kubernetes;
  2. ka whiwhi raraunga mai i a ia mo te punaha (mo tana Tautuhi Tauira, pākākano, ratonga etc.);
  3. ka whiwhi raraunga mo Nga Rauemi Tuatoru (tirohia nga tauira i raro nei);
  4. ka aro ki te ahua/huringa Nga Rauemi Tuatoru (hei tauira, ki te huri i te rahi, huri i te putanga, me etahi atu);
  5. ka tauhohe ki nga huringa o te ahua o te punaha (mo tona Tautuhi Tauira, pākākano, ratonga etc.);
  6. nui rawa:
    1. ka karanga ki te Kubernetes API ki te hanga i nga mea katoa e hiahiatia ana (ano, ko tana ake Tautuhi Tauira, pākākano, ratonga...),
    2. ka mahi i etahi mahi makutu (ki te whakangwari, ka taea e koe te whakaaro ka uru te Kaiwhakahaere ki roto i nga peera me te karanga i nga whakahau, hei tauira, ki te whakauru atu ki te roopu, ki te whakahou ranei i te whakatakotoranga raraunga ina whakahou ana i tetahi putanga).

Kaiwhakahaere mo Kubernetes: me pehea te whakahaere i nga tono mana
Inaa, ka kitea mai i te pikitia, ka taapirihia he tono motuhake ki a Kubernetes (he tikanga whakamahinga с Tautuhi Tauira), e kiia nei ko te Kaiwhakahaere. E noho ana i roto i te peera noa (te nuinga o te waa kotahi) a, hei tikanga, kei a ia anake te kawenga Mokowāine. Ka whakatinanahia e tenei tono kaiwhakahaere tana API - ahakoa ehara i te mea tika, engari na roto Nga Rauemi Tuatoru i Kubernetes.

Na, i muri i to tatou hanga i roto i Mokowāine Kaiwhakahaere, ka taea e taatau te taapiri atu Nga Rauemi Tuatoru.

Tauira mo etcd (tirohia i raro mo nga taipitopito):

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

Tauira 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

Nga Whakaritenga mo nga Kaiwhakahaere

I hangaia e CoreOS nga tauira matua i whakawhiwhia e nga miihini i te wa e mahi ana i nga Kaiwhakahaere. Ahakoa te mea ko nga Kaiwhakahaere katoa he tangata takitahi (i hangaia mo tetahi tono motuhake me ona ake ahuatanga me ona hiahia), me hanga to raatau hanga ki runga i tetahi momo anga e whakatau ana i nga whakaritenga e whai ake nei:

  1. Ko te whakaurunga me mahi ma te kotahi whakamahinga: kubectl hanga -f SOME_OPERATOR_URL/deployment.yaml - a kaua e rapua etahi atu mahi.
  2. Ina whakauruhia he Kaiwhakahaere ki Kubernetes, me hanga he momo-tuatoru hou (Tuatoru Rauemi). Hei whakarewa i nga tauira tono (nga tauira kapoipoi) me te whakahaere ano i a raatau (whakahou i nga putanga, whakarereke i te rahi, me etahi atu), ka whakamahia e te kaiwhakamahi tenei momo.
  3. I nga wa katoa ka taea, me whakamahi koe i nga mea taketake i hangaia ki nga Kubernetes, penei ratonga и Tautuhi Tauiraki te whakamahi i te waehere kua whakamatauria me te maarama.
  4. Me whai hototahi whakamuri o nga Kaiwhakahaere me te tautoko mo nga putanga tawhito o nga rauemi i hangaia e te kaiwhakamahi.
  5. Mena ka tangohia te Kaiwhakahaere, me mahi tonu te tono kaore he huringa.
  6. Me kaha nga kaiwhakamahi ki te tautuhi i te putanga tono e hiahiatia ana me te whakarite i nga whakahoutanga putanga tono. Ko te kore o nga whakahou rorohiko he puna noa o nga raruraru whakahaere me te haumarutanga, no reira me awhina nga Kaiwhakahaere i nga kaiwhakamahi mo tenei take.
  7. Me whakamatau nga kaiwhakahaere ki tetahi taputapu penei i te Chaos Monkey, e tohu ana i nga ngoikoretanga o nga poti, nga whirihoranga, me te whatunga.

etcd Kaiwhakahaere

Tauira Whakatinana Kaiwhakahaere - etcd Kaiwhakahaere, kua rite i te ra o te panuitanga o tenei kaupapa. He uaua te whirihoranga o te roopu etcd na te hiahia ki te pupuri i te koorama, te hiahia ki te whirihora ano i te mema o te roopu, te hanga taapiri, aha atu. Hei tauira, ko te whakamaarama a-ringa i te roopu etcd ko te tikanga me hanga e koe he ingoa DNS mo tetahi mema roopu hou, ka tiimata he hinonga etcd hou, ka whakamohio i te roopu mo te mema hou (etcdctl mema tāpiri). I roto i te take o te Kaiwhakahaere, ka hiahia te kaiwhakamahi ki te huri i te rahi o te tautau - ka puta aunoa nga mea katoa.

A, i te mea i hangaia ano te etcd i roto i te CoreOS, he mea tika kia kite i tana Kaiwhakahaere ka puta tuatahi. He pehea tana mahi? arorau kaiwhakahaere etcd ka whakatauhia e nga waahanga e toru:

  1. Matakitaki. Ka aroturuki te kaiwhakahaere i te ahua o te roopu ma te whakamahi i te API Kubernetes.
  2. Tātaritanga. Ka kitea nga rereketanga i waenga i te mana o naianei me te mea e hiahiatia ana (kua tautuhia e te whirihoranga kaiwhakamahi).
  3. Mahi. Ka whakatau i nga rereketanga kua kitea ma te whakamahi i nga API ratonga etcd me/ranei Kubernetes.

Kaiwhakahaere mo Kubernetes: me pehea te whakahaere i nga tono mana

Hei whakatinana i tenei arorau, kua whakaritea nga mahi i roto i te Kaiwhakahaere Waihanga/Whakangaromia (te hanga me te whakakore i nga mema huinga etcd) me Whakanuia (hurihia te maha o nga mema kapopuu). I tirohia te tika o tana mahi ma te whakamahi i tetahi taputapu i hangaia kia rite ki te Chaos Monkey mai i Netflix, ara. te patu i nga pene etcd matapōkeretia.

Mo te mahi katoa o etcd, ka whakaratohia e te Kaiwhakahaere etahi atu waahanga: Pūrua (aunoa me te kore e kitea e nga kaiwhakamahi te hanga kape taapiri - i roto i te whirihora he nui ki te whakatau me pehea te maha o te mahi me te maha ki te penapena - me te whakahoki mai i nga raraunga mai i a raatau) me whakamohoa (te whakahōu i nga whakaurunga etcd me te kore he waahi).

He aha te ahua o te mahi me te Kaiwhakahaere?

$ 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

Ko te mana o naianei o te etcd Operator he putanga beta, e hiahia ana kia rere a Kubernetes 1.5.3+ me etcd 3.0+. Kei te waatea te waehere puna me nga tuhinga (tae atu ki nga tohutohu mo te whakamahi). GitHub.

Ko tetahi atu tauira whakatinanatanga mai i CoreOS kua hangaia - Kaiwhakahaere Prometheus, engari kei roto tonu i te putanga alpha (kaore i whakatinanahia nga ahuatanga kua whakamaheretia).

Te mana me nga tumanako

5 marama kua pahemo mai i te panuitanga o nga Kaiwhakahaere Kubernetes. E rua noa nga whakatinanatanga e waatea ana i roto i te whare pupuri CoreOS mana (mo etcd me Prometheus). Ko nga mea e rua kaore ano kia eke ki o raatau putanga pumau, engari ka mau tonu nga mahi i ia ra.

Ka whakaaro nga kaiwhakawhanake "he mea kei te heke mai ka whakauruhia e nga kaiwhakamahi nga Kaiwhakahaere Postgres, Cassandra Operators, Redis Operators ranei i runga i o raatau kohinga Kubernetes me te mahi tahi me nga hinonga whakahiato o enei tono me te ngawari ki te tuku tauira o nga tono paetukutuku kore whenua i enei ra." Tuatahi Nga kaiwhakahaere mai i nga kaihanga tuatoru tino timata ki te puta:

I te huihuinga rorohiko kore utu nui a te Pakeha FOSDEM, i puta i te Hui-tanguru 2017 i Brussels, Josh Wood mai i CoreOS i whakapuaki i nga Kaiwhakahaere i roto Pūrongo (he ataata kei te hono!), me whai waahi ki te tipu o te rongonui o tenei ariā i roto i te hapori Open Source whanui.

PS Mauruuru mo to hiahia ki te tuhinga! Ohauru ki to maatau tari, kia kore ai e ngaro nga rauemi hou me nga tohutao mo te DevOps me te GNU/Linux whakahaere punaha - ka whakaputahia e matou i nga wa katoa!

Source: will.com

Tāpiri i te kōrero