Koja je razlika između "raspoređivanja" i "usluge" u Kubernetesu?


Odgovor 1:

Obje su apstrakcije u Kubernetesu.

implementacija:

A Deployment je objekt u klasteru koji predstavlja skup skupa podsustava koji se pokreću, logična skupina s kojom su povezane neke mogućnosti upravljanja. Raspodjela ima semantiku za stanje klastera.

Na primjer, zamislite da postoji potreba za podrškom mjernih podataka za skup usluga u vašem klasteru. Ops tim razvio je sliku doktora pod nazivom metrički analizator 1.0.0 koja dobiva konfiguraciju gdje su svi agenti koji trebaju prikupiti, koliko često se komponenta mora okupljati i koja krajnja točka po agentu daje metrike.

Sad, ako tim samo napiše Pod ma.yml kako bi ga rasporedio u kubernetes, vjerojatno će završiti s jednim podvodom koji radi u bilo kojem čvoru koji ga kubernetes može zakazati. Ako operacija ne uspije, ili analizator metrike treba nadograditi, ili kubernetes treba ponovno dodijeliti resurse (ili mnoge druge događaje koje izostavljam), podnožje će trebati iseliti što uzrokuje zastoj prikupljanja mjernih podataka. Taj događaj može uzrokovati otkazivanje usluge, rukovoditelji mogu nazvati tim rekavši: Trebaju nam mjerni podaci, samo to popravite.

Implementacija vam može pomoći da stvorite grupu podsustava analizatora mjernih podataka koji ih podudaraju s oznakama kako biste mogli upravljati svojim analizatorom metrika, bez brige o svakoj pojedinačnoj izvedbi replike.

U suštini implementacije govore Kubernetesu kako uskladiti spremnike pomoću naljepnica, broj replika koje su potrebne za pokretanje i kako ih nadograditi. Nadogradnje su glavna tema o kojoj je u ovom postu razgovarano bolje od mene Kubernetes strategije implementacije - Container Solutions

Također, u specifikaciji implementacije može se navesti i specifikacija pod da se izbjegne tretiranje različitih datoteka s resursima za isti cilj. Na kraju, tim samo treba rasporediti analizator mjerenja, zar ne?

usluge:

Usluge, s druge strane, omogućuju grupiranje podsustava za primarnu svrhu mrežne komunikacije.

Domena usluga je pružiti skup pravila za pristupačnost skupa podsustava. Neki primjeri pravila koja postavljate prilikom određivanja usluga su:

  1. Koji se podskupini podudaraju s grupom usluga. Koju će vrstu mrežne adrese koristiti usluga? Nodeport. Svi čvorovi u klasteru imaju priključak namijenjen za prosljeđivanje podsustavima koji odgovaraju usluzi.Cluster IP. Postoji namjenski IP klaster za pristup podsustavima koji odgovaraju usluzi.Load Balancer. Otkrivanje podsustava izvan mrežnog klastera s vanjskom mrežnom LB.Vanjsko ime. Otkriti vanjski URI izvor s kvalificiranim imenom u klasteru (poput db-servisa ide na 32dfs-324qa.domain.com). Protocols i ports. Gdje se promet treba preusmjeriti kada postoje zahtjevi za naziv usluge, stvarni naziv mreže usluga poput analizatora metrika.

Usluge dopuštaju drugim podsmjesnicima da komuniciraju s komponentama klastera bez potrebe da znaju njihov stvarni IP u klasteru.

Kako možete vidjeti da Deployments ima semantičku isporuku na njemu, oni su bitni kada trebate povećati replike ili smanjiti kad trebate isporučiti novu verziju, oni određuju kako funkcionira proces nadogradnje podsustava.

Usluge su uglavnom konstrukcija umrežavanja. Oni modeliraju kako se mahunama pristupa putem klaster mreže i iz vanjskog svijeta u mrežu klastera.


Odgovor 2:

Samo sam htio dodati ostale odgovore i pokušati povezati implementacije i usluge s nečim što su ljudi navikli prije nego što su se sustavi za upravljanje spremnicima pojavili u slici.

Implementacija:

Na konceptualnoj razini implementacija definira kako će se aplikacija primijeniti. Definirat će koliko primjeraka aplikacija treba biti pokrenuto prilikom razmještanja aplikacije u Kubernetesu. Također određuje ostale parametre i postavke koje se koriste za pomoć pokrenutoj aplikaciji.

Kad se implementacija pokrene u Kubernetesu, to će stvoriti pods. Podloga se sastoji od jednog ili više spremnika (najpopularniji je Docker). U mnogim slučajevima postoji samo jedan spremnik po mahuni, a to je obično vaša aplikacija u obliku tekuće Docker slike. Da bi se spremnik odnosio na tradicionalne implementacije poslužitelja, spremnik djeluje slično kao virtualni stroj (VM) ili fizički poslužitelj.

Ako vaša implementacija navodi da bi trebalo biti više od jednog vašeg programa (Visoka dostupnost ili HA), tada će se stvoriti više pod-dok sve dok se ne ispuni zahtjev za skaliranje aplikacija.

Sada kada imate 1 ili više primjeraka vaše aplikacije, potreban vam je način za povezivanje s onima koji rade. Tu se pojavljuju "Usluge".

usluge:

Definicije usluga u Kubernetesu zapravo su samo balansiranje opterećenja unutar Kubernetesa. Kada se podnese zahtjev za prijavu, prosljeđuje se aplikacijskoj službi koja zna koje su aplikacije (pod-jedinice) dostupne i kako poslati promet toj aplikaciji. Usluge obično šalju promet okruglim putem, što znači da su zahtjevi raspoređeni u svim pokrenutim aplikacijama (pods).

Po mom iskustvu, i Docker i Kubernetes skratili su vrijeme za razvoj softverskih timova i olakšali upravljanje aplikacijama nego ono što je učinjeno u prošlosti. Ako pravilno napišete svoj softver, on će se lijepo mjeriti s Kubernetesom.

Ako želite vidjeti kako Docker kontejneri rade s Kubernetesom u akciji, možete to testirati na http://BroadIQ.com. Također pogledajte članak "Jednostavan vodič za pokretanje Rocket.Chat" (https://medium.com/@jlutz_72580 / ...) članak koji vas vodi kroz korake razmještanja aplikacije za kontejnerske spremnike na Kubernetes.


Odgovor 3:

Nije tako teško:

  • Kubernetes Deployment je apstrakcija, koja opisuje vaš Kubernetes klaster, kako vašu aplikaciju treba rasporediti. Kubernetes Service je apstrakcija, koja opisuje vaš Kubernetes klaster, kako izložiti (učiniti dostupnim) svoju aplikaciju izvan svijeta (mrežama) , na koji je vaš klaster povezan)