10 Tric ac Awgrymiadau Gorau Kubernetes

10 Tric ac Awgrymiadau Gorau Kubernetes

Mae llawer o lenyddiaeth gyfeiriol ar y Rhyngrwyd, ond weithiau'r cyngor symlaf yw'r mwyaf gwerthfawr. Tîm Kubernetes aaS o Mail.ru wedi'i gyfieithu detholiad o ddeg triciau ac awgrymiadau, a gasglodd awdur yr erthygl ar ôl blwyddyn o weithio gyda Kubernetes. Nid yw'r awgrymiadau'n cael eu didoli yn ôl pwysigrwydd, ond credwn y bydd pawb yn dod o hyd i rywbeth defnyddiol drostynt eu hunain.

Y gorchymyn symlaf i weithio gyda Kubernetes

I ddechrau, efallai mai'r weithred symlaf a mwyaf defnyddiol wrth weithio gyda Kubernetes. Mae'r gorchymyn canlynol yn galluogi cwblhau gorchymyn kubectl mewn cragen bash:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Autocomplete kubectl yn cael ei ysgrifennu i'r ffeil .bashrc a bydd yn cael ei actifadu'n awtomatig bob tro y bydd y gragen yn cychwyn. Mae hyn yn cyflymu teipio gorchmynion hir a pharamedrau megis all-namespaces. Darllenwch fwy yn Kubernetes cymorth bash.

Cof rhagosodedig a chyfyngiadau CPU mewn gofod enw

Os yw'r cais wedi'i ysgrifennu'n anghywir, er enghraifft, mae'n agor cysylltiad newydd â'r gronfa ddata bob eiliad ond byth yn ei gau, yna mae gan y clwstwr gollyngiad cof. Ac os nad oes gan y cymhwysiad derfyn cof wedi'i osod yn ystod y defnydd, gall hyn arwain at fethiant nod.

Er mwyn atal hyn, mae Kubernetes yn caniatáu ichi osod cyfyngiadau rhagosodedig fesul gofod enw. Maent wedi'u hysgrifennu yn y ffeil yaml ar gyfer gofod enw penodol. Dyma enghraifft o ffeil o'r fath:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

Creu yaml o'r fath a'i gymhwyso i unrhyw ofod enw. Er enghraifft, i'r gofod enw limit-example. Nawr bydd gan unrhyw gynhwysydd a ddefnyddir yn y gofod enw hwn derfyn o 512Mi, oni bai bod terfyn unigol arall wedi'i osod yn ychwanegol ar gyfer y cynhwysydd hwn.

Casgliad sbwriel mewn fersiynau hŷn o Kubernetes

Mae Kubelet yn ddiofyn yn dechrau casglu sbwriel pan var/lib/docer yn meddiannu 90% o'r gofod disg sydd ar gael. Mae hyn yn wych, fodd bynnag, tan Kubernetes 1.7 nid oedd cyfyngiad rhagosodedig ar nifer yr inodau a ddefnyddiwyd, sy'n cyfateb i nifer y ffeiliau yn y system ffeiliau.

Eich cynhwysydd o bosibl var/lib/docer dim ond 50% o'r gofod disg y gall ei ddefnyddio, ond gall redeg allan o inodes, a fydd yn achosi problemau i weithwyr.

Mewn fersiynau hŷn o kubelet o 1.4 i 1.6 bydd yn rhaid i chi ychwanegu'r faner hon:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

Mewn fersiynau 1.7 a fersiynau diweddarach mae'r faner hon wedi'i gosod yn ddiofyn. Fodd bynnag, nid yw fersiynau blaenorol yn monitro terfyn yr inod.

Minikube... Kubernetes lleol bach ond pwerus

Minikube yw'r ffordd hawsaf o redeg clwstwr Kubernetes lleol. Mae'n cael ei lansio gyda gorchymyn syml:

minikube start

Mae rhedeg y gorchymyn hwn yn arwain at glwstwr Kubernetes go iawn yn rhedeg ar eich cyfrifiadur.

10 Tric ac Awgrymiadau Gorau Kubernetes
Ffynhonnell darlunio

Y tric yw sut i adeiladu'r cais a'i redeg yn lleol ar y clwstwr hwnnw. Oni bai y cyfarwyddir yn benodol, bydd delwedd y Docker yn cael ei hadeiladu ar eich cyfrifiadur ac nid ar y clwstwr.

Er mwyn gorfodi Docker i wthio'r ddelwedd i'r clwstwr Kubernetes lleol, rhoddir y gorchymyn canlynol i'r peiriant docwr:

eval $(minikube docker-env)

Nawr gallwn adeiladu ceisiadau ar glwstwr Kubernetes lleol.

Peidiwch â rhoi mynediad kubectl i bawb

Mae hyn yn ymddangos yn amlwg, ond os yw timau lluosog yn defnyddio'r un clwstwr ar gyfer eu cymwysiadau (sef yr hyn y crëwyd Kubernetes ar ei gyfer), ni ddylech chi roi i bawb yn unig kubectl. Mae'n well gwahanu'r gorchmynion, gan neilltuo gofod enw ei hun i bob un ohonynt a chyfyngu mynediad gan ddefnyddio polisïau RBAC.

Gallwch gael eich drysu trwy aseinio hawliau i gyrchu, darllen, creu, dileu a gweithrediadau eraill ar gyfer pob pod. Ond y prif beth yw cyfyngu ar fynediad i gyfrinachau, gan ei ganiatáu i weinyddwyr yn unig. Fel hyn byddwn yn gwahaniaethu rhwng y rhai sy'n gallu gweinyddu'r clwstwr a'r rhai sy'n gallu defnyddio'r clwstwr yn syml.

Rheoli Cyllidebau Podiau

Sut i sicrhau dim amser segur ar gyfer cais mewn clwstwr Kubernetes? PodDisruptionBudget ac eto PodDisruptionBudget.

Caiff clystyrau eu diweddaru o bryd i'w gilydd a chaiff nodau eu gwagio. Does dim byd yn aros yn ei unfan, dyna'r realiti. Dylai pob defnydd gyda mwy nag un achos gynnwys PDB (PodDisruptionBudget). Mae'n cael ei greu mewn ffeil yaml syml sy'n cael ei gymhwyso i'r clwstwr. Mae ardal sylw PDB penodol yn cael ei bennu gan ddetholwyr label.

Nodyn: Dim ond pan fydd y toriad cyllidebol yn wrthdroadwy y caiff cyllideb y PDB ei hystyried (aflonyddwch gwirfoddol). Mewn sefyllfaoedd fel methiannau caledwedd, ni fydd PDB yn gweithio.

Enghraifft o PDB:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

Y ddau brif baramedr yw matchLabels и minAvailable. Mae'r paramedr cyntaf yn nodi pa geisiadau y mae'r gyllideb yn berthnasol iddynt. Er enghraifft, os oes gen i osodiadau gyda labeli app: app-a и app: app-b, yna dim ond i'r un cyntaf y bydd y PDB hwn yn berthnasol.

Paramedr minAvailable cymryd i ystyriaeth wrth wagio (glanhau) y nod. Er enghraifft, yn ein hesiampl, yn ystod gwagio, mae pob achos yn cael ei droi allan app: app-a, ac eithrio dau.

Mae hyn yn caniatáu ichi reoli faint o achosion o'r rhaglen ddylai fod yn rhedeg ar unrhyw adeg benodol.

Monitro iechyd cais

Mae monitro o'r fath yn bosibl mewn dwy ffordd: defnyddio profion Parodrwydd neu Fywoliaeth.

Mae'r stiliwr cyntaf (parodrwydd) yn pennu parodrwydd y cynhwysydd i dderbyn traffig.

Mae'r ail (bywder) yn dangos a yw'r cynhwysydd yn iach neu a oes angen ei ailgychwyn.

Yn syml, mae'r ffurfweddiadau perthnasol yn cael eu hychwanegu at yaml i'w defnyddio. Yno gallwch nodi goramseroedd, amseroedd oedi a nifer yr aildreialon. Gweler mwy o fanylion amdanynt Dogfennaeth Kubernetes.

Mae tagiau ym mhobman

Mae labeli yn un o'r cysyniadau sylfaenol yn Kubernetes. Maent yn caniatáu i wrthrychau gyfathrebu'n rhydd â'i gilydd, yn ogystal â chreu ymholiadau yn seiliedig ar labeli. Yn Kubernetes, gallwch chi hyd yn oed fynd i'r cleient a gwylio digwyddiadau ar gyfer tagiau penodol.

Gallwch chi wneud bron unrhyw beth gyda thagiau, ond enghraifft dda fyddai creu amgylcheddau lluosog i redeg rhaglenni ar yr un clwstwr.

Gadewch i ni ddweud eich bod yn defnyddio'r un clwstwr ar gyfer dev и qa. Mae hyn yn golygu y gallwch gael cais app-a, ar yr un pryd yn gweithio yn y ddau amgylchedd qa и dev. Yn yr achos hwn, gallwn gyrchu'r achos cais ar wahân mewn amgylchedd penodol trwy nodi'r paramedr priodol environment. Er enghraifft app: app-a и environment: dev am un amgylcbiad, a app: app-a и environment: qa am yr ail un.

Mae hyn yn caniatáu ichi gyrchu'r ddau achos o'r cais, er enghraifft, i gynnal profion ar yr un pryd.

Byddwch yn drefnus

Mae Kubernetes yn system bwerus iawn, ond gall unrhyw system gael ei llethu gan ormod o brosesau yn y pen draw. Mae'r Kubelet yn rhedeg yr holl brosesau a gwiriadau rydych chi'n eu nodi, yn ogystal â'i rai ei hun.

Wrth gwrs, ni fydd un gwasanaeth amddifad yn arafu'r system, ac mae Kubernetes wedi'i gynllunio i raddfa o'r gwaelod i fyny. Ond os bydd miliwn yn ymddangos yn lle un gwasanaeth, mae'r ciwbedi yn dechrau tagu.

Os ydych chi'n dileu gosodiad (cynhwysydd, delwedd, beth bynnag) am ryw reswm), gwnewch yn siŵr eich bod chi'n glanhau'n llwyr.

Cwrdd Ewch

Rydym yn arbed y prif gyngor ar gyfer olaf. Dysgwch iaith raglennu Go.

Mae Kubernetes yn cael ei ddatblygu yn Go, mae pob estyniad wedi'i ysgrifennu yn Go, ac mae'r llyfrgell cleientiaid cleient-mynd hefyd yn cael ei chefnogi'n swyddogol.

Gellir ei ddefnyddio ar gyfer pethau gwahanol a diddorol. Er enghraifft, i ehangu'r system Kubernetes at eich dant. Felly, gallwch ddefnyddio'ch rhaglenni eich hun i gasglu data, defnyddio cymwysiadau, neu lanhau cynwysyddion yn unig.

Efallai mai dysgu iaith raglennu Go a meistroli cleient-go yw'r cyngor pwysicaf y gallwch ei roi i ddefnyddwyr Kubernetes newydd.

Cyfieithwyd gyda chefnogaeth Mail.ru Cloud Solutions

Beth arall i'w ddarllen:

  1. Tair lefel o raddio awtomatig yn Kubernetes a sut i'w defnyddio'n effeithiol.
  2. Nodau gweithiwr Kubernetes: llawer o rai bach neu ychydig o rai mawr?
  3. 25 Offer Defnyddiol ar gyfer Defnyddio a Rheoli Kubernetes.

Ffynhonnell: hab.com

Ychwanegu sylw