Top 10 Kubernetes Tricks and Tips

Top 10 Kubernetes Tricks and Tips

Hemm ħafna letteratura ta 'referenza fuq l-Internet, iżda xi drabi l-aktar pariri sempliċi huma l-aktar siewja. Tim Kubernetes aaS minn Mail.ru tradott għażla ta 'għaxar tricks u tips, li l-awtur tal-artiklu ġabar wara sena ta 'ħidma ma' Kubernetes. Il-pariri mhumiex magħżula skont l-importanza, iżda naħsbu li kulħadd se jsib xi ħaġa utli għalihom infushom.

L-aktar kmand sempliċi biex taħdem ma 'Kubernetes

Biex tibda, forsi l-aktar azzjoni sempliċi u utli fil-ħidma ma 'Kubernetes. Il-kmand li ġej jippermetti t-tlestija tal-kmand kubectl fil-qoxra tal-bash:

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

Imla Awtomatikament kubectl se jinkiteb fil-fajl .bashrc u jiġi attivat awtomatikament kull darba li tinbeda l-qoxra. Dan iħaffef ittajpjar kmandi twal u parametri bħal all-namespaces. Aktar dettalji fi Kubernetes bash għajnuna.

Memorja default u limiti tas-CPU fi namespace

Jekk l-applikazzjoni tkun miktuba ħażin, pereżempju, tiftaħ konnessjoni ġdida mad-database kull sekonda iżda qatt ma tagħlaqha, allura l-cluster ikollu tnixxija tal-memorja. U jekk l-applikazzjoni ma jkollhiex limitu ta 'memorja stabbilit waqt l-iskjerament, dan jista' jwassal għal falliment tan-node.

Biex tevita dan, Kubernetes jippermettilek li tissettja restrizzjonijiet awtomatiċi fuq bażi ta' kull namespace. Huma miktuba fil-fajl yaml għal namespace speċifiku. Hawn eżempju ta 'tali fajl:

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

Oħloq yaml bħal dan u applika għal kwalunkwe namespace. Per eżempju, għall-ispazju tal-isem limit-example. Issa kwalunkwe kontenitur skjerat f'dan l-ispazju tal-isem se jkollu limitu ta' 512Mi, sakemm ma jiġix stabbilit limitu individwali ieħor għal dan il-kontenitur.

Ġbir taż-żibel f'verżjonijiet eqdem ta' Kubernetes

Kubelet awtomatikament jibda l-ġbir taż-żibel meta var/lib/docker tokkupa 90% tal-ispazju tad-diska disponibbli. Dan huwa kbir, madankollu, sa Kubernetes 1.7 ma kien hemm l-ebda limitu default fuq in-numru ta 'inodes użati, li jikkorrispondu man-numru ta' fajls fis-sistema tal-fajls.

Potenzjalment il-kontenitur tiegħek var/lib/docker jistgħu jużaw biss 50% tal-ispazju tad-diska, iżda jistgħu jispiċċaw inodes, li se jikkawżaw problemi għall-ħaddiema.

F'verżjonijiet eqdem ta' kubelet minn 1.4 sa 1.6 ser ikollok iżżid din il-bandiera:

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

Fil-verżjonijiet 1.7 u aktar tard din il-bandiera hija stabbilita b'mod awtomatiku. Madankollu, verżjonijiet preċedenti ma jimmonitorjawx il-limitu inode.

Minikube... Kubernetes lokali żgħar iżda b'saħħithom

Minikube huwa l-eħfef mod biex tmexxi cluster Kubernetes lokali. Huwa mniedi bi kmand sempliċi:

minikube start

It-tħaddim ta 'dan il-kmand jirriżulta fi cluster Kubernetes reali li jaħdem fuq il-magna tiegħek.

Top 10 Kubernetes Tricks and Tips
Sors tal-illustrazzjoni

Il-trick huwa kif tibni l-applikazzjoni u tħaddem lokalment fuq dak il-cluster. Sakemm ma tingħatax struzzjonijiet speċifiċi, l-immaġni Docker se tinbena fuq il-kompjuter tiegħek u mhux fuq il-cluster.

Biex iġġiegħel lil Docker jimbotta l-immaġni lejn il-cluster lokali ta 'Kubernetes, il-magna docker tingħata l-kmand li ġej:

eval $(minikube docker-env)

Issa nistgħu nibnu applikazzjonijiet fuq cluster Kubernetes lokali.

Tagħtix aċċess lil kubectl lil kulħadd

Dan jidher ovvju, imma jekk diversi timijiet qed jużaw l-istess cluster għall-applikazzjonijiet tagħhom (li huwa għaliex inħoloq Kubernetes), m'għandekx tagħti biss lil kulħadd kubectl. Huwa aħjar li tissepara l-kmandi, tassenja lil kull wieħed minnhom l-ispazju tal-isem tagħha stess u tillimita l-aċċess billi tuża politiki RBAC.

Tista' titħawwad billi tassenja drittijiet ta' aċċess, taqra, toħloq, tħassar u operazzjonijiet oħra għal kull pod. Iżda l-ħaġa prinċipali hija li jillimitaw l-aċċess għas-sigrieti, li jippermettu biss lill-amministraturi. B'dan il-mod aħna ser niddifferenzjaw bejn dawk li jistgħu jamministraw il-cluster u dawk li jistgħu sempliċement jużawh.

Immaniġġja Pod Budgets

Kif tiżgura l-ebda ħin ta' waqfien għal applikazzjoni fi cluster Kubernetes? PodDisruptionBudget u għal darb'oħra PodDisruptionBudget.

Il-clusters jiġu aġġornati perjodikament u n-nodi jitbattlu. Xejn ma jieqaf, dik hi r-realtà. Kull skjerament b'aktar minn istanza waħda għandha tinkludi PDB (PodDisruptionBudget). Jinħoloq f'fajl yaml sempliċi li jiġi applikat għall-cluster. Iż-żona ta 'kopertura ta' PDB partikolari hija determinata minn seletturi tat-tikketti.

Nota: Il-baġit tal-PDB jitqies biss meta l-ksur tal-baġit ikun riversibbli (tfixkil volontarju). F'sitwazzjonijiet bħal ħsarat fil-ħardwer, PDB mhux se jaħdem.

Eżempju PDB:

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

Iż-żewġ parametri ewlenin huma matchLabels и minAvailable. L-ewwel parametru jispeċifika għal liema applikazzjonijiet japplika l-baġit. Per eżempju, jekk għandi skjeramenti b'tikketti app: app-a и app: app-b, allura dan il-PDB japplika biss għall-ewwel wieħed.

Parametru minAvailable meqjusa meta tbattal (tindif) in-node. Pereżempju, fl-eżempju tagħna, waqt it-tbattil, l-istanzi kollha jiġu żgumbrati app: app-a, ħlief tnejn.

Dan jippermettilek tikkontrolla kemm-il darba l-applikazzjoni għandha tkun qed taħdem fi kwalunkwe ħin partikolari.

Monitoraġġ tas-saħħa tal-applikazzjoni

Tali monitoraġġ huwa possibbli f'żewġ modi: bl-użu ta' testijiet ta' Readiness jew Liveness.

L-ewwel sonda (prontezza) tiddetermina kemm il-kontenitur ikun lest biex jirċievi t-traffiku.

It-tieni (ħajja) turi jekk il-kontenitur huwiex b'saħħtu jew jeħtieġx li jerġa 'jinbeda.

Il-konfigurazzjonijiet rilevanti huma sempliċement miżjuda mal-yaml għall-iskjerament. Hemmhekk tista' tispeċifika timeouts, ħinijiet ta' dewmien u n-numru ta' provi mill-ġdid. Ara aktar dettalji dwarhom Dokumentazzjoni ta' Kubernetes.

It-tikketti huma kullimkien

It-tikketti huma wieħed mill-kunċetti fundamentali f'Kubernetes. Huma jippermettu li l-oġġetti jikkomunikaw b'mod ħieles ma 'xulxin, kif ukoll joħolqu mistoqsijiet ibbażati fuq tikketti. F'Kubernetes, tista 'saħansitra tmur għand il-klijent u tara avvenimenti għal tikketti speċifiċi.

Tista 'tagħmel kważi kull ħaġa bit-tikketti, iżda eżempju tajjeb ikun il-ħolqien ta' ambjenti multipli biex imexxu programmi fuq l-istess cluster.

Ejja ngħidu li tuża l-istess cluster għal dev и qa. Dan ifisser li jista' jkollok applikazzjoni app-a, fl-istess ħin jaħdmu fiż-żewġ ambjenti qa и dev. F'dan il-każ, nistgħu naċċessaw separatament l-istanza tal-applikazzjoni f'ambjent speċifiku billi nispeċifikaw il-parametru xieraq environment. Pereżempju app: app-a и environment: dev għal ambjent wieħed, u app: app-a и environment: qa għat-tieni waħda.

Dan jippermettilek li taċċessa ż-żewġ każijiet tal-applikazzjoni, pereżempju, biex twettaq l-ittestjar fl-istess ħin.

Organizza

Kubernetes hija sistema b'saħħitha ħafna, iżda kwalunkwe sistema tista' eventwalment titbaxxa b'ħafna proċessi. Il-Kubelet imexxi l-proċessi u l-kontrolli kollha li tispeċifika, kif ukoll tiegħu stess.

Naturalment, servizz wieħed orfni mhux se jnaqqas is-sistema, u Kubernetes huwa ddisinjat biex jitkabbar mill-qiegħ. Imma jekk minflok servizz wieħed jidher miljun, il-kubelet jibda jifga.

Jekk għal xi raġuni tħassar skjerament (kontenitur, immaġni, tkun xi tkun), kun żgur li tagħmel tindif sħiħ.

Iltaqa' Mur

Ħadna l-parir ewlieni għall-aħħar. Tgħallem il-lingwa tal-ipprogrammar Go.

Kubernetes huwa żviluppat f'Go, l-estensjonijiet kollha huma miktuba f'Go, u l-librerija tal-klijent client-go hija wkoll appoġġjata uffiċjalment.

Jista 'jintuża għal affarijiet differenti u interessanti. Per eżempju, biex tespandi s-sistema Kubernetes għall-gosti tiegħek. Għalhekk, tista' tuża l-programmi tiegħek stess biex tiġbor id-dejta, tuża applikazzjonijiet, jew sempliċement tnaddaf il-kontenituri.

It-tagħlim tal-lingwa tal-ipprogrammar Go u l-ħakma ta’ client-go huwa forsi l-aktar parir importanti li tista’ tagħti lil utenti ġodda ta’ Kubernetes.

Tradott bl-appoġġ ta 'Mail.ru Cloud Solutions

X'iktar li taqra:

  1. Tliet livelli ta 'autoscaling f'Kubernetes u kif tużahom b'mod effettiv.
  2. Nodi tal-ħaddiema Kubernetes: ħafna żgħar jew ftit kbar?
  3. 25 Għodda Utli għall-Iskjerament u l-Ġestjoni ta' Kubernetes.

Sors: www.habr.com

Żid kumment