Kubernetesen 10 trikimailu eta aholku nagusiak

Kubernetesen 10 trikimailu eta aholku nagusiak

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:

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

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:

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

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:

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

1.7 eta ondorengo bertsioetan bandera hau lehenespenez ezartzen da. Hala ere, aurreko bertsioek ez dute inodoaren muga kontrolatzen.

Minikube... tokiko Kubernetes txiki baina indartsuak

Minikube tokiko Kubernetes kluster bat exekutatzeko modurik errazena da. Komando sinple batekin abiarazten da:

minikube start

Komando hau exekutatzeak benetako Kubernetes kluster bat sortzen du zure makinan.

Kubernetesen 10 trikimailu eta aholku nagusiak
Ilustrazio iturria

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.

PDB adibidea:

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

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.

Mail.ru Cloud Solutions-en laguntzarekin itzulia

Zer gehiago irakurri:

  1. Kubernetesen hiru autoeskalatze maila eta nola erabili eraginkortasunez.
  2. Kubernetes langile-nodoak: txiki asko edo handi gutxi?
  3. 25 Kubernetes inplementatzeko eta kudeatzeko tresna erabilgarriak.

Iturria: www.habr.com

Gehitu iruzkin berria