Mar a shàbhaileas tu air cosgaisean sgòthan nuair a bhios tu ag obair le Kubernetes? Chan eil aon fhuasgladh ceart ann, ach tha an artaigil seo a’ toirt cunntas air grunn innealan a chuidicheas tu gus do ghoireasan a riaghladh nas èifeachdaiche agus na cosgaisean coimpiutaireachd sgòthan agad a lughdachadh.
Sgrìobh mi an artaigil seo le Kubernetes airson AWS san amharc, ach bidh e a’ buntainn (cha mhòr) san aon dòigh ri solaraichean sgòthan eile. Tha mi a’ gabhail ris gu bheil fèin-sgèileadh air a rèiteachadh aig a’ bhuidheann(an) agad mu thràth (brabhsair-fèin-ghluasadach). Le bhith a’ toirt air falbh ghoireasan agus a’ lughdachadh do chleachdadh cha shàbhail sin airgead dhut ach ma lùghdaicheas e cuideachd do chabhlach de nodan luchd-obrach (suidheachaidhean EC2).
Còmhdaichidh an artaigil seo:
a’ glanadh ghoireasan nach eilear a’ cleachdadh (cube-dorsair)
Tha e math a bhith ag obair ann an àrainneachd aig astar luath. Tha sinn ag iarraidh buidhnean teignigeach luathaich. Tha lìbhrigeadh bathar-bog nas luaithe cuideachd a’ ciallachadh barrachd cleachdadh PR, àrainneachdan ro-shealladh, prototypes, agus fuasglaidhean anailis. Tha a h-uile càil air a chleachdadh air Kubernetes. Cò aig a bheil an ùine airson cleachdadh deuchainn a ghlanadh le làimh? Tha e furasta dìochuimhneachadh mu bhith a’ cuir às do dheuchainn seachdaineach. Bidh bile na sgòthan ag èirigh mar thoradh air rudeigin a dhìochuimhnich sinn a dhùnadh:
(Henning Jacobs:
Zhiza:
(a’ luaidh) Corey Quinn:
Myth: Tha an cunntas AWS agad mar dhleastanas air an àireamh de luchd-cleachdaidh a tha agad.
Fact: Tha an sgòr AWS agad mar dhleastanas air an àireamh de innleadairean a tha agad.
Ivan Kurnosov (mar fhreagairt):
Fìor fhìrinn: Tha an sgòr AWS agad mar dhleastanas air an àireamh de rudan a dhìochuimhnich thu a chuir à comas / cuir às.)
Neach-gleidhidh Kubernetes (kube-dorsair) a’ cuideachadh le bhith a’ glanadh do bhuidheann. Tha rèiteachadh an dorsair sùbailte airson cleachdadh cruinneil agus ionadail:
Faodaidh riaghailtean air feadh na buidhne an ùine-beatha as àirde (TTL) a mhìneachadh airson cleachdadh PR/deuchainn.
Faodar goireasan fa leth a chomharrachadh le dorsair/ttl, mar eisimpleir gus an spìc/prototype a thoirt air falbh gu fèin-ghluasadach às deidh 7 latha.
Tha riaghailtean coitcheann air am mìneachadh ann am faidhle YAML. Tha an t-slighe aige a 'dol tron pharamadair --rules-file ann an cube-dorsair. Seo eisimpleir de riaghailt airson a h-uile àite ainm a thoirt air falbh le -pr- ann an ainm an dèidh dà latha:
Tha an eisimpleir a leanas a’ riaghladh cleachdadh leubail an tagraidh air na pods Deployment and StatefulSet airson a h-uile cleachdadh ùr / StatefulSets ann an 2020, ach aig an aon àm a’ ceadachadh deuchainnean a dhèanamh às aonais an leubail seo airson seachdain:
- id: require-application-label
# удалить deployments и statefulsets без метки "application"
resources:
- deployments
- statefulsets
# см. http://jmespath.org/specification.html
jmespath: "!(spec.template.metadata.labels.application) && metadata.creationTimestamp > '2020-01-01'"
ttl: 7d
Ruith demo le ùine cuibhrichte airson 30 mionaid air buidheann a tha a’ ruith kube-dorsair:
kubectl run nginx-demo --image=nginx
kubectl annotate deploy nginx-demo janitor/ttl=30m
Is e stòr eile de chosgaisean àrdachadh meudan leantainneach (AWS EBS). Cha bhith cuir às do Kubernetes StatefulSet a’ cuir às do na h-àireamhan leantainneach aige (PVC - PersistentVolumeClaim). Faodaidh meudan EBS nach deach a chleachdadh cosgaisean ceudan dolar gach mìos adhbhrachadh gu furasta. Tha feart aig Kubernetes Janitor airson PVCan nach deach a chleachdadh a ghlanadh. Mar eisimpleir, bheir an riaghailt seo air falbh a h-uile PVC nach eil air an cur suas le modal agus nach eil air an ainmeachadh le StatefulSet no CronJob:
# удалить все PVC, которые не смонтированы и на которые не ссылаются StatefulSets
- id: remove-unused-pvcs
resources:
- persistentvolumeclaims
jmespath: "_context.pvc_is_not_mounted && _context.pvc_is_not_referenced"
ttl: 24h
Faodaidh Kubernetes Janitor do chuideachadh gus do bhuidheann a chumail glan agus casg a chuir air cosgaisean coimpiutaireachd sgòthan bho bhith a’ càrnadh gu slaodach. Airson cleachdadh agus stiùireadh rèiteachaidh, lean README cube-dorsair.
Lùghdaich sgèileadh rè uairean neo-obrach
Mar as trice chan fheum siostaman deuchainn is stèidse obrachadh ach rè uairean obrach. Chan fheum cuid de thagraidhean cinneasachaidh, leithid innealan cùl-oifis / rianachd, ach ruigsinneachd cuibhrichte agus dh’ fhaodadh iad a bhith ciorramach thar oidhche.
Kubernetes Downscaler (kube-downscaler) a’ leigeil le luchd-cleachdaidh agus gnìomhaichean an siostam a lughdachadh rè uairean neo-obrach. Faodaidh cleachdadh agus StatefulSets sgèile gu mac-samhail neoni. Faodar CronJobs a chuir dheth. Tha Kubernetes Downscaler air a rèiteachadh airson cruinneachadh iomlan, aon àite ainm no barrachd, no goireasan fa leth. Faodaidh tu an dàrna cuid “ùine leisg” no, air an làimh eile, “ùine obrach” a shuidheachadh. Mar eisimpleir, gus sgèileadh a lughdachadh cho mòr ‘s as urrainn air oidhcheannan agus deireadh-sheachdainean:
image: hjacobs/kube-downscaler:20.4.3
args:
- --interval=30
# не отключать компоненты инфраструктуры
- --exclude-namespaces=kube-system,infra
# не отключать kube-downscaler, а также оставить Postgres Operator, чтобы исключенными БД можно было управлять
- --exclude-deployments=kube-downscaler,postgres-operator
- --default-uptime=Mon-Fri 08:00-20:00 Europe/Berlin
- --include-resources=deployments,statefulsets,stacks,cronjobs
- --deployment-time-annotation=deployment-time
Seo graf airson nodan luchd-obrach brabhsair a sgèileadh air deireadh-sheachdainean:
Le bhith a’ lughdachadh bho ~ 13 gu 4 nodan luchd-obrach gu cinnteach a’ dèanamh eadar-dhealachadh follaiseach anns a’ bhile AWS agad.
Ach dè ma dh’ fheumas mi a bhith ag obair aig àm “downtime” brabhsair? Faodar cuid de chleachdadh a bhith air an dùnadh a-mach gu maireannach bho sgèileadh le bhith a’ cur an downscaler / às-dùnadh: fìor mhothachadh. Faodar cleachdadh a chuir a-mach airson ùine le bhith a’ cleachdadh an downscaler/exclude-gus an nota le stampa-ama iomlan san cruth BBBB-MM-DD HH:MM (UTC). Ma tha feum air, faodar an cruinneachadh gu lèir a thoirt air ais le bhith a’ cleachdadh pod leis an nota downscaler/force-uptime, mar eisimpleir, le bhith a’ cur air bhog nginx bàn:
kubectl run scale-up --image=nginx
kubectl annotate deploy scale-up janitor/ttl=1h # удалить развертывание через час
kubectl annotate pod $(kubectl get pod -l run=scale-up -o jsonpath="{.items[0].metadata.name}") downscaler/force-uptime=true
Faic README kube-downscaler, ma tha ùidh agad ann an stiùireadh cleachdadh agus roghainnean a bharrachd.
Cleachd fèin-sgèileadh còmhnard
Bidh mòran thagraidhean/seirbheisean a’ dèiligeadh ri pàtran luchdachadh fiùghantach: uaireannan bidh na modalan aca leisg, agus uaireannan bidh iad ag obair aig làn chomas. Chan eil e eaconamach a bhith ag obrachadh cabhlach maireannach de pods gus dèiligeadh ris an luchd as àirde. Bidh Kubernetes a’ toirt taic do sgèileadh fèin-ghluasadach thairis air goireas Sgèilear fèin-ghluasadach Pod còmhnard (HPA). Tha cleachdadh CPU gu tric na dheagh chomharra airson sgèileadh:
Tha Zalando air pàirt a chruthachadh gus meatrach àbhaisteach a cheangal airson sgèileadh: Adaptor Kube Metrics (kube-metrics-adapter) na inneal-atharrachaidh metrics coitcheann airson Kubernetes as urrainn metrics àbhaisteach agus taobh a-muigh a chruinneachadh agus a fhrithealadh airson fèin-sgèileadh còmhnard de pods. Bidh e a’ toirt taic do sgèileadh stèidhichte air metrics Prometheus, ciudhaichean SQS, agus suidheachaidhean eile. Mar eisimpleir, gus do chleachdadh a sgèileadh gu meatrach àbhaisteach air a riochdachadh leis an tagradh fhèin mar JSON ann an / metrics cleachdadh:
Bu chòir rèiteachadh fèin-sgèile còmhnard le HPA a bhith mar aon de na gnìomhan bunaiteach gus èifeachdas a leasachadh airson seirbheisean gun stàit. Tha taisbeanadh aig Spotify leis an eòlas agus na molaidhean aca airson HPA: meud do chleachdadh, chan e do sporan.
Lùghdaich cus glèidhidh stòrais
Bidh eallach obrach Kubernetes a’ dearbhadh na feumalachdan CPU / cuimhne aca tro “iarrtasan stòrais.” Tha goireasan CPU air an tomhas ann an coraichean brìgheil no mar as trice ann am “millicores”, mar eisimpleir tha 500m a’ ciallachadh 50% vCPU. Tha goireasan cuimhne air an tomhas ann am bytes, agus faodar iar-leasachan cumanta a chleachdadh, leithid 500Mi, a tha a’ ciallachadh 500 megabytes. Bidh iarrtasan stòrais ag iarraidh comas “glasadh” air nodan luchd-obrach, a’ ciallachadh nach fàg pod le iarrtas CPU 1000m air nód le 4 vCPUn ach 3 vCPUn ri fhaighinn airson pods eile. [1]
Slack (barrachd stòras) Is e an diofar eadar goireasan a chaidh iarraidh agus fìor chleachdadh. Mar eisimpleir, tha ~ 2 GiB de chuimhne “cus” aig pod a dh’ iarras 200 GiB de chuimhne ach nach cleachd ach 1,8 MiB. Tha cus a’ cosg airgead. Faodaidh aon tuairmse a dhèanamh gu bheil 1 GiB de chuimhne gun fheum a’ cosg ~ $ 10 gach mìos. [2]
Aithisg Ghoireasan Kubernetes (kube-resource-report) a’ taisbeanadh cus stòrasan agus cuidichidh e thu le bhith a’ dearbhadh comas sàbhalaidh:
Aithisg Ghoireasan Kubernetes a’ sealltainn an còrr air a chruinneachadh le tagradh agus àithne. Leigidh seo leat àiteachan a lorg far am faodar iarrtasan ghoireasan a lùghdachadh. Chan eil an aithisg HTML a chaidh a chruthachadh a’ toirt seachad ach dealbh de chleachdadh ghoireasan. Bu chòir dhut sùil a thoirt air cleachdadh CPU/cuimhne thar ùine gus iarrtasan ghoireasan iomchaidh a dhearbhadh. Seo cairt Grafana airson seirbheis “àbhaisteach” CPU-trom: tha a h-uile pod a ’cleachdadh mòran nas lugha na na coraichean CPU 3 a chaidh iarraidh:
Le bhith a’ lughdachadh iarrtas CPU bho 3000m gu ~ 400m bidh sin a’ saoradh ghoireasan airson eallach obrach eile agus a’ leigeil leis a’ bhuidheann a bhith nas lugha.
Ach a bheil sinn dha-rìribh ag iarraidh air daoine luachan atharrachadh ann am faidhlichean YAML? Chan e, faodaidh innealan a dhèanamh tòrr nas fheàrr! Cubernetes Inghearach Pod Autoscaler (VPA) dìreach sin: ag atharrachadh iarrtasan stòrais agus cuingeadan a rèir an eallach obrach. Seo eisimpleir de ghraf de iarrtasan Prometheus CPU (loidhne tana gorm) air atharrachadh le VPA thar ùine:
Òrain bho Fairwind na inneal a chruthaicheas VPA airson gach cleachdadh ann an ainm-àite agus an uairsin a’ taisbeanadh moladh VPA air an deas-bhòrd aige. Faodaidh e luchd-leasachaidh a chuideachadh gus na h-iarrtasan CPU / cuimhne ceart a shuidheachadh airson na tagraidhean aca:
Mu dheireadh ach chan e as ìsle, faodar cosgaisean AWS EC2 a lughdachadh le bhith a ’cleachdadh suidheachaidhean Spot mar nodan neach-obrach Kubernetes [3]. Tha eisimpleirean spot rim faighinn aig lasachadh suas ri 90% an taca ri prìsean On-Demand. Tha ruith Kubernetes air EC2 Spot na mheasgachadh math: feumaidh tu grunn sheòrsaichean eisimpleirean a shònrachadh airson ruigsinneachd nas àirde, a’ ciallachadh gum faigh thu nód nas motha airson an aon phrìs no prìs nas ìsle, agus faodar an comas nas motha a chleachdadh le eallach obrach Kubernetes container.
Mar a ruitheas tu Kubernetes air EC2 Spot? Tha grunn roghainnean ann: cleachd seirbheis treas-phàrtaidh mar SpotInst (ris an canar a-nis “Spot”, na faighnich dhomh carson), no dìreach cuir Spot AutoScalingGroup (ASG) ris a’ bhuidheann agad. Mar eisimpleir, seo criomag CloudFormation airson Spot ASG “optimized-comas” le iomadh seòrsa eisimpleir:
Dè na cleachdaidhean as fheàrr a th ’agad airson cosgaisean sgòthan a shàbhaladh air Kubernetes? Feuch an cuir thu fios thugam aig Twitter (@try_except_).
[1] Gu dearbh, bidh nas lugha na 3 vCPUn fhathast comasach a chleachdadh leis gu bheil toradh an nód air a lughdachadh le goireasan siostam glèidhte. Tha Kubernetes a’ dèanamh eadar-dhealachadh eadar comas nód fiosaigeach agus goireasan “solaraichte” (Node ri riarachadh).
[2] Eisimpleir àireamhachaidh: tha aon eisimpleir m5.large le 8 GiB de chuimhne ~$84 sa mhìos (eu-central-1, On-Demand), i.e. tha bacadh nód 1/8 timcheall air ~ $ 10 / mìos.
[3] Tha tòrr a bharrachd dhòighean ann air do bhile EC2 a lughdachadh, leithid Cùisean Glèidhte, Plana Caomhnaidh, msaa. - cha bhith mi a’ còmhdach na cuspairean sin an seo, ach bu chòir dhut gu cinnteach coimhead a-steach orra!