10 populārākie Kubernetes triki un padomi

10 populārākie Kubernetes triki un padomi

Internetā ir daudz uzziņu literatÅ«ras, taču dažreiz visvienkārŔākais padoms ir visvērtÄ«gākais. Komanda Kubernetes aaS no Mail.ru tulkots desmit triku un padomu izlase, ko raksta autore apkopojusi pēc gada darba ar Kubernetes. Padomi nav sakārtoti pēc svarÄ«guma, taču domājam, ka katrs atradÄ«s sev ko noderÄ«gu.

VienkārŔākā komanda darbam ar Kubernetes

Sākumā, iespējams, visvienkārŔākā un noderÄ«gākā darbÄ«ba darbā ar Kubernetes. SekojoŔā komanda iespējo komandas pabeigÅ”anu kubectl bash čaulā:

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

Automātiskā pabeigÅ”ana kubectl tiks ierakstÄ«ts .bashrc failā un tiks automātiski aktivizēts ikreiz, kad tiek palaists apvalks. Tas paātrina garu komandu un parametru ierakstÄ«Å”anu, piemēram, all-namespaces. Vairāk lasiet sadaļā Kubernetes bash palÄ«dzÄ«ba.

Noklusējuma atmiņas un CPU ierobežojumi nosaukumvietā

Ja lietojumprogramma ir uzrakstÄ«ta nepareizi, piemēram, tā katru sekundi atver jaunu savienojumu ar datu bāzi, bet nekad to neaizver, tad klasterim ir atmiņas noplÅ«de. Un, ja lietojumprogrammai izvietoÅ”anas laikā nav iestatÄ«ts atmiņas ierobežojums, tas var izraisÄ«t mezgla kļūmi.

Lai to novērstu, Kubernetes ļauj iestatÄ«t noklusējuma ierobežojumus katrai nosaukumvietai. Tie ir rakstÄ«ti yaml failā noteiktai nosaukumvietai. Å eit ir Ŕāda faila piemērs:

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

Izveidojiet Ŕādu yaml un lietojiet to jebkurā nosaukumvietā. Piemēram, uz nosaukumvietu limit-example. Tagad jebkuram Å”ajā nosaukumvietā izvietotajam konteineram bÅ«s 512 mi ierobežojums, ja vien Å”im konteineram nav papildus iestatÄ«ts cits atseviŔķs ierobežojums.

Atkritumu savākŔana vecākās Kubernetes versijās

Kubelet pēc noklusējuma sāk atkritumu savākÅ”anu, kad var/lib/docker aizņem 90% no pieejamās diska vietas. Tas ir lieliski, taču lÄ«dz versijai Kubernetes 1.7 nebija noklusējuma ierobežojumu izmantoto inožu skaitam, kas atbilst failu skaitam failu sistēmā.

Iespējams, jūsu konteiners var/lib/docker var izmantot tikai 50% diska vietas, bet var beigties inodes, kas radīs problēmas darbiniekiem.

Vecākajās kubelet versijās no 1.4 lÄ«dz 1.6 jums bÅ«s jāpievieno Å”is karodziņŔ:

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

1.7 un jaunākās versijās Å”is karodziņŔ ir iestatÄ«ts pēc noklusējuma. Tomēr iepriekŔējās versijas neuzrauga inode ierobežojumu.

Minikube... mazas, bet varenas vietējās Kubernetes

Minikube ir vienkārŔākais veids, kā palaist vietējo Kubernetes klasteru. Tas tiek palaists ar vienkārÅ”u komandu:

minikube start

Palaižot Ŕo komandu, jūsu datorā darbojas īsts Kubernetes klasteris.

10 populārākie Kubernetes triki un padomi
Ilustrācijas avots

ViltÄ«ba ir tāda, kā izveidot lietojumprogrammu un palaist to lokāli Å”ajā klasterÄ«. Ja nav Ä«paÅ”i norādÄ«jumu, Docker attēls tiks izveidots jÅ«su datorā, nevis klasterÄ«.

Lai piespiestu Docker nosÅ«tÄ«t attēlu vietējam Kubernetes klasterim, doka iekārtai tiek dota Ŕāda komanda:

eval $(minikube docker-env)

Tagad mēs varam veidot lietojumprogrammas vietējā Kubernetes klasterī.

Nedodiet kubectl piekļuvi visiem

Tas Ŕķiet paÅ”saprotami, taču, ja vairākas komandas savām lietojumprogrammām izmanto vienu un to paÅ”u klasteru (kam Kubernetes tika izveidots), jums nevajadzētu tikai dot visiem kubectl. Labāk ir atdalÄ«t komandas, katrai no tām pieŔķirot savu nosaukumvietu un ierobežojot piekļuvi, izmantojot RBAC politikas.

Varat apjukt, pieŔķirot tiesÄ«bas piekļūt, lasÄ«t, izveidot, dzēst un citas darbÄ«bas katram podam. Bet galvenais ir ierobežot piekļuvi noslēpumiem, atļaujot to tikai administratoriem. Tādā veidā mēs noŔķirsim tos, kuri var pārvaldÄ«t kopu, un tos, kuri var tajā vienkārÅ”i izvietot.

Pārvaldiet Pod budžetus

Kā nodroŔināt bez dīkstāves lietojumprogrammai Kubernetes klasterī? PodDisruptionBudget un atkal PodDisruptionBudget.

Klasteri tiek periodiski atjaunināti, un mezgli tiek iztukÅ”oti. Nekas nestāv uz vietas, tāda ir realitāte. Katrai izvietoÅ”anai ar vairāk nekā vienu gadÄ«jumu ir jāiekļauj PBP (PodDisruptionBudget). Tas ir izveidots vienkārŔā yaml failā, kas tiek lietots klasterim. Konkrēta PBP pārklājuma zonu nosaka etiÄ·eÅ”u atlasÄ«tāji.

Piezīme: PBP budžetu ņem vērā tikai tad, ja budžeta pārkāpums ir atgriezenisks (brīvprātīgs traucējums). Tādos gadījumos kā aparatūras kļūmes PBP nedarbosies.

PBP piemērs:

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

Divi galvenie parametri ir matchLabels Šø minAvailable. Pirmais parametrs norāda, uz kurām lietojumprogrammām attiecas budžets. Piemēram, ja man ir izvietojumi ar etiÄ·etēm app: app-a Šø app: app-b, tad Å”is PBP attieksies tikai uz pirmo.

Parametrs minAvailable ņem vērā, iztukÅ”ojot (tÄ«rot) mezglu. Piemēram, mÅ«su piemērā iztukÅ”oÅ”anas laikā visas instances tiek izliktas app: app-a, izņemot divus.

Tas ļauj kontrolēt, cik lietojumprogrammas gadījumu ir jādarbojas jebkurā laikā.

Lietojumprogrammas veselības uzraudzība

Šāda uzraudzība ir iespējama divos veidos: izmantojot gatavības vai dzīvīguma testus.

Pirmā zonde (gatavība) nosaka konteinera gatavību uztvert trafiku.

Otrais (dzÄ«vÄ«gums) parāda, vai konteiners ir vesels vai ir nepiecieÅ”ams restartēt.

AttiecÄ«gās konfigurācijas vienkārÅ”i tiek pievienotas yaml izvietoÅ”anai. Tur jÅ«s varat norādÄ«t taimautus, aizkaves laikus un atkārtotu mēģinājumu skaitu. Skatiet sÄ«kāku informāciju par tiem Kubernetes dokumentācija.

Atzīmes ir visur

Etiķetes ir viens no Kubernetes pamatjēdzieniem. Tie ļauj objektiem brīvi sazināties vienam ar otru, kā arī izveidot vaicājumus, pamatojoties uz etiķetēm. Pakalpojumā Kubernetes varat pat doties uz klientu un skatīties konkrētus tagus.

Ar tagiem varat darīt gandrīz jebko, taču labs piemērs būtu izveidot vairākas vides, lai palaistu programmas vienā klasterī.

Pieņemsim, ka izmantojat to paÅ”u kopu dev Šø qa. Tas nozÄ«mē, ka jums var bÅ«t lietojumprogramma app-a, vienlaikus strādājot abās vidēs qa Šø dev. Å ajā gadÄ«jumā mēs varam atseviŔķi piekļūt lietojumprogrammas instancei noteiktā vidē, norādot atbilstoÅ”o parametru environment. Piemēram, app: app-a Šø environment: dev vienai videi, un app: app-a Šø environment: qa par otro.

Tas ļauj piekļūt abiem lietojumprogrammas gadÄ«jumiem, piemēram, lai vienlaikus veiktu testÄ“Å”anu.

Sakārto lietas

Kubernetes ir ļoti spēcīga sistēma, taču jebkura sistēma galu galā var iestrēgt ar pārāk daudziem procesiem. Kubelet palaiž visus jūsu norādītos procesus un pārbaudes, kā arī savus.

Protams, viens bāreņu pakalpojums nepalēninās sistēmas darbÄ«bu, un Kubernetes ir paredzēts mērogoÅ”anai no paÅ”a sākuma. Bet, ja viena pakalpojuma vietā parādās miljons, kubelets sāk aizrÄ«ties.

Ja kāda iemesla dēļ izdzÄ“Å”at izvietoÅ”anu (konteineru, attēlu vai jebkuru citu), noteikti veiciet pilnÄ«gu tÄ«rÄ«Å”anu.

Iepazīstieties ar Go

Galveno padomu saglabājām pēdējam. ApgÅ«stiet Go programmÄ“Å”anas valodu.

Kubernetes ir izstrādāts programmā Go, visi paplaÅ”inājumi ir rakstÄ«ti Go, un oficiāli tiek atbalstÄ«ta arÄ« client-go klientu bibliotēka.

To var izmantot dažādām un interesantām lietām. Piemēram, lai paplaÅ”inātu Kubernetes sistēmu pēc savas gaumes. Tādējādi varat izmantot savas programmas, lai apkopotu datus, izvietotu lietojumprogrammas vai vienkārÅ”i iztÄ«rÄ«tu konteinerus.

Go programmÄ“Å”anas valodas apguve un client-go apguve, iespējams, ir vissvarÄ«gākais padoms, ko varat sniegt jaunajiem Kubernetes lietotājiem.

Tulkots ar Mail.ru Cloud Solutions atbalstu

Ko vēl lasīt:

  1. TrÄ«s automātiskās mērogoÅ”anas lÄ«meņi programmā Kubernetes un to efektÄ«va izmantoÅ”ana.
  2. Kubernetes darbinieku mezgli: daudzi mazi vai daži lieli?
  3. 25 Noderīgi rīki Kubernetes izvietoŔanai un pārvaldībai.

Avots: www.habr.com

Pievieno komentāru