La virtualigo fariĝis tre ofta praktiko, precipe en nubaj servoj por povi pli profiti de la serviloj en la datumcentroj. Sed lastatempe trudata virtualigo estas tiu trudata, ĉar ĝi permesas multe pli efikan administradon (ne bezonante duplikati iujn procezojn). Kaj ĝuste en ĉi tiu pinto ekestas bataloj de Docker kontraŭ Kubernetes.
Du tre popularaj projektoj, kiujn vi probable jam konas. Ambaŭ kun ĝiaj avantaĝoj kaj malavantaĝoj, kaj kun diferencoj tio povas esti ŝlosila por helpi vin elekti projekton laŭ viaj bezonoj ...
Indekso
Kio estas ujo-bazita virtualigo?
Kiel vi scias, ekzistas pluraj specoj de virtualigokiel plena virtualigo, paravirtualigo ktp. Nu, en ĉi tiu sekcio mi fokusos pri plena virtualigo, kiu estas ĝenerale uzata dum muntado de virtualaj maŝinoj kaj ujoj, por ne enkonduki aliajn variablojn, kiuj eble konfuzos vin.
- Virtualaj maŝinoj- Ĝi estas atingebla virtualiga aliro. Ĝi baziĝas sur hipervizoro, kiel KVM, Xen, aŭ programoj kiel VMWare, VirtualBox, ktp. Kun ĉi tiu programaro, kompleta fizika maŝino (vCPU, vRAM, diskiloj, virtualaj retoj, ekstercentraj ktp.) Estas kopiita. Tiel, operaciumo (gasto) povas esti instalita sur ĉi tiu virtuala aparataro kaj de tie, aplikoj povas esti instalitaj kaj funkciigitaj same kiel farite en la gastiga operaciumo.
- Konteneriloj: Ĝi estas alia teknologio, en kiu kuniĝas ia kaĝo aŭ sablujo, en kiu iuj partoj de ĉi tiu kompleta sistemo povas esti forigitaj, kio estas pli efika kaj kun iuj avantaĝoj de porteblo kaj ekstra sekureco (kvankam ĝi ne estas libera de vundeblecoj) . Fakte, anstataŭ havi hipervizoron, en ĉi tiuj kazoj ekzistas programoj kiel Docker kaj Kubernetes, kiuj uzos la gastigan sistemon mem por lanĉi izolitajn programojn. La malavantaĝo estas, ke ĝi nur permesas al vi disfaldi denaskajn programojn de la gastiganta OS mem. Tio estas, dum en VM vi povas virtualigi Vindozon en Linuksa distribuo, ekzemple, kaj sur tiu Vindozo vi povas ruli iun ajn denaskan programon por ĝi, en ujo vi povas fari ĝin nur per programoj subtenataj de la gastiga sistemo, en ĉi tio kazo kun Linukso ...
Memoru, ke la etendoj aŭ subteno de aparatara virtualigoKiel Intel VT kaj AMD-V, ili sukcesis sufiĉe plibonigi rendimenton, supozante nur 2% de CPU-supre. Sed tio ne validas por aliaj rimedoj kiel memoro aŭ la stokado mem asignita por plena virtualigo, kio signifas konsiderindan rimedon.
Ĉio ĉi estas tio, kion ujoj solvas, kiuj ne bezonas kopii iujn procezojn por povi disfaldi aplikon. Ekzemple, se vi volas krei ujon kun Apache-servilo, kun la kompleta virtuala maŝino vi havus la gastigantan operaciumon, la hipervizoron, la gastan operaciumon kaj la programon por tiu servo. Aliflanke, kun la ujo vi nur havus la programon, kiu efektivigas ĉi tiun servon, ĉar ĝi funkcius en "skatolo" izolita kaj uzus la mastruman operaciumon mem. Krom tio, la lanĉo de la programo estas multe pli rapida, forigante la gastan OS.
Kio estas Docker?
Docker estas malfermfonteca projekto, sub la permesilo Apache, verkita en la programlingvo Go kaj uzata por aŭtomatigi la deplojon de aplikoj ene de ujoj. Tio estas, ĉi tiu programaro permesos al vi administri kontenerojn sur malsamaj operaciumoj, ĉar ĝi funkcias sur pluraj platformoj.
Kiam Docker aperis, ĝi havis multajn avantaĝojn, kaj ĝi disvastiĝis rapide. Ĝia izolita vizio pri la operaciumo kaj simpleco permesis krei ujojn kun programoj, disfaldi ilin, skali ilin kaj ekzekuti ilin rapide. Maniero lanĉi ĉiujn programojn, kiujn vi bezonas kun minimuma rimedo.
Resume, Docker ofertas la jenon trajtoj ŝlosilo:
- Izolado de la medio.
- Administrado de ujoj.
- Versio-kontrolo.
- Loko / Afineco.
- Lerteco.
- Produktiveco
- Efikeco.
Sed ĝi ne estis libera de iuj problemoj, kiel kiam tiuj ujoj devis kunordigi, komuniki inter si. Ĉi tiu estis unu el la kialoj, kiuj kaŭzis la kreon de Kubernetes ...
Kiel mi komentos poste Docker Svarmo, Mi ŝatus komenti, ke ĝi estas programaro kreita de la samaj programistoj de Docker por povi grupigi serion de Docker-gastigantoj en areto kaj tiel administri la aretojn centre, krom orkestri la ujojn.
Kio estas Kubernetes?
Ĝi estis origine kreita de Google, kaj poste donacita al la Cloud Native Computing Foundation. Kubernetoj Ĝi ankaŭ estas Docker-simila sistemo, malfermfonteco, rajtigita laŭ Apache, kaj verkita per la programlingvo Go. Ĝi kutimas aŭtomatigi la deplojon kaj administradon de kontenerigitaj aplikoj. Krome, ĝi subtenas malsamajn mediojn por funkciigi ujojn, inkluzive de Docker.
Finfine, Kubernetes estas orkestra instrumento ujo, kiu zorgas helpi la malsamajn ujojn de la malsamaj maŝinoj, ilian administradon kaj distribuadon de ŝarĝo inter ili. Precipe tiu organizo faris ĉi tiun projekton esenca parto en ĉi tiaj scenoj ...
- Aŭtomatigita planado.
- Memkuracaj kapabloj.
- Aŭtomataj lanĉoj kaj deplojoj.
- Ŝarĝa ekvilibro kaj horizontala skalo.
- Pli alta denseco de rimeduzado.
- Funkcioj orientitaj al komercaj medioj.
- Centralizita aplika administrado.
- Mem-skalebla infrastrukturo.
- Deklara agordo.
- Fidindeco.
Docker kontraŭ Kubernetes
Kiel vi povas vidi en la difino, ambaŭ estas tre similaj laŭ multaj manieroj, sed vi havas iliaj diferencoj, same kiel havi siajn avantaĝojn kaj malavantaĝojn kiel ĉio. Vi eble pensos, ke sciante ĉi tiujn detalojn, vi havus ĉion por scii, kiun vi elektu, depende de la celo, kiun vi havas.
Tamen la problemo ĝi estas io pli kompleksa ol tio. Ne temas pri Docker vs Kuernetes, ĉar estus kiel kompari tre malsamajn aferojn kaj vi falus en la eraron pensi, ke vi devas elekti inter unu kaj la alia. La rezulto de Docker vs Kubernetes estas absurda, prefere vi devas kunligi ambaŭ teknologiojn por povi liveri kaj skali kontenerigitajn aplikojn pli bone.
La plej taŭga estus kompari Docker Swarm kun Kubernetes. Tio pli sukcesus, ĉar Docker Swarm estas Docker-instrumenta teknologio por krei kontenerojn. Kvankam, eĉ tiam ĝi ne estus tute sukcesa ... Fakte, Kubernetes estis desegnita por funkcii en areto, povante kunordigi aretojn de nodoj grandskale en produktado efike, dum Docker faras ĝin en ununura reĝimo.
Docker vs Kubernetes-diferencoj
Ŝparante tiujn malsamajn, se vi volas scii la diverĝoj inter Docker Swarm kaj Kubernetes, ili estus:
- Kubernetes inkluzivas multajn eblojn por personigo mankas en Docker Swarm.
- Docker Swarm estas pli facila agordi pro ĝia simpleco. Krome estas ankaŭ pli facile integriĝi en la ekosistemo Docker.
- Anstataŭe la Kulpo toleremo Kubernetes estas pli alta, kio povas esti pli pozitiva en medioj kiel tre disponeblaj serviloj.
- Docker Swarm estas pli rapide koncerne la deplojon kaj vastigon de ujoj.
- Kubernetes siaflanke ofertas pli grandaj garantioj al la grupaj ŝtatoj.
- El ŝarĝa ekvilibro en Kubernetes ĝi permesas pli bonan ekvilibron, kvankam ĝi ne estas aŭtomata kiel en Docker.
- Kubernetes ofertas pli bona flekseblecoeĉ en kompleksaj aplikoj.
- Docker Swarm subtenus ĝis 2000 nodoj, kompare kun 5000 ĉe Kubernetes.
- Kubernetes estas optimumigita por multaj malgrandaj aretoj, dum Dockers estas por granda areto.
- Kubernetes estas komplika, Pli simpla Docker.
- Kubernetes povas permesi dividi stokajn spacojn inter iu ujo, dum Docker estas pli limigita kaj nur dividita inter ujoj en la sama podo.
- Docker Swarm permesas vin uzi programoj de triaj por registrado kaj kontrolado, Kubernetes inkluzivas siajn proprajn enmetitajn ilojn.
- Docker Swarm estas limigita al 95.000 ujoj, dum Kubernetes povas subteni ĝis 300.000.
- Dum Docker havas granda komunumo Kubernetes ankaŭ subtenas kompaniojn kiel Microsoft, Amazon, Google kaj IBM.
- Docker estas uzata de kompanioj kiel Spotify, Pinterest, eBay, Twitter, ktp. Dum Kubernetes preferas 9GAG, Intuit, Buffer, Evernote, ktp.
Avantaĝoj
Vidinte iujn diverĝojn, nun venis la vico de la avantaĝoj ĉiu:
- Kubernetoj:
- Facila organizado de la servo kun kapsuloj.
- Disvolvita de Google, kun vasta sperto en la nuba industrio.
- Grandega komunumo kaj konteneraj instrumentoj.
- Vario de stokaj elektoj, inkluzive de lokaj SAN-oj kaj publikaj nuboj.
- Docker:
- Efika kaj facila komenca agordo.
- Spuras versiojn de konteneroj por ekzameni variaĵojn.
- Rapido.
- Tre bona dokumentado.
- Bona izolado inter programoj.
Malavantaĝoj
Koncerne la malavantaĝojn:
- Kubernetoj:
- Pli kompleksaj migradoj.
- Kompleksa instalado kaj agorda procezo.
- Nekongrua kun ekzistantaj Docker-iloj.
- Efektivigi manan areton estas komplika.
- Docker:
- Ĝi ne provizas stokan elekton.
- Malbona sekvo.
- Neniu aŭtomata reprogramado de neaktivaj nodoj.
- Agoj devas esti plenumitaj en CLI.
- Mana administrado de multaj kazoj.
- Vi bezonas subtenon por aliaj iloj.
- Malfacila mana areto-deplojo.
- Neniu subteno por sanaj kontroloj.
- Docker estas profitcela kompanio kaj iuj el ĝiaj kritikaj eroj, kiel Docker Engine kaj Docker Desktop, ne estas malfermfontaj.
Docker vs Kubernetes: Konkludo
Kiel vi povas imagi, ne estas tiel facile elekti inter unu aŭ la alia. La Docker vs Kubernetes-batalo estas pli kompleksa ol ĝi ŝajnas. Kaj ĉio dependos de la celo, kiun vi havas. Unu aŭ la alia pli taŭgos, kaj tio estu via elekto.
En multaj aliaj kazoj, uzi Kubernetes kun Docker estos la plej bona de ĉiuj ebloj. Ambaŭ projektoj funkcias bone kune. Ĉi tio povas plibonigi infrastrukturan sekurecon kaj altan haveblecon de aplikoj. Vi eĉ povas plialtigi programojn.
3 komentoj, lasu la viajn
Multaj dankoj ! Al mi fariĝas pli klare, kaj ĉefe kompreni, ke kiel en multaj okazoj, ne ekzistas pli bona aŭ pli malbona, se ne afero elekti la plej taŭgan.
Eble mi nur bezonas pli klaran ekzemplon por kompreni en kiu scenaro unu aŭ la alia pli bone funkcias, kaj en kiu kazo uzi ilin kune.
Ankaŭ, kiajn alternativojn ni havas al ĉi tiu speco de programoj?
Kaj kiajn uzojn povas doni tiuj el ni, kiuj komencas scii pri ujoj, vidi realajn kazojn sen atendi labori en grandaj kompanioj?
Mi pensas, ke io estas malĝuste difinita ĉi tie, docker estas uja administranto, ĝi ne kompareblas kun Orkestristo.
La komparo estus inter Docker Swarm kaj Kubernetes.
Ŝajne dum la kreo de ĉi tiu grandioza afiŝo (vere interesa laŭ mi), iuj kondiĉoj estis transpasitaj.