Bidh còig a’ call nuair a thathar a’ cleachdadh a’ chiad iarrtas air Kubernetes

Bidh còig a’ call nuair a thathar a’ cleachdadh a’ chiad iarrtas air KubernetesFail le Aris-Dreamer

Tha mòran den bheachd gu bheil e gu leòr an tagradh a ghluasad gu Kubernetes (an dàrna cuid a’ cleachdadh Helm no le làimh) agus bidh iad toilichte. Ach chan eil e cho sìmplidh sin.

sgioba Mail.ru Cloud Solutions eadar-theangaich artaigil leis an innleadair DevOps Julian Gindi. Bidh e ag innse dè na duilgheadasan a thachair don chompanaidh aige tron ​​​​phròiseas imrich gus nach ceum thu air an aon ràcan.

Ceum a h-Aon: Stèidhich iarrtasan Pod agus Crìochan

Feuch an tòisich sinn le bhith a’ stèidheachadh àrainneachd ghlan anns am bi na pods againn a’ ruith. Bidh Kubernetes a’ dèanamh obair mhath ann a bhith a’ clàradh pods agus a’ làimhseachadh suidheachaidhean fàilligeadh. Ach thionndaidh e a-mach nach urrainn don chlàr-ama pod a chuir uaireannan ma tha e duilich tuairmse a dhèanamh air cia mheud goireas a dh’ fheumas e gus obrachadh gu soirbheachail. Seo far a bheil iarrtasan airson goireasan agus crìochan a’ tighinn am bàrr. Tha tòrr deasbaid ann mun dòigh as fheàrr air iarrtasan agus crìochan a shuidheachadh. Aig amannan tha e dha-rìribh a’ faireachdainn gur e barrachd ealain a th’ ann na saidheans. Seo an dòigh-obrach againn.

Iarrtasan pod - Is e seo am prìomh luach a bhios an clàr-ama a’ cleachdadh gus am pod a shuidheachadh san dòigh as fheàrr.

Bho Sgrìobhainnean Kubernetes: Bidh an ceum sìolaidh a’ dearbhadh an t-seata nodan far am faodar am pod a chlàradh. Mar eisimpleir, bidh sìoltachan PodFitsResources a’ sgrùdadh a bheil goireasan gu leòr aig nód gus iarrtasan ghoireasan sònraichte pod a shàsachadh.

Bidh sinn a’ cleachdadh iarrtasan tagraidh gus an tèid an cleachdadh gus tuairmse a dhèanamh air cia mheud goireas gu dearbh Feumaidh an tagradh e gus obrachadh ceart. San dòigh seo faodaidh an neach-clàraidh nodan a chuir gu fìrinneach. Bha sinn an toiseach airson iarrtasan a shuidheachadh le iomall gus dèanamh cinnteach gu robh àireamh mhòr gu leòr de ghoireasan aig gach pod, ach mhothaich sinn gun robh amannan clàraidh a’ dol suas gu mòr agus nach robh cuid de na pods a-riamh air an clàradh gu h-iomlan, mar nach d’ fhuaireadh iarrtasan stòrais air an son.

Anns a’ chùis seo, bhiodh an clàr-ama gu tric a’ putadh a-mach pods agus cha b’ urrainn dhaibh an ath-eagrachadh leis nach robh fios aig a’ phlèana smachd cia mheud goireas a bhiodh a dhìth air an tagradh, prìomh phàirt den algairim clàraidh.

Crìochan pod - tha seo na chrìoch nas soilleire don pod. Tha e a’ riochdachadh na h-uiread de ghoireasan a bhios an cruinneachadh a’ riarachadh don t-soitheach.

A-rithist, bho sgrìobhainnean oifigeil: Ma tha crìoch cuimhne 4 GiB aig soitheach, cuiridh an kubelet (agus ùine ruith an t-soithich) an gnìomh e. Chan eil an ùine ruith a’ leigeil leis a’ ghobhar barrachd a chleachdadh na a’ chrìoch ghoireasan ainmichte. Mar eisimpleir, nuair a bhios pròiseas ann an soitheach a’ feuchainn ri barrachd a chleachdadh na an ìre de chuimhne a tha ceadaichte, bidh kernel an t-siostaim a’ crìochnachadh a’ phròiseas le mearachd “a-mach à cuimhne” (OOM).

Faodaidh soitheach an-còmhnaidh barrachd ghoireasan a chleachdadh na tha air a shònrachadh san iarrtas stòrais, ach chan urrainn dha a-riamh barrachd a chleachdadh na tha air a shònrachadh sa chrìoch. Tha an luach seo duilich a shuidheachadh ceart, ach tha e glè chudromach.

Mas fheàrr, tha sinn airson gun atharraich feumalachdan stòrais pod thairis air cearcall-beatha pròiseas gun a bhith a’ cur bacadh air pròiseasan eile san t-siostam – sin an t-amas airson crìochan a shuidheachadh.

Gu mì-fhortanach, chan urrainn dhomh stiùireadh sònraichte a thoirt seachad air dè na luachan a bu chòir a shuidheachadh, ach tha sinn fhìn a 'cumail ris na riaghailtean a leanas:

  1. A’ cleachdadh inneal deuchainn luchdan, bidh sinn ag atharrais air ìre bun-loidhne de thrafaig agus a’ cumail sùil air cleachdadh ghoireasan pod (cuimhne agus pròiseasar).
  2. Shuidhich sinn na h-iarrtasan pod gu luach neo-riaghailteach ìosal (le crìoch stòrais timcheall air 5 uiread luach nan iarrtasan) agus cùm sùil orra. Nuair a tha iarrtasan ro ìosal, chan urrainn don phròiseas tòiseachadh, gu tric ag adhbhrachadh mhearachdan dìomhair Go runtime.

Thoir an aire gu bheil crìochan ghoireasan nas àirde a’ dèanamh clàradh nas duilghe leis gu bheil feum aig a’ phod air nòta targaid le goireasan gu leòr rim faighinn.

Smaoinich air suidheachadh far a bheil frithealaiche lìn aotrom agad le crìoch stòrais fìor àrd, abair 4 GB de chuimhne. Tha e coltach gum feum am pròiseas seo sgèile gu còmhnard, agus feumaidh gach modal ùr a bhith clàraichte air nód le co-dhiù 4 GB de chuimhne ri fhaighinn. Mura h-eil an leithid de nód ann, feumaidh am buidheann nòta ùr a thoirt a-steach gus am pod sin a phròiseasadh, a dh’ fhaodadh beagan ùine a thoirt. Tha e cudromach an eadar-dhealachadh eadar iarrtasan ghoireasan agus crìochan a chumail cho ìosal ‘s a ghabhas gus dèanamh cinnteach à sgèileadh luath is rèidh.

Ceum a dhà: stèidheachadh deuchainnean Beò agus Deònach

Is e seo cuspair seòlta eile a bhios gu tric air a dheasbad ann an coimhearsnachd Kubernetes. Tha e cudromach gum bi tuigse mhath agad air deuchainnean Beò agus Deisealachd oir tha iad a’ toirt seachad uidheamachd airson bathar-bog a ruith gu rèidh agus a’ lughdachadh ùine downt. Ach, faodaidh iad droch choileanadh adhbhrachadh don tagradh agad mura h-eil iad air an rèiteachadh gu ceart. Gu h-ìosal tha geàrr-chunntas air cò ris a tha an dà shampall coltach.

Beò a’ sealltainn a bheil an soitheach a’ ruith. Ma dh’ fhailicheas e, marbhaidh an kubelet an soitheach agus tha poileasaidh ath-thòiseachadh air a chomasachadh air a shon. Mura h-eil an soitheach uidheamaichte le probe Liveness, bidh an suidheachadh bunaiteach soirbheachail - seo na tha e ag ràdh ann an Sgrìobhainnean Kubernetes.

Bu chòir probes beòthalachd a bhith saor, a’ ciallachadh nach bu chòir dhaibh mòran ghoireasan ithe, oir bidh iad a’ ruith gu tric agus feumaidh iad innse do Kubernetes gu bheil an aplacaid a’ ruith.

Ma shuidhicheas tu an roghainn ruith a h-uile diog, cuiridh seo 1 iarrtas gach diog, mar sin bi mothachail gum bi feum air goireasan a bharrachd gus an trafaic seo a làimhseachadh.

Aig a ’chompanaidh againn, bidh deuchainnean Liveness a’ sgrùdadh prìomh phàirtean tagradh, eadhon ged nach eil an dàta (mar eisimpleir, bho stòr-dàta iomallach no tasgadan) làn ruigsinneach.

Tha sinn air na h-aplacaidean a rèiteachadh le puing crìochnachaidh "slàinte" a tha dìreach a 'tilleadh còd freagairt de 200. Tha seo na chomharra gu bheil am pròiseas a' ruith agus comasach air iarrtasan a ghiullachd (ach nach eil trafaig fhathast).

Eisimpleir Deisealachd a’ comharrachadh a bheil an soitheach deiseil airson iarrtasan a fhrithealadh. Ma dh’ fhailicheas an probe ullachaidh, bheir an rianadair puing-crìochnachaidh seòladh IP a’ pod air falbh bho phuingean crìochnachaidh a h-uile seirbheis a tha co-cheangailte ris a’ pod. Tha seo cuideachd air ainmeachadh ann an sgrìobhainnean Kubernetes.

Bidh luchd-sgrùdaidh ullachaidh ag ithe barrachd ghoireasan oir feumaidh iad a bhith air an cur chun backend ann an dòigh a tha a’ nochdadh gu bheil an tagradh deiseil airson gabhail ri iarrtasan.

Tha tòrr deasbaid anns a' choimhearsnachd a thaobh am bu chòir dhaibh cothrom fhaighinn air an stòr-dàta gu dìreach. Leis a’ chosgais a bharrachd (thèid sgrùdaidhean a dhèanamh gu tric, ach faodar an atharrachadh), cho-dhùin sinn airson cuid de thagraidhean, nach eilear a’ cunntadh cho deònach sa tha trafaic a fhrithealadh ach às deidh dearbhadh gu bheil clàran air an tilleadh bhon stòr-dàta. Rinn deuchainnean ullachaidh air an deagh dhealbhadh cinnteach gum biodh ìrean nas àirde de chothrom ann agus chuir iad às do ùine downt aig àm cleachdadh.

Ma cho-dhùnas tu an stòr-dàta a cheasnachadh gus deuchainn a dhèanamh air dè cho deiseil ‘s a tha an tagradh agad, dèan cinnteach gu bheil e cho saor sa ghabhas. Gabhamaid an t-iarrtas seo:

SELECT small_item FROM table LIMIT 1

Seo eisimpleir de mar a bhios sinn a’ rèiteachadh an dà luach seo ann an Kubernetes:

livenessProbe: 
 httpGet:   
   path: /api/liveness    
   port: http 
readinessProbe:  
 httpGet:    
   path: /api/readiness    
   port: http  periodSeconds: 2

Faodaidh tu cuid de roghainnean rèiteachaidh a bharrachd a chur ris:

  • initialDelaySeconds - cia mheud diog a thèid seachad eadar cur air bhog an t-soithich agus toiseach nan sampallan.
  • periodSeconds - àm feitheimh eadar ruith sampall.
  • timeoutSeconds - an àireamh de dhiogan às deidh sin tha an aonad air a mheas mar èiginn. Ùine cunbhalach.
  • failureThreshold - an àireamh de fhàilligidhean deuchainn mus tèid comharra ath-thòiseachadh a chuir chun pod.
  • successThreshold - an àireamh de probes soirbheachail mus tèid am pod a-steach don staid deiseil (às deidh fàilligeadh, nuair a thòisicheas am pod no nuair a thig e air ais).

Ceum a trì: a 'stèidheachadh phoileasaidhean lìonra bunaiteach airson a' pod

Tha cumadh-tìre lìonra “rèidh” aig Kubernetes; gu gnàthach, bidh a h-uile pod a ’conaltradh gu dìreach ri chèile. Ann an cuid de chùisean chan eil seo ion-mhiannaichte.

Is e cùis tèarainteachd a dh’ fhaodadh a bhith ann gum faodadh neach-ionnsaigh aon aplacaid so-leònte a chleachdadh gus trafaic a chuir chun a h-uile pod air an lìonra. Coltach ri iomadh raon tèarainteachd, tha prionnsapal an t-sochair as lugha a’ buntainn an seo. Mas fheàrr, bu chòir do phoileasaidhean lìonra sònrachadh gu soilleir dè na ceanglaichean eadar pods a tha ceadaichte agus nach eil.

Mar eisimpleir, gu h-ìosal tha poileasaidh sìmplidh a tha a’ diùltadh trafaic a tha a’ tighinn a-steach airson àite-ainm sònraichte:

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:  
 name: default-deny-ingress
spec:  
 podSelector: {}  
 policyTypes:  
   - Ingress

Sealladh den rèiteachadh seo:

Bidh còig a’ call nuair a thathar a’ cleachdadh a’ chiad iarrtas air Kubernetes
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
Gu mion-fhiosrachadh an seo.

Ceum a ceithir: giùlan àbhaisteach a 'cleachdadh dubhan agus init container

B’ e aon de na prìomh amasan againn cleachdadh a thoirt do Kubernetes gun ùine downt do luchd-leasachaidh. Tha seo duilich oir tha mòran roghainnean ann airson tagraidhean a dhùnadh agus na goireasan a chleachd iad a shaoradh.

Dh’ èirich duilgheadasan sònraichte le Nginx. Mhothaich sinn nuair a chaidh na pods sin a chuir a-steach ann an òrdugh, gun deach ceanglaichean gnìomhach a leigeil sìos mus deach an crìochnachadh gu soirbheachail.

Às deidh rannsachadh farsaing air-loidhne, tha e a ’tionndadh a-mach nach eil Kubernetes a’ feitheamh ri ceanglaichean Nginx a dhol a-mach mus cuir iad crìoch air a ’pod. A’ cleachdadh dubhan ro-stad, chuir sinn an gnìomh a leanas an gnìomh agus fhuair sinn cuidhteas ùine downt gu tur:

lifecycle: 
 preStop:
   exec:
     command: ["/usr/local/bin/nginx-killer.sh"]

Ach nginx-killer.sh:

#!/bin/bash
sleep 3
PID=$(cat /run/nginx.pid)
nginx -s quit
while [ -d /proc/$PID ]; do
   echo "Waiting while shutting down nginx..."
   sleep 10
done

Is e paradigm air leth feumail eile a bhith a’ cleachdadh shoithichean init gus tòiseachadh air tagraidhean sònraichte a làimhseachadh. Tha seo gu sònraichte feumail ma tha pròiseas imrich stòr-dàta agad le dian ghoireasan a dh’ fheumas a ruith mus tòisich an tagradh. Faodaidh tu cuideachd crìoch ghoireasan nas àirde a shònrachadh airson a’ phròiseis seo gun a bhith a’ suidheachadh a leithid de chrìoch airson a’ phrìomh iarrtas.

Is e sgeama cumanta eile faighinn gu dìomhaireachdan ann an soitheach init a bheir seachad na teisteanasan sin don phrìomh mhodal, a chuireas casg air ruigsinneachd gun chead air dìomhaireachdan bhon phrìomh mhodal tagraidh fhèin.

Mar as àbhaist, cuòt bho na sgrìobhainnean: Bidh soithichean init a’ ruith còd àbhaisteach no goireasan a lughdaicheadh ​​​​tèarainteachd ìomhaigh container an tagraidh air dhòigh eile. Le bhith a’ cumail innealan neo-riatanach air leth, bidh thu a’ cuingealachadh uachdar ionnsaigh ìomhaigh inneal an tagraidh.

Ceum a Còig: A 'rèiteachadh an Kernel

Mu dheireadh, bruidhnidh sinn mu theicneòlas nas adhartaiche.

Tha Kubernetes na àrd-ùrlar air leth sùbailte a leigeas leat eallach obrach a ruith mar a chì thu iomchaidh. Tha grunn thagraidhean àrd-choileanaidh againn a tha gu math dian air goireasan. Às deidh dhuinn deuchainnean luchdan farsaing a dhèanamh, fhuair sinn a-mach gu robh aon iarrtas a’ strì gus an luchd trafaic ris an robh dùil a làimhseachadh nuair a bha roghainnean bunaiteach Kubernetes ann an gnìomh.

Ach, leigidh Kubernetes leat soitheach sochair a ruith a dh’ atharraicheas paramadairean kernel a-mhàin airson pod sònraichte. Seo na chleachd sinn airson an àireamh as motha de cheanglaichean fosgailte atharrachadh:

initContainers:
  - name: sysctl
     image: alpine:3.10
     securityContext:
         privileged: true
      command: ['sh', '-c', "sysctl -w net.core.somaxconn=32768"]

Is e dòigh adhartach a tha seo nach eil feum air gu tric. Ach ma tha an tagradh agad a ’strì ri bhith a’ dèiligeadh ri luchdan trom, faodaidh tu feuchainn ri cuid de na roghainnean sin a tweaking. Barrachd mion-fhiosrachaidh mun phròiseas seo agus a 'suidheachadh luachan eadar-dhealaichte - mar a tha e an-còmhnaidh anns na sgrìobhainnean oifigeil.

Ann an co-dhùnadh

Ged a dh ’fhaodadh gum bi Kubernetes a’ coimhead mar fhuasgladh deiseil a-mach às a ’bhogsa, tha grunn phrìomh cheumannan ann a dh’ fheumas tu a ghabhail gus na tagraidhean agad a chumail a ’dol gu rèidh.

Tron imrich Kubernetes agad, tha e cudromach an “cearcall deuchainn luchdan” a leantainn: cuir air bhog an tagradh, luchdaich deuchainn air, cùm sùil air tomhasan agus giùlan sgèileachaidh, atharraich an rèiteachadh stèidhichte air an dàta sin, agus an uairsin cuir a-rithist an cearcall a-rithist.

Bi fìrinneach mun trafaic ris am biodh dùil agad agus feuch ri putadh seachad air gus faicinn dè na pàirtean a bhriseas an toiseach. Leis an dòigh-obrach ath-aithriseach seo, is dòcha nach bi ach beagan de na molaidhean clàraichte gu leòr airson soirbheachadh. No is dòcha gu feum e gnàthachadh nas doimhne.

Faighnich na ceistean seo dhut fhèin an-còmhnaidh:

  1. Cia mheud goireas a bhios tagraidhean a’ cleachdadh agus ciamar a dh’ atharraicheas an tomhas seo?
  2. Dè na fìor riatanasan sgèileachaidh? Dè an ìre de thrafaig a làimhsicheas an aplacaid gu cuibheasach? Dè mu dheidhinn trafaic àrd?
  3. Dè cho tric a dh’ fheumas an t-seirbheis sgèile gu còmhnard? Dè cho luath ‘s a dh’ fheumar pods ùra a thoirt air-loidhne gus trafaic fhaighinn?
  4. Dè cho ceart ‘s a tha na pods a’ dùnadh? A bheil seo riatanach idir? A bheil e comasach cleachdadh a choileanadh gun ùine downt?
  5. Ciamar as urrainn dhut cunnartan tèarainteachd a lughdachadh agus casg a chuir air milleadh bho pods cunnartach? A bheil ceadan no ruigsinneachd aig seirbheisean sam bith nach eil a dhìth orra?

Tha Kubernetes a’ toirt seachad àrd-ùrlar iongantach a leigeas leat na cleachdaidhean as fheàrr fhaighinn airson a bhith a’ cleachdadh mìltean de sheirbheisean ann am buidheann. Ach, tha gach tagradh eadar-dhealaichte. Uaireannan feumaidh buileachadh beagan a bharrachd obrach.

Gu fortanach, tha Kubernetes a 'toirt seachad an rèiteachadh riatanach gus na h-amasan teicnigeach uile a choileanadh. Le bhith a’ cleachdadh measgachadh de dh’ iarrtasan is chrìochan ghoireasan, probes Beò is Deisealachd, soithichean init, poileasaidhean lìonra, agus gleusadh kernel àbhaisteach, faodaidh tu àrd-choileanadh a choileanadh còmhla ri fulangas sgàinidh agus scalability luath.

Dè eile ri leughadh:

  1. Na cleachdaidhean as fheàrr agus na cleachdaidhean as fheàrr airson ruith shoithichean agus Kubernetes ann an àrainneachdan cinneasachaidh.
  2. 90+ innealan feumail airson Kubernetes: cleachdadh, riaghladh, sgrùdadh, tèarainteachd agus barrachd.
  3. An sianal againn timcheall air Kubernetes ann an Telegram.

Source: www.habr.com

Cuir beachd ann