Mu dheidhinn fàs mòr-chòrdte Kubernetes

Hi Habr!

Aig deireadh an t-samhraidh, tha sinn airson do chuimhneachadh gu bheil sinn a 'leantainn oirnn ag obair air a' chuspair Kubernetes agus chuir iad romhpa artaigil fhoillseachadh bho Stackoverflow a’ sealltainn suidheachadh a’ phròiseict seo aig toiseach an Ògmhios.

Mu dheidhinn fàs mòr-chòrdte Kubernetes

Feuch ri leughadh!

Aig àm sgrìobhaidh an artaigil seo, tha aois Kubernetes timcheall air. sia bliadhna a dh'aois, agus thar an dà bhliadhna a dh’ fhalbh tha e air fàs cho mòr is gu bheil e air a mheas gu cunbhalach am measg as fheàrr leotha àrd-ùrlaran. Tha Kubernetes san treas àite am-bliadhna. Airson geàrr-chunntas: Tha Kubernetes na àrd-ùrlar a chaidh a dhealbhadh airson a bhith a’ ruith agus a’ cur air dòigh eallach obrach le soithichean.

Thòisich soithichean mar dhealbhadh sònraichte airson pròiseasan dealachaidh ann an Linux; tha soithichean air an toirt a-steach bho 2007 cgroups, agus bho 2002 - ainmean-àite. Chaidh soithichean a dhealbhadh eadhon nas fheàrr ro 2008, nuair a bha e ri fhaighinn LXC, agus leasaich Google an uidheamachd corporra a-staigh aige fhèin ris an canar Borg, far am bheil " a h-uile obair deanta ann an soithichean." Às an seo tha sinn a 'dol air adhart gu 2013, nuair a chaidh a' chiad fhoillseachadh de Docker a chumail, agus mu dheireadh thàinig soithichean gu bhith na fhuasgladh mòr-chòrdte. Aig an àm sin, b 'e am prìomh inneal airson orchestration container Mesos, ged nach robh e mòr-chòrdte. Chaidh Kubernetes fhoillseachadh an toiseach ann an 2015, agus às deidh sin thàinig an inneal seo gu bhith na inbhe de facto ann an raon orchestration container.

Gus feuchainn ri tuigsinn carson a tha fèill cho mòr air Kubernetes, feuchaidh sinn ri beagan cheistean a fhreagairt. Cuin a b’ e an turas mu dheireadh a b’ urrainn do luchd-leasachaidh aontachadh air mar a bu chòir tagraidhean a chuir gu cinneasachadh? Cia mheud leasaiche a tha fios agad a bhios a’ cleachdadh nan innealan leis gu bheil iad air an toirt seachad a-mach às a’ bhogsa? Cia mheud rianadair sgòthan a tha ann an-diugh nach eil a’ tuigsinn mar a tha tagraidhean ag obair? Bheir sinn sùil air na freagairtean do na ceistean sin san artaigil seo.

Bun-structair mar YAML

Anns an t-saoghal a chaidh bho Puppet and Chef gu Kubernetes, b ’e aon de na h-atharrachaidhean as motha an gluasad bho“ bun-structar mar chòd ”gu“ bun-structar mar dàta ”- gu sònraichte, mar YAML. Faodar a h-uile goireas ann an Kubernetes, a tha a’ toirt a-steach pods, rèiteachaidhean, suidheachaidhean air an cleachdadh, meudan, msaa, a mhìneachadh gu furasta ann am faidhle YAML. Mar eisimpleir:

apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80

Tha an sealladh seo ga dhèanamh nas fhasa do phroifeiseantaich DevOps no SRE an eallach obrach a chuir an cèill gu h-iomlan gun a bhith a’ sgrìobhadh còd ann an cànanan leithid Python no Javascript.

Tha buannachdan eile bho bhith a’ cur air dòigh bun-structar mar dàta a’ toirt a-steach:

  • Smachd Tionndadh GitOps no Git Operations. Leigidh an dòigh-obrach seo leat a h-uile faidhle Kubernetes YAML a chumail ann an stòran git, gus an urrainn dhut sùil a chumail gu dìreach nuair a chaidh atharrachadh a dhèanamh, cò a rinn e, agus dè dìreach a dh’ atharraich. Bidh seo ag àrdachadh follaiseachd gnìomhachd air feadh na buidhne agus a’ leasachadh èifeachdas obrachaidh le bhith a’ cur às do mhì-chinnt, gu sònraichte far am bu chòir do luchd-obrach coimhead airson na goireasan a tha a dhìth orra. Aig an aon àm, bidh e nas fhasa atharrachaidhean a dhèanamh gu fèin-ghluasadach air goireasan Kubernetes le bhith dìreach a ’tighinn còmhla ri iarrtas tarraing.
  • Scalability. Nuair a tha goireasan air am mìneachadh mar YAML, bidh e air leth furasta do ghnìomhaichean brabhsair àireamh no dhà atharrachadh ann an goireas Kubernetes, agus mar sin ag atharrachadh mar a bhios e a’ sgèile. Tha Kubernetes a ’toirt seachad uidheamachd airson fèin-sgèileadh còmhnard de pods, a dh’ fhaodar a chleachdadh gus faighinn a-mach gu h-iomchaidh dè an àireamh as lugha agus as àirde de pods a tha a dhìth ann an rèiteachadh cleachdadh sònraichte gus ìrean trafaic ìosal is àrd a làimhseachadh. Mar eisimpleir, ma tha thu air rèiteachadh a chuir a-steach a dh’ fheumas comas a bharrachd mar thoradh air spìc obann ann an trafaic, faodar maxReplicas atharrachadh bho 10 gu 20:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 1
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

  • Tèarainteachd agus riaghladh. Tha YAML air leth math airson measadh a dhèanamh air mar a tha cùisean gan cleachdadh ann an Kubernetes. Mar eisimpleir, tha dragh mòr mu thèarainteachd co-dhiù a tha na h-uallaichean obrach agad a’ ruith mar neach-cleachdaidh neo-rianachd. Anns a 'chùis seo, is dòcha gum feum sinn innealan mar connsachadh, neach-dearbhaidh YAML/JSON, a bharrachd Fosgailte Agent Poileasaidh, neach-dearbhaidh poileasaidh gus dèanamh cinnteach gu bheil an co-theacsa Co-theacs tèarainteachd chan eil na h-uallaichean obrach agad a’ leigeil leis a’ ghobhar ruith le sochairean rianadair. Ma tha feum air, faodaidh luchd-cleachdaidh poileasaidh sìmplidh a chuir an sàs guidheam, Mar seo:

package main

deny[msg] {
  input.kind = "Deployment"
  not input.spec.template.spec.securityContext.runAsNonRoot = true
  msg = "Containers must not run as root"
}

  • Roghainnean airson amalachadh le solaraiche sgòthan. Is e aon de na gluasadan as ainmeil ann an teicneòlas àrd an latha an-diugh a bhith a’ ruith eallach obrach air solaraichean sgòthan poblach. A 'cleachdadh na co-phàirt sgòth-solaraiche Leigidh Kubernetes le buidheann sam bith amalachadh leis an t-solaraiche sgòthan air a bheil e a’ ruith. Mar eisimpleir, ma ruitheas neach-cleachdaidh tagradh ann an Kubernetes air AWS agus gu bheil e airson an tagradh sin a nochdadh tro sheirbheis, bidh an solaraiche sgòthan a’ cuideachadh le bhith a ’cruthachadh na seirbheis gu fèin-ghluasadach. LoadBalancera bheir seachad an cothromachadh luchd gu fèin-ghluasadach Amazon Elastic Load Balancergus trafaic ath-stiùireadh gu pods tagraidh.

Leudachadh

Tha Kubernetes gu math leudachail agus tha luchd-leasachaidh dèidheil air. Tha seata de ghoireasan rim faighinn leithid pods, cleachdadh, StatefulSets, dìomhaireachd, ConfigMaps, etc. Fìor, faodaidh luchd-cleachdaidh agus luchd-leasachaidh goireasan eile a chuir ris an fhoirm mìneachaidhean goireasan àbhaisteach.

Mar eisimpleir, ma tha sinn airson goireas a mhìneachadh CronTab, faodaidh tu rudeigin mar seo a dhèanamh:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.my.org
spec:
  group: my.org
  versions:
    - name: v1
      served: true
      storage: true
      Schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                  pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
                replicas:
                  type: integer
                  minimum: 1
                  maximum: 10
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

Nas fhaide air adhart is urrainn dhuinn goireas CronTab a chruthachadh mar seo:

apiVersion: "my.org/v1"
kind: CronTab
metadata:
  name: my-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 5

Is e roghainn eile airson leudachadh ann an Kubernetes gum faod an leasaiche na h-aithrisean aige fhèin a sgrìobhadh. Obraiche na phròiseas sònraichte ann am buidheann Kubernetes a bhios ag obair a rèir an “cuairt-smachd" Le cuideachadh bho ghnìomhaiche, faodaidh an neach-cleachdaidh riaghladh CRDn (mìneachaidhean stòrais àbhaisteach) a dhèanamh fèin-ghluasadach le bhith ag iomlaid fiosrachaidh le Kubernetes API.

Tha grunn innealan sa choimhearsnachd a tha ga dhèanamh furasta do luchd-leasachaidh na gnìomhaichean aca fhèin a chruthachadh. Nam measg - Frèam gnìomhaiche agus a chuid SDK gnìomhaiche. Tha an SDK seo a’ toirt seachad bunait às an urrainn do leasaiche tòiseachadh gu luath air gnìomhaiche a chruthachadh. Canaidh sinn gun urrainn dhut tòiseachadh bhon loidhne-àithne rudeigin mar seo:

$ operator-sdk new my-operator --repo github.com/myuser/my-operator

Bidh seo a’ cruthachadh a’ chòd boilerplate airson do ghnìomhaiche, a’ toirt a-steach faidhlichean YAML agus còd Golang:

.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go

An uairsin faodaidh tu na APIan agus an rianadair a tha a dhìth a chur ris, mar seo:

$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService

$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService

An uairsin, mu dheireadh, cruinnich an gnìomhaiche agus cuir gu clàr an t-soithich agad:

$ operator-sdk build your.container.registry/youruser/myapp-operator

Ma tha an leasaiche ag iarraidh eadhon barrachd smachd, faodar an còd boilerplate ann am faidhlichean Go atharrachadh. Mar eisimpleir, gus mion-fhiosrachadh an rianadair atharrachadh, faodaidh tu am faidhle atharrachadh controller.go.

Pròiseact eile A H-UILE, a’ leigeil leat aithrisean a chruthachadh a’ cleachdadh dìreach faidhlichean dearbhach YAML. Mar eisimpleir, bhiodh gnìomhaiche airson Apache Kafka air a mhìneachadh timcheall air mar sin. Leis, faodaidh tu cruinneachadh Kafka a chuir a-steach air mullach Kubernetes le dìreach òrdugh no dhà:

$ kubectl kudo install zookeeper
$ kubectl kudo install kafka

Agus an uairsin rèitich e le òrdugh eile:

$ kubectl kudo install kafka --instance=my-kafka-name 
            -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 
            -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m 
            -p BROKER_COUNT=5 -p BROKER_MEM=4096m 
            -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 
            -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20

Ùr-ghnàthachadh

Thairis air na beagan bhliadhnaichean a dh ’fhalbh, tha fiosan mòra Kubernetes air a bhith a’ tighinn a-mach a h-uile beagan mhìosan - is e sin, trì gu ceithir prìomh fhiosan gach bliadhna. Chan eil an àireamh de fheartan ùra a chaidh a thoirt a-steach anns gach fear dhiubh a’ dol sìos. A bharrachd air an sin, chan eil comharran sam bith ann gu bheil iad a’ fàs nas slaodaiche eadhon anns na h-amannan duilich sin - thoir sùil air an t-suidheachadh a th’ ann an-dràsta Pròiseact gnìomhachd Kubernetes air Github.

Leigidh comasan ùra leat gnìomhachd a chruinneachadh ann an dòigh nas sùbailte thairis air eallach obrach eadar-mheasgte. A bharrachd air an sin, tha barrachd smachd aig prògramadairean nuair a bhios iad a’ cleachdadh thagraidhean gu dìreach gu cinneasachadh.

Coimhearsnachd

Is e prìomh phàirt eile de chòrd Kubernetes neart a choimhearsnachd. Ann an 2015, nuair a ràinig e dreach 1.0, fhuair Kubernetes taic bho Bunait Coimpiutaireachd Dùthchasach Cloud.

Tha diofar choimhearsnachdan ann cuideachd SIG (Buidhnean le Ùidh Shònraichte) le fòcas air a bhith ag obair air diofar raointean de Kubernetes mar a bhios am pròiseact a’ tighinn air adhart. Tha na buidhnean sin an-còmhnaidh a’ cur feartan ùra ris, a’ dèanamh a bhith ag obair le Kubernetes nas goireasaiche agus nas goireasaiche.

Bidh an Cloud Native Foundation cuideachd a’ toirt aoigheachd do CloudNativeCon / KubeCon, a tha, aig àm sgrìobhaidh, mar a’ cho-labhairt stòr fosgailte as motha san t-saoghal. Mar as trice air a chumail trì tursan sa bhliadhna, bidh e a’ toirt còmhla mìltean de phroifeiseantaich a tha airson Kubernetes agus an eag-shiostam aige a leasachadh, a bharrachd air a bhith ag ionnsachadh feartan ùra a nochdas a h-uile trì mìosan.

A bharrachd air an sin, tha Cloud Native Foundation air Comataidh Sgrùdaidh Teicnigeach, a bhios, còmhla ri SIGn, a’ dèanamh lèirmheas air feadhainn ùra agus gnàthaichte pròiseactan airgead le fòcas air eag-shiostam nan sgòthan. Bidh a’ mhòr-chuid de na pròiseactan sin a’ cuideachadh le bhith a’ leasachadh neartan Kubernetes.

Mu dheireadh, tha mi a 'creidsinn nach biodh Kubernetes cho soirbheachail' sa tha e às aonais oidhirpean mothachail na coimhearsnachd air fad, far am bi daoine a 'cumail ri chèile ach aig an aon àm a' cur fàilte air daoine a tha air ùr thighinn a-steach don bhuaile.

An àm ri teachd

Is e aon de na prìomh dhùbhlain a dh’ fheumas luchd-leasachaidh dèiligeadh ris san àm ri teachd an comas fòcas a chuir air mion-fhiosrachadh a ’chòd fhèin, agus chan ann air a’ bhun-structar anns a bheil e a ’ruith. Bidh e a 'coinneachadh ris na gluasadan sin paradigm ailtireachd gun fhrithealaiche, a tha mar aon den fheadhainn as adhartaiche an-diugh. Tha frèaman adhartach ann mu thràth, m.e. sgeimheach и Fosgailte, a bhios a’ cleachdadh Kubernetes gus am bun-structar a thoirt air falbh bhon leasaiche.

Anns an artaigil seo, cha do rinn sinn ach sgrìobadh air uachdar staid làithreach Kubernetes - gu dearbh, chan eil ann ach bàrr na beinne-deighe. Tha mòran ghoireasan, comasan agus rèiteachadh eile aig luchd-cleachdaidh Kubernetes.

Source: www.habr.com

Cuir beachd ann