Interneten erreferentziazko literatura asko dago, baina batzuetan aholku sinpleena da baliotsuena. Taldea Kubernetes aaS Mail.ru-tik itzulia hamar trikimailu eta aholku aukeraketa bat, artikuluaren egileak Kubernetesekin urtebetez lan egin ostean bildu zuena. Aholkuak ez daude garrantziaren arabera sailkatuta, baina uste dugu bakoitzak aurkituko duela zerbait erabilgarria beretzat.
Kubernetesekin lan egiteko komandorik errazena
Hasteko, agian Kubernetesekin lan egiteko ekintzarik errazena eta erabilgarriena. Hurrengo komandoak komandoak osatzea ahalbidetzen du kubectl bash shell-en:
AutoComplete kubectl .bashrc fitxategian idatziko da eta automatikoki aktibatuko da shell-a abiarazten den bakoitzean. Honek komando eta parametro luzeak idaztea bizkortzen du all-namespaces. Irakurri gehiago atalean Kubernetes bash laguntza.
Memoria eta CPU muga lehenetsiak izen-espazio batean
Aplikazioa gaizki idatzita badago, adibidez, datu-baserako konexio berri bat irekitzen du segundoro, baina ez du inoiz ixten, orduan klusterrak memoria-ihes bat du. Eta aplikazioak ez badu memoria-muga ezarri inplementazioan, horrek nodo hutsegite bat ekar dezake.
Hori ekiditeko, Kubernetes-ek murrizketa lehenetsiak ezartzeko aukera ematen dizu izen-espazio bakoitzeko. Yaml fitxategian idazten dira izen-espazio zehatz baterako. Hona hemen fitxategi horren adibide bat:
Sortu yaml hori eta aplikatu edozein izen-espaziotan. Adibidez, izen-espaziora limit-example. Orain izen-espazio honetan zabaldutako edozein edukiontzi 512Mi-ko muga izango du, edukiontzi honetarako beste muga indibidual bat ezartzen ez bada behintzat.
Zabor bilketa Kubernetes-en bertsio zaharretan
Kubelet-ek berez hasten du zabor-bilketa noiz var/lib/docker erabilgarri dagoen diskoko espazioaren % 90 hartzen du. Hau bikaina da, hala ere, Kubernetes 1.7 arte ez zegoen lehenetsitako mugarik erabilitako inodo kopuruan, fitxategi-sistemako fitxategi kopuruari dagozkionak.
Potentzialki zure edukiontzia var/lib/docker baliteke diskoko espazioaren % 50a soilik erabiltzea, baina inodorik gabe geratu daiteke, eta horrek arazoak sortuko dizkie langileei.
Kubelet-en 1.4tik 1.6ra bitarteko bertsio zaharretan bandera hau gehitu beharko duzu:
Trikimailua da nola sortu aplikazioa eta nola exekutatu lokalean kluster horretan. Berariaz agindu ezean, Docker irudia zure ordenagailuan eraikiko da eta ez klusterrean.
Docker-ek irudia Kubernetes kluster lokalera bultzatzera behartzeko, docker makinari komando hau ematen zaio:
eval $(minikube docker-env)
Orain Kubernetes kluster lokal batean aplikazioak eraiki ditzakegu.
Ez eman kubectl guztientzako sarbidea
Hau begi-bistakoa dirudi, baina talde anitzek beren aplikazioetarako kluster bera erabiltzen badute (horretarako sortu zen Kubernetes), ez zenuke guztiei eman behar. kubectl. Hobe da komandoak bereiztea, bakoitzari bere izen-espazioa esleitu eta sarbidea mugatuz RBAC politikak erabiliz.
Nahastu zaitezke pod bakoitzari atzitzeko, irakurtzeko, sortzeko, ezabatzeko eta beste eragiketa batzuk esleituz. Baina gauza nagusia sekretuetarako sarbidea mugatzea da, administratzaileei soilik baimenduz. Horrela, klusterra kudeatu dezaketenak eta bertara hedatu daitezkeenak bereiziko ditugu.
Kudeatu Pod Aurrekontuak
Nola ziurtatu Kubernetes kluster bateko aplikazio baten geldialdi denborarik ez? PodDisruptionBudget eta berriro PodDisruptionBudget.
Klusterrak aldizka eguneratzen dira eta nodoak hustu egiten dira. Ezer ez dago geldi, hori da errealitatea. Instantzia bat baino gehiago dituen inplementazio bakoitzak PDB (PodDisruptionBudget) bat izan beharko luke. Klusterean aplikatzen den yaml fitxategi sinple batean sortzen da. PDB jakin baten estaldura-eremua etiketa-hautatzaileek zehazten dute.
Oharra: PDB aurrekontua aurrekontu-urraketa itzulgarria denean bakarrik hartzen da kontuan (borondatezko etenaldia). Hardwarearen akatsak bezalako egoeretan, PDBk ez du funtzionatuko.
Bi parametro nagusiak hauek dira matchLabels ΠΈ minAvailable. Lehenengo parametroak aurrekontua zein aplikaziotara aplikatzen den zehazten du. Adibidez, etiketak dituzten inplementazioak baditut app: app-a ΠΈ app: app-b, orduan PDB hau lehenengoari bakarrik aplikatuko zaio.
Parametroa minAvailable nodoa husteko (garbitzeko) kontuan hartuta. Adibidez, gure adibidean, hustutzerakoan, instantzia guztiak desalojatzen dira app: app-a, bi izan ezik.
Horri esker, une bakoitzean aplikazioaren zenbat instantzia exekutatu behar diren kontrola dezakezu.
Aplikazioaren osasunaren jarraipena
Jarraipen hori bi modutan egin daiteke: Presttasun edo Bizitasun probak erabiliz.
Lehenengo zundak (presttasuna) edukiontzia trafikoa jasotzeko prest dagoen zehazten du.
Bigarrenak (bizitasuna) ontzia osasuntsu dagoen edo berrabiarazi behar den erakusten du.
Konfigurazio garrantzitsuak yaml-era gehitzen dira inplementatzeko. Bertan denbora-muga, atzerapen-denborak eta errepikapenen kopurua zehaztu ditzakezu. Ikusi haiei buruzko xehetasun gehiago Kubernetesen dokumentazioa.
Etiketak nonahi daude
Etiketak Kubernetesen oinarrizko kontzeptuetako bat dira. Objektuak beren artean aske komunikatzeko aukera ematen dute, baita etiketetan oinarritutako kontsultak sortzeko ere. Kubernetes-en, bezeroarengana joan eta etiketa zehatzetarako gertaerak ikus ditzakezu.
Etiketekin ia edozer gauza egin dezakezu, baina adibide on bat kluster berean programak exekutatzeko hainbat ingurune sortzea izango litzateke.
Demagun kluster bera erabiltzen duzula dev ΠΈ qa. Horrek esan nahi du aplikazio bat izan dezakezula app-a, aldi berean bi inguruneetan lan eginez qa ΠΈ dev. Kasu honetan, ingurune zehatz batean aplikazioaren instantzia bereizita sar gaitezke parametro egokia zehaztuz environment. Adibidez app: app-a ΠΈ environment: dev ingurune baterako, eta app: app-a ΠΈ environment: qa bigarrenarentzat.
Horri esker, aplikazioaren bi instantzietara sar zaitezke, adibidez, probak aldi berean egiteko.
Antolatu zaitez
Kubernetes sistema oso indartsua da, baina edozein sistema azkenean prozesu gehiegirekin nahastu daiteke. Kubelet-ek zehazten dituzun prozesu eta egiaztapen guztiak exekutatzen ditu, baita bereak ere.
Jakina, umezurtz zerbitzu batek ez du sistema motelduko, eta Kubernetes oinarritik eskalatzeko diseinatuta dago. Baina zerbitzu baten ordez milioi bat agertzen badira, kubelet itotzen hasten da.
Arrazoiren batengatik inplementazio bat ezabatzen baduzu (edukiontzia, irudia, dena delakoa), ziurtatu garbiketa osoa egiten duzula.
Ezagutu Go
Aholku nagusia azkenerako gorde dugu. Ikasi Go programazio lengoaia.
Kubernetes Go-n garatzen da, luzapen guztiak Go-n idatzita daude eta client-go bezero liburutegia ere ofizialki onartzen da.
Gauza ezberdin eta interesgarrietarako erabil daiteke. Adibidez, Kubernetes sistema zure gustura zabaltzeko. Beraz, zure programak erabil ditzakezu datuak biltzeko, aplikazioak zabaltzeko edo, besterik gabe, edukiontziak garbitzeko.
Go programazio-lengoaia ikastea eta client-go menperatzea da agian Kuberneteseko erabiltzaile berriei eman diezaiekezun aholkurik garrantzitsuena.