10 truket dhe këshillat kryesore të Kubernetes

10 truket dhe këshillat kryesore të Kubernetes

Ka shumë literaturë referuese në internet, por ndonjëherë këshilla më e thjeshtë është më e vlefshme. Ekipi Kubernetes aaS nga Mail.ru përkthyer një përzgjedhje prej dhjetë truke dhe këshilla, të cilin autori i artikullit e mblodhi pas një viti pune me Kubernetes. Këshillat nuk janë të renditura sipas rëndësisë, por mendojmë se secili do të gjejë diçka të dobishme për veten e tij.

Komanda më e thjeshtë për të punuar me Kubernetes

Për të filluar, ndoshta veprimi më i thjeshtë dhe më i dobishëm në punën me Kubernetes. Komanda e mëposhtme mundëson përfundimin e komandës kubectl në guaskën bash:

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

AutoComplete kubectl do të shkruhet në skedarin .bashrc dhe do të aktivizohet automatikisht sa herë që nis shell-i. Kjo përshpejton shtypjen e komandave dhe parametrave të gjata si p.sh all-namespaces. Lexo më shumë në Kubernetes bash ndihmë.

Kufijtë e parazgjedhur të kujtesës dhe CPU-së në një hapësirë ​​emri

Nëse aplikacioni është shkruar gabimisht, për shembull, ai hap një lidhje të re me bazën e të dhënave çdo sekondë, por nuk e mbyll kurrë atë, atëherë grupi ka një rrjedhje memorie. Dhe nëse aplikacioni nuk ka një kufi memorie të caktuar gjatë vendosjes, kjo mund të çojë në një dështim të nyjes.

Për ta parandaluar këtë, Kubernetes ju lejon të vendosni kufizime të paracaktuara në bazë të hapësirës së emrit. Ato janë shkruar në skedarin yaml për një hapësirë ​​të caktuar emri. Këtu është një shembull i një skedari të tillë:

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

Krijoni një yaml të tillë dhe aplikoni në çdo hapësirë ​​emri. Për shembull, në hapësirën e emrave limit-example. Tani çdo kontejner i vendosur në këtë hapësirë ​​emri do të ketë një kufi prej 512 Mi, përveç rastit kur vendoset një kufi tjetër individual për këtë kontejner.

Mbledhja e mbeturinave në versionet më të vjetra të Kubernetes

Kubelet si parazgjedhje fillon mbledhjen e mbeturinave kur var/lib/docker zë 90% të hapësirës së disponueshme të diskut. Kjo është e shkëlqyeshme, megjithatë, deri në Kubernetes 1.7 nuk kishte asnjë kufi të paracaktuar për numrin e inodeve të përdorura, të cilat korrespondojnë me numrin e skedarëve në sistemin e skedarëve.

Potencialisht kontejneri juaj var/lib/docker mund të përdorë vetëm 50% të hapësirës në disk, por mund të mbarojë pa inode, gjë që do të shkaktojë probleme për punëtorët.

Në versionet më të vjetra të kubelet nga 1.4 në 1.6 do të duhet të shtoni këtë flamur:

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

Në versionet 1.7 dhe të mëvonshme, ky flamur është vendosur si parazgjedhje. Sidoqoftë, versionet e mëparshme nuk monitorojnë kufirin e inodes.

Minikube... Kubernetes vendas të vegjël por të fuqishëm

Minikube është mënyra më e lehtë për të drejtuar një grup lokal Kubernetes. Nishet me një komandë të thjeshtë:

minikube start

Ekzekutimi i kësaj komande rezulton në një grup të vërtetë Kubernetes që funksionon në kompjuterin tuaj.

10 truket dhe këshillat kryesore të Kubernetes
Burimi i ilustrimit

Truku është se si ta ndërtoni aplikacionin dhe ta ekzekutoni atë lokalisht në atë grup. Përveç nëse udhëzohet në mënyrë specifike, imazhi i Docker do të ndërtohet në kompjuterin tuaj dhe jo në grup.

Për të detyruar Docker-in të shtyjë imazhin në grupin lokal të Kubernetes, makinës docker i jepet komanda e mëposhtme:

eval $(minikube docker-env)

Tani mund të ndërtojmë aplikacione në një grup lokal Kubernetes.

Mos i jep kubectl akses për të gjithë

Kjo duket e qartë, por nëse shumë ekipe përdorin të njëjtin grup për aplikacionet e tyre (për të cilën u krijua Kubernetes), nuk duhet t'i jepni të gjithëve kubectl. Është më mirë të ndani komandat, duke i caktuar secilit prej tyre hapësirën e vet të emrave dhe duke kufizuar aksesin duke përdorur politikat RBAC.

Ju mund të hutoheni duke caktuar të drejta për të hyrë, lexuar, krijuar, fshirë dhe operacione të tjera për çdo pod. Por gjëja kryesore është të kufizoni aksesin në sekrete, duke e lejuar atë vetëm për administratorët. Në këtë mënyrë ne do të bëjmë dallimin midis atyre që mund të administrojnë grupin dhe atyre që thjesht mund të vendosen në të.

Menaxho buxhetet e pod

Si të siguroheni që të mos ketë kohë joproduktive për një aplikacion në një grupim Kubernetes? PodDisruptionBudget dhe përsëri PodDisruptionBudget.

Grupet përditësohen periodikisht dhe nyjet zbrazen. Asgjë nuk qëndron, ky është realiteti. Çdo vendosje me më shumë se një shembull duhet të përfshijë një PDB (PodDisruptionBudget). Është krijuar në një skedar të thjeshtë yaml që aplikohet në grup. Zona e mbulimit të një PDB të veçantë përcaktohet nga përzgjedhësit e etiketave.

Shenim: Buxheti i PPD-së merret parasysh vetëm kur shkelja e buxhetit është e kthyeshme (ndërprerje vullnetare). Në situata të tilla si dështimet e harduerit, PDB nuk do të funksionojë.

Shembull PDB:

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

Dy parametrat kryesorë janë matchLabels и minAvailable. Parametri i parë specifikon se për cilat aplikacione zbatohet buxheti. Për shembull, nëse kam vendosje me etiketa app: app-a и app: app-b, atëherë kjo PDB do të zbatohet vetëm për të parën.

Parametër minAvailable merret parasysh gjatë zbrazjes (pastrimit) të nyjës. Për shembull, në shembullin tonë, gjatë zbrazjes, të gjitha rastet dëbohen app: app-a, përveç dy.

Kjo ju lejon të kontrolloni se sa instanca të aplikacionit duhet të ekzekutohen në çdo kohë të caktuar.

Monitorimi shëndetësor i aplikimit

Një monitorim i tillë është i mundur në dy mënyra: duke përdorur testet e gatishmërisë ose të gjallërisë.

Sonda e parë (gadishmëria) përcakton gatishmërinë e kontejnerit për të marrë trafik.

E dyta (gjallëria) tregon nëse kontejneri është i shëndetshëm ose duhet të rindizet.

Konfigurimet përkatëse thjesht shtohen në yaml për vendosje. Aty mund të specifikoni afatet, kohën e vonesës dhe numrin e riprovave. Shihni më shumë detaje rreth tyre Dokumentacioni Kubernetes.

Etiketat janë kudo

Etiketat janë një nga konceptet themelore në Kubernetes. Ato lejojnë objektet të komunikojnë lirshëm me njëri-tjetrin, si dhe të krijojnë pyetje të bazuara në etiketa. Në Kubernetes, madje mund të shkoni te klienti dhe të shikoni ngjarje për etiketa specifike.

Ju mund të bëni pothuajse çdo gjë me etiketa, por një shembull i mirë do të ishte krijimi i mjediseve të shumta për të ekzekutuar programe në të njëjtin grup.

Le të themi se përdorni të njëjtin grup për dev и qa. Kjo do të thotë që ju mund të keni një aplikim app-a, duke punuar njëkohësisht në të dy ambientet qa и dev. Në këtë rast, ne mund të aksesojmë veçmas shembullin e aplikacionit në një mjedis specifik duke specifikuar parametrin e duhur environment. Për shembull, app: app-a и environment: dev për një mjedis, dhe app: app-a и environment: qa për të dytën.

Kjo ju lejon të përdorni të dy rastet e aplikacionit, për shembull, për të kryer testimin në të njëjtën kohë.

Organizohuni

Kubernetes është një sistem shumë i fuqishëm, por çdo sistem përfundimisht mund të bllokohet me shumë procese. Kubelet ekzekuton të gjitha proceset dhe kontrollet që ju specifikoni, si dhe të tijat.

Natyrisht, një shërbim jetim nuk do ta ngadalësojë sistemin dhe Kubernetes është krijuar për t'u rritur nga toka. Por nëse në vend të një shërbimi shfaqen një milion, kubelet fillon të mbytet.

Nëse për ndonjë arsye fshini një vendosje (enë, imazh, çfarëdo qoftë), thjesht sigurohuni që të bëni një pastrim të plotë.

Njihuni me Go

Ne e ruajtëm këshillën kryesore për të fundit. Mësoni gjuhën e programimit Go.

Kubernetes është zhvilluar në Go, të gjitha shtesat janë shkruar në Go, dhe biblioteka e klientit-go është gjithashtu e mbështetur zyrtarisht.

Mund të përdoret për gjëra të ndryshme dhe interesante. Për shembull, për të zgjeruar sistemin Kubernetes sipas shijes tuaj. Pra, ju mund të përdorni programet tuaja për të mbledhur të dhëna, për të vendosur aplikacione ose thjesht për të pastruar kontejnerët.

Mësimi i gjuhës së programimit Go dhe zotërimi i klientit-go është ndoshta këshilla më e rëndësishme që mund t'u jepni përdoruesve të rinj të Kubernetes.

Përkthyer me mbështetjen e Mail.ru Cloud Solutions

Çfarë tjetër për të lexuar:

  1. Tre nivele të shkallëzimit automatik në Kubernetes dhe si t'i përdorni ato në mënyrë efektive.
  2. Nyjet e punëtorëve Kubernetes: shumë të vogla ose pak të mëdha?
  3. 25 Mjete të dobishme për vendosjen dhe menaxhimin e Kubernetes.

Burimi: www.habr.com

Shto një koment