Programovanie

Recenzia: Red Hat robí Dockera tvrdo

Red Hat’s Project Atomic je názorný spôsob prevádzkovania kontajnerov Linux. Operačný systém Atomic Host sa dodáva s nainštalovanými programami Docker (kontajnery), Flannel (sieť), OSTree (správa hostiteľa), Etcd (distribuovaný obchod s kľúčmi a hodnotami) a Kubernetes (orchestrácia).

Kubernetes je jedným z dvoch populárnych systémov orchestrácie kontajnerov, druhým je Docker Swarm. Môžete to nazvať „plná sila“, ale s tým prichádza ďalšia zložitosť a administratívna réžia.

Kubernetes koordinuje vytváranie „podov“ medzi viacerými atómovými hostiteľmi. Pody sú skupiny kontajnerov Docker, ktoré logicky oddeľujú služby v aplikácii. Kontajnery v modulu zdieľajú adresu IP a komunikujú prostredníctvom localhost.

Flanel poskytuje overlay sieť pre hostiteľov Atomic, čo umožňuje každému modulu v klastri komunikovať s akýmkoľvek iným modulom alebo službou v klastri. Táto prekryvná sieť sa používa iba na vytváranie sietí kontajnerov. Služba proxy Kubernetes poskytuje prístup do priestoru IP hostiteľa.

Etcd sa používa na ukladanie konfigurácií pre Kubernetes aj Flannel cez všetkých hostiteľov v klastri.

Atómové zhluky kontajnerov vytvárajú kvôli Kubernetes určité predpoklady. Správcovia s Atomic skutočne nemajú na výber: Použite Kubernetes alebo nájdite iný kontajnerový OS.

Ak sa obávate o „návrh podľa konvencie“ a chcete v hostiteľovi kontajnera väčšiu slobodu a flexibilitu, môžete zvážiť RancherOS alebo VMware Photon. Ak je vaším konečným cieľom spustiť veľa kontajnerov na mnohých hostiteľoch, potom môžu byť práve Atomic Host, Kubernetes a priatelia.

Správa systému Atomic Host

Atomic Host používa vlastnú verziu servera docker príkaz, atómový, aj keď skutočnýdocker príkaz je k dispozícii v priečinku / bin / docker. Jeho umiestnenie v / bin naznačuje niektoré z prepracovaní, ktoré boli urobené na RHEL / CentOS / Fedora, aby sa Atomic OS stal účelovým pre kontajnery. V priečinku / bin sa zvyčajne nachádzajú iba dôležité systémové binárne súbory.

Atomic Host spravujete prostredníctvom dvoch podsystémov. RPM-OSTree spracováva nasadenie a aktualizácie hostiteľského systému, zatiaľ čo Docker zaisťuje poskytovanie kontajnerov pre bežiace služby a aplikácie. Oba tieto subsystémy spravuje atómový príkaz umiestnený v / usr / bin /.

Vďaka RPM-OSTree je atómový súborový systém nemenný; tj. súborový systém je iba na čítanie okrem / var a / etc. V adresári / var / lib / docker sú uložené všetky súbory a obrázky súvisiace s Dockerom, zatiaľ čo v priečinku / etc sú všetky konfiguračné súbory. Ako uvidíme neskôr, umožní to jednoduchšie a bezpečnejšie upgrady a downgrady hostiteľa, čo je základná požiadavka pri správe potenciálne tisícov hostiteľov kontajnerov v klastri.

The atómový Príkaz má byť jediným vstupným bodom do subsystému kontajnera - zastrešujúcim príkazom pre kontajner všetkých vecí vrátane operácií hostiteľa. The atómový príkaz vyzerá a vyzerá podobne ako príkaz docker príkaz, ale rieši zásadný problém zdieľaný všetkými operačnými systémami hostiteľa kontajnera: spoľahlivé a transparentné spustenie služby na úrovni systému v kontajneri pri zavedení systému pomocou súborov jednotiek Systemd.

V prípade Atomic sa to deje pomocou takzvaného super privilegovaného kontajnera, ktorý má schopnosť samotného hostiteľa vidieť a manipulovať s ním. Takže hoci atómový vyzerá ako štandardný príkaz Docker, vypĺňa medzery medzi Dockerom a RPM-OSTree - konfiguruje inštalačné skripty, nastavuje služby, prideľuje správne privilégiá a podobne - aby umožnil spoľahlivé nasadenie kontajnerovej aplikácie.

Zjednodušene povedanéatómový Príkaz umožňuje manipulovať so základnou hostiteľskou infraštruktúrou (cgroups, namespaces, SELinux, atď.) na spustenie vašich aplikácií. Povedzme napríklad, že ste vytvorili kontajnerovú aplikáciu Network Time Protocol (ntpd), ktorá vyžaduje schopnosť SYS_TIME, aby bolo možné upraviť systémový čas hostiteľa. Môžete to nakonfigurovať pridaním metadát do obrázka kontajnera pomocou príkazu:

LABEL RUN / usr / bin / docker run -d —cap-add = SYS_TYPE ntpd

Potom, keď spustíte kontajner (atómový beh ntpd), systém načíta tieto metadáta a nakonfiguruje schopnosť SYS_TIME a ďalšie zdroje pre kontajner.

Inštalácia a konfigurácia atómového hostiteľa

Inštalácia bola boj, hlavne preto, že mi dokumentácia pripadala neusporiadaná a neprehľadná. Dokumenty predpokladajú vysokú úroveň znalostí o ekosystéme Red Hat, ktorú nebude mať každý čitateľ. Po niekoľkých falošných štartoch sa mi konečne podarilo nainštalovať z bare-metal ISO. Podpora pre inštaláciu virtuálneho stroja na čokoľvek iné ako virt-manager je bolestivá. Atomic Host v tomto ohľade rozhodne nie je vhodný pre Windows alebo Mac.

Pre kohokoľvek, kto je oboznámený s inštaláciou CentOS, bude postup holým kovom jednoduchý. Jediné viditeľné rozdiely sú v rozložení disku, kde je priestor vyhradený automaticky pre Docker a kontajnery, spolu s nepreberným počtom pripojení pre SELinux, cgroups atď., Ktoré sprevádzajú inštaláciu operačného systému kontajnera.

Používanie Kubernetes na správu kontajnerov naprieč klastrom je podstatne komplikovanejšie ako spustenie Dockeru na jednom hostiteľovi, ale s väčšou zložitosťou prichádza aj vyššia spoľahlivosť a schopnosť. S Kubernetes tiež získate pohodlie vedomia, že systém bol testovaný v prostredí rozsiahlej výroby (Google).

Nie je jednoduchý spôsob, ako nastaviť majstra Kubernetes. Dokumentácia je rozložená na rôzne webové stránky projektu. Dokumenty mnohokrát vyhľadávajú podrobnosti na iných weboch, takže buďte pripravení stráviť veľa času čítaním, naháňaním dokumentov a experimentovaním. Súčet celkového úsilia zahŕňa úpravu niekoľkých desiatok súborov rozložených do niekoľkých adresárov / etc. Trik je samozrejme vedieť, čo sú tieto úpravy. Kubernetes nie je vyrobený na príležitostné experimentovanie s kontajnermi. Toto je ťažká výroba.

Po nakonfigurovaní masteru s Kubernetes, certifikátmi, službami a sieťou prekrytia Flanel, potom inštaláciou Flanel (flanneld), Kubernetes (kubelet) a Etcd na každý uzol, som mal konečne spustený päťuzlový kontajnerový klaster. Bohužiaľ to spotrebovalo dosť pamäte a nebol som schopný nájsť spôsob testovania pomocou jedného uzla, ako som to urobil pri testovaní RancherOS a VMware Photon.

V tomto okamihu je možné Kubernetes použiť na spustenie a správu podov, skupín kontajnerov, ktoré obsahujú služby a aplikácie.

Ukladanie a sieťovanie atómového hostiteľa

Rovnako ako väčšina operačných systémov hostiteľa kontajnerov, aj Atomic Host má minimalistický prístup a na spustenie hostiteľa má k dispozícii iba dostatok miesta na disku. To nenecháva veľa pre veľa kontajnerov Docker, ktoré bude bežať bežný klaster, takže za týmto účelom budete musieť k hostiteľovi pripojiť externé úložisko.

V Docker sú obrázky a súvisiace súbory zvyčajne uložené v adresári / var / lib / docker a na väčšinu štandardných operačných systémov stačí v danom bode súborového systému pripojiť zariadenie a pridať tak úložisko. Atomic však na ukladanie obrázkov a metadát Docker používa priame zväzky LVM (Linux Volume Manager) cez back-end zariadenia Device Mapper: / dev / atomicos / docker-data a / dev / atomicos / docker-meta. To znamená, že sa budete musieť dozvedieť niečo o LVM a zväzkoch, aby ste pridali priestor atómovému hostiteľovi.

Východiskovým bodom pre správu úložiska v Atomic je skript nastavenia, / etc / sysconfig / docker-storage-setup. Atomic Host má úložný priestor pre úložisko Docker (a hostiteľa), takže trikom je tu pridanie nového zariadenia do tohto fondu. Urobíte to pridaním do zoznamu zariadení v súbore, napríklad takto:

DEVS = "/ dev / vdb / dev / vdc"

Potom spustíte pomocný skript, / usr / bin / docker-storage-setup. Ak všetko pôjde dobre, vaše disky boli pridané do fondu a váš hostiteľ Atomic má miesto pre Docker. Predpokladám, že LVM bude riadený vo výrobe s existujúcimi administračnými nástrojmi alebo s podobnými skriptmi Ansible / Salt / Chef / Puppet, takže správcom pracujúcim v prostrediach veľkých dátových centier sa pravdepodobne budú javiť štandardnejšie.

Project Atomic využíva Flannel na zabezpečenie siete prekrytia kontajnerov cez Etcd. Nakonfigurujete to tak, že pomocou konfiguračného súboru JSON vložíte do úložiska kľúčov – hodnota Etcd pomocou nástrojov, ako je Curl. Ak chcete nakonfigurovať podsieť pre kontajnery, môžeme vytvoriť súbor JSON, ktorý vyzerá takto:

„Sieť“: „172.16.0.0/12“,

„SubnetLen“: 24,

„Backend“: {

„Type“: „vxlan“

   }

}

A aby sme to dostali do Masteru Etcd, vložíme ho do kľúča konfigurácie siete:

curl -L //localhost:2379/v2/keys/atomic.io/config -XPUT --data-urlencode [email protected]

Aj keď je to trochu ťažkopádne, dá sa to zvládnuť. Bol by som rád, keby sa zobrazil obal týchto konfiguračných príkazov, ktoré správcovi Unix robia intuitívnejšie prostredie, napríklad niečo podobné atómový ifconfig ..., atómová cesta ..., atď.

Je potrebné zdôrazniť ešte jeden rozdiel: koncepty pod a služieb Kubernetes. Podstavec je skupina nádob, ktoré sú relatívne pevne spojené. Všetky kontajnery v priečinku zdieľajú rovnakého hostiteľa a rovnakú adresu IP a všetky žijú alebo zomierajú spolu. Zadáte počet inštancií modulu, ktorý chcete spustiť, a Kubernetes vykoná dané poradie. Ak sa inštancia zastaví alebo zlyhá, Kubernetes roztočí inú, aby zodpovedala požadovanému stavu.

Služba Kubernetes je abstrakcia, ktorá definuje logickú sadu podov a politiku, pomocou ktorej k nim získate prístup. To dáva (mikro) službe jediný stabilný názov a adresu počas celého životného cyklu podu. Je toho oveľa viac, ale malo by vám to pomôcť pochopiť, prečo na správu siete potrebujete samostatný komponent. V atómovom hostiteľovi je touto zložkou flanel.

Atomic Host upgraduje a downgraduje

Atomic Host používa správcu balíkov s názvom RPM-OSTree, ktorý kombinuje funkcie tradičných RPM a OSTree. RPM-OSTree nám dáva schopnosť spoľahlivo sa pohybovať dopredu a dozadu, pretože proces je „atómový“ (v zmysle slova v databáze). Program RPM-OSTree poskytuje spoľahlivé transakcie týkajúce sa aktualizácií, čo znamená, že je nepravdepodobné, že by došlo k narušeniu operačného systému. Rovnako ako príkazy pre kontajnery, aj pred aktualizáciami a vráteniami hostiteľov sa nachádza ikona atómový manažérsky systém:

upgrade atómového hostiteľa

vrátenie atómového hostiteľa

Všimnite si, že som neskúšal rollback, pretože som sa nemal k čomu vrátiť.

Red Hat Atomic Host je najvhodnejší pre organizácie, ktoré majú veľké investície do zručností a infraštruktúry Red Hat. Spoločnosti začínajúce z iného uhla pohľadu môžu zvážiť ďalšie možnosti. Zahrnutie Kubernetes a história Red Hat do veľkých produkčných prostredí znamenajú, že Atomic Host bude takmer „drop-in“ pre beh kontajnerových pracovných záťaží v podnikoch. Ale nevidím vývojárov, ktorí by to vnímali ako svoju zvolenú platformu Docker.

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