Programiranje

RancherOS: preprostejši Linux za ljubitelje Dockerja

Tako kot različne distribucije strežnikov in namizja Linux, tudi kontejnersko usmerjene distribucije Linuxa mešajo in ujemajo različne projekte in komponente za gradnjo celotne infrastrukture vsebnikov. Ti distro-ji običajno združujejo minimalno jedro OS, okvir za orkestracijo in ekosistem storitev zabojnikov. RancherOS ne ustreza le plesni, temveč minimalno jedro in paradigmo vsebnika spravi v skrajne meje.

RancherOS je platforma infrastrukture zabojnikov, ki poganja Docker neposredno na jedro Linuxa z zmanjšanim odtisom (20 MB). Rancherjev minimalistični operacijski sistem je edinstven po tem, da je celo postopek init Dockerized servisni vsebnik. Tradicionalne sistemske storitve, kot sta NTP in DNS, so prav tako zamenjane s kontejnerskimi ustrezniki.

Minimalni operacijski sistemi imajo v proizvodnji več prednosti. Odstranjevanje nepotrebnih paketov in knjižnic omogoča hitrejše zagon, lažje upravljanje različic in manjšo površino napada, kar pomeni manj varnostnih popravkov. RancherOS naredi "posodobitve" še korak naprej in vse sistemske storitve distribuira kot Dockerjeve vsebnike. Varnostna posodobitev preprosto pomeni prenos nove slike in ponovni zagon vsebnika, postopek, ki traja le nekaj sekund, ne da bi prišlo do izpada storitve.

Kot operacijski sistem, zasnovan za zabojnike, RancherOS komajda prepozna nekdo, ki prihaja iz tradicionalnega Unixa. Ohranjena je le majhna podskupina jedra - vse ostalo je narejeno v vsebnikih. Če pa poznate Docker, se boste v RancherOS počutili kot doma.

Zasnovan za Docker

Da bi razumeli zasnovo RancherOS, se morate spomniti, da so tradicionalni sistemi Unix konfigurirani redko, aplikacije pa so na vrhu stabilne osnovne slike. V infrastrukturi zabojnikov je OS v določenem smislu za enkratno uporabo in se bo verjetno pogosto spreminjal. Čeprav bi lahko za konfiguriranje in vzdrževanje gostiteljev vsebnikov uporabili orodje, kot so Ansible, SaltStack, Puppet ali Chef, je med izvajanjem v obsegu lažje uporabiti isti API za OS kot za vsebnike in zagnati nov primerek OS.

Tako RancherOS odstrani vse, razen bistvenega pomena za zagon Dockerja in gostovanje agentov za platforme za upravljanje zabojnikov, kot sta Rancher ali Kubernetes. Pravzaprav je RancherOS tako minimalen, da sta podprta le dva uporabnika: root in rancher. Da bi razumeli to zasnovo, je najbolje začeti s ponazoritvijo sistemske arhitekture:

Rancher

RancherOS je bil kontejner do te mere, da je celo začetni postopek, PID 1, iz katerega so nastali vsi drugi procesi, demon Dockerja. Čeprav je na videz majhna podrobnost, je zamenjava tradicionalnega sistema init, kot je Sysvinit ali Systemd, z dockerizovanim postopkom init ena temeljnih lastnosti sistema RancherOS, saj na čist način premaga nekatere nezdružljivosti v arhitekturah Systemd in Docker. Čeprav napredek pri odpravljanju teh nezdružljivosti napredujejo razvijalci Systemd, zasnovo RancherOS ne zagotavlja težav tukaj, zdaj in v prihodnosti, čeprav za ceno upravljanja stvari nekoliko drugače.

RancherOS poganja dva demona Docker, System Docker in User Docker. Vse storitve na sistemski ravni, kot so konzola, upravljanje naprav, NTP in DHCP, upravlja sistem-docker ukaz, medtem ko se delovne obremenitve vsebnika upravljajo s tradicionalnim docker ukaz. Ti ukazi so enaki, razen za vrste vsebnikov, s katerimi lahko delujejo. Torej, če želite videti, katere storitve na sistemski ravni se izvajajo, vnesite sistemski priključek ps.

V tem primeru boste opazili, da so imena skrajno desno - Syslog, NTP, Udev itd. - vse sistemske storitve Linuxa. Ustavitev, zagon in posodobitev sistemske storitve se obravnava enako kot pri katerem koli drugem vsebniku z uporabo Docker API-ja.

Upoštevajte tudi, da je sistemski vsebnik storitve, imenovan docker, ki ga zažene System Docker, ločen demon Dockerja za upravljanje uporabniških vsebnikov. To je pomembna ločitev privilegijev. Ker se vsi uporabniški vsebniki izvajajo znotraj vsebnika User Docker, na primer brisanje vseh uporabniških vsebnikov ne bo podrlo sistemskih vsebnikov, v katerih se izvajajo storitve RancherOS.

Z vnosom lahko vidite, kakšne so obremenitve uporabniškega vsebnika, tako kot običajno pri Dockerju docker ps. Celo lupina je vsebnik (tisti z imenom konzola), zato lahko izberete, katerega želite zagnati. Trenutno razpoložljive lupine so BusyBox (privzeto), Alpine, CentOS, Debian, Fedora in Ubuntu.

Ker so sistemske storitve vsebniki, upravljanja paketov ni. Če želite nadgraditi storitev, preprosto ustavite stari vsebnik, potegnite novo različico in znova zaženite storitev, pri čemer uporabljate isti Docker API.

Namestitev in konfiguracija RancherOS

Prva stvar, ki jo mora narediti tradicionalni skrbnik Unixa, je prenehati razmišljati o „več uporabniškem OS“ in začeti razmišljati o „infrastrukturni platformi“. RancherOS je zasnovan tako, da je na predvidljiv, avtomatiziran način oskrbovan z različnimi okolji - vključno z golimi kovinami, virtualnimi stroji in številnimi oblaki, vključno z AWS in Googlom.

V navidezni stroj sem namestil s pomočjo slike ISO in pri osnovni namestitvi nisem naletel na težave. Ni možnosti ali zaslona za konfiguracijo. Zaženete OS (ki vas samodejno prijavi), nastavite particijo diska za RANCHER_STATE in nato znova zaženete in konfigurirate.

Če si ogledate konfiguracijski imenik, / etc, boste videli, da datotek / etc / rc ali še česa drugega ni, in kaj vse je spremenjeno z urejevalnikom besedil. RancherOS ima enakovredne tri ravni izvajanja v tradicionalnem smislu, ki ustrezajo System Docker, User Docker in Container. Konfiguracijo opravi bootcmd, ki se izvaja pred System Docker in runcmd, ki se izvaja v System Dockerju in se izvaja pred zagonom User Dockerja.

RancherOS je konfiguriran na dva načina: ročno z uporabo ros config ukaz in ob zagonu s konfiguracijsko datoteko za konfiguracijo v oblaku. Sprva sem ugotovil, da je to nekoliko zmedeno, še posebej, če še nikoli niste uporabljali konfiguracije v oblaku (namig: za začetno nastavitev uporabite urejevalnik, ki podpira YAML, kot sta Emacs in Tramp Mode). Ko sem lahko SSH vstavil v stroj, je bil sorazmerno enostaven za uporabo ros config da dobim želeno konfiguracijo in izpišem ustrezno datoteko YAML za konfiguriranje v oblaku, ki bo začela veljati ob naslednjem ponovnem zagonu. Ker je zagon hiter, je tudi razvojni cikel tukaj hiter.

Vse, kar želite konfigurirati, lahko storite z datoteko YAML ali ros config vključno z nalaganjem modulov jedra, konfiguracijo TLS in parametri uglaševanja jedra. Bilo bi lepo, če bi vsaj delno ohranili obstoječe naložbe v orodja za upravljanje konfiguracij, kot sta SaltStack in Puppet, da bi olajšali prehod na platforme zabojnikov. Zdi se, da bi bil SaltStack's Reactor primeren za ta primer. Tako kot zdaj se bo večina ljudi naučila povsem novega načina upravljanja konfiguracij strojev. Večina skrbnikov vsebnikov bo uporabljala spletni uporabniški vmesnik za upravljanje vsebnikov Rancher, zato je ta naloga na tej ravni verjetno lažja.

Shranjevanje in mreženje RancherOS

Prej sem omenil, da namestite RancherOS z določitvijo naprave za shranjevanje trajnega stanja. V večini primerov je to edini disk, ki ga bo RancherOS uporabljal. Ker se vse storitve izvajajo v Dockerjevih vsebnikih, bodo za trajno shranjevanje uporabljale Dockerjeve količine, kar približno odseva sistemsko arhitekturo. Sistemski zvezki zagotavljajo trajno shrambo za sistemske vsebnike, uporabniške količine za storitve konzol in obsege ukazov za binarne datoteke, ki jih uporabljajo sistemske storitve. Veliko število storitev in storitev pomeni, da nosilec ukaz ne bo v veliko pomoč: na voljo je celotna stran nerazumljivega rezultata. Želim si, da bi dokumentacija to nekoliko bolje pojasnila, ker je vztrajnost kritično pomembna tema za razumevanje.

Rancher podpira trenutne posnetke in varnostno kopiranje zvezkov Dockerja, kar uporabnikom omogoča varnostno kopiranje vsebnikov in storitev s stanjem. To ni vključeno v RancherOS, je pa del funkcije Convoy sistema za upravljanje vsebnikov Rancher. S programom Convoy lahko posnamete posnetke zvezkov, postopoma varnostno kopirate posnetke v objekte, kot je Amazon S3, in obnovite nosilce v delujočih gostiteljih.

Datotečni sistem ZFS je podprt, vendar ga nisem imel priložnosti preizkusiti. Glede na stanje dokumentacije in omejitev, da je zpool mogoče namestiti samo na / mnt, pred uporabo tega v proizvodnji priporočam temeljito testiranje.

V RancherOS lahko naredite vse običajne omrežne konfiguracije, vendar z uporabo YAML konfiguracijskih datotek oz ros ukazi. Omrežne nastavitve živijo v imenskem prostoru rancher.network.interfaces, kjer konfigurirate DHCP, prehode, MTU itd. Na enak način je mogoče konfigurirati več omrežnih kartic, vezi, mostove in VLANS. DNS je v ključnem prostoru rancher.networks.dns. Dokler se ne navadite preslikav imenskega prostora, pričakujte, da boste malo kopali.

Nadgradnje in znižanja RancherOS

Nadgradnje in nadgradnje na mestu bi težko bile lažje. Nadgraditi (ali znižati) boste morali dva sistema: OS in Docker motor. Upravljanje z enim od njih je enostavno in uganite le nekaj sekund ros ukaz. Vse, kar morate storiti, je, da izberete različico operacijskega sistema, ki ga želite zagnati, in ga znova zaženite. Želim si, da bi vse nadgradnje in nadgradnje Unixa potekale tako gladko. Na primer, znižanje s 1.0.1 na 1.0.0 je trajalo manj kot minuto:

Rancher

Lepo. Če želite zamenjati Dockerjeve motorje, lahko to storite enako enostavno:

ros stikalo za motor docker-1.11.2

RancherOS je lep mali operacijski sistem. Njeni pristopi k konfiguraciji sistema in upravljanju paketov bodo novi in ​​drugačni od tradicionalnih sistemskih skrbnikov, dokumentacija pa ni vedno takšna, kot bi lahko bila. Če pa poznate Dockerja, veste večino tega, kar potrebujete za zagon RancherOS-a.

Nova vrsta kontejnerjev je zrela, proizvodnja kontejnerjev pa je resnična možnost za zgodnje uporabnike. RancherOS omogoča enostavno gradnjo infrastrukture za gostovanje zabojnikov, vendar so potrebna nova znanja.

$config[zx-auto] not found$config[zx-overlay] not found