Programavimas

Apžvalga: „Red Hat“ daro „Docker“ sunkų kelią

„Red Hat“ projektas „Atomic“ yra pagrįstas būdas paleisti „Linux“ konteinerius. „Atomic Host“ operacinėje sistemoje yra jau įdiegti „Docker“ (konteineriai), „Flannel“ (tinklas), „OSTree“ (pagrindinio kompiuterio valdymas), „Etcd“ (paskirstytųjų raktų reikšmių saugykla) ir „Kubernetes“ (orkestravimas).

„Kubernetes“ yra viena iš dviejų populiarių konteinerių orkestravimo sistemų, kita - „Docker Swarm“. Galėtumėte tai pavadinti „visa jėga“, tačiau tai reiškia papildomą sudėtingumą ir administracines pridėtines išlaidas.

„Kubernetes“ koordinuoja „ankščių“ kūrimą keliuose „Atomic“ kompiuteriuose. Pods yra „Docker“ talpyklų grupės, logiškai atskiriančios paslaugas programoje. „Pod“ talpyklos dalijasi IP adresu ir bendrauja per „localhost“.

„Flannel“ teikia perdangos tinklą „Atomic“ pagrindiniams kompiuteriams, leidžiant kiekvienam klasterio tinklui bendrauti su bet kokiu kitu klasterio tinklu ar paslauga. Šis perdangos tinklas naudojamas tik konteinerių tinklams kurti. „Kubernetes“ tarpinio serverio paslauga suteikia prieigą prie pagrindinio kompiuterio IP vietos.

Etcd naudojamas „Kubernetes“ ir „Flannel“ konfigūracijoms saugoti visuose klasterio kompiuteriuose.

Atominių konteinerių klasteriai daro tam tikras prielaidas dėl Kubernetes. Administratoriai tikrai neturi pasirinkimo pasirinkdami „Atomic“: arba naudokite „Kubernetes“, arba raskite kitą sudėtinio rodinio OS.

Jei jums trūksta „dizaino pagal susitarimą“ ir norite daugiau laisvės ir lankstumo konteinerių pagrindiniame kompiuteryje, galite apsvarstyti „RancherOS“ arba „VMware Photon“. Jei jūsų pagrindinis tikslas yra paleisti daugybę talpyklų daugeliui kompiuterių, „Atomic Host“, „Kubernetes“ ir draugai gali būti būtent tai, ko jums reikia.

Atominės pagrindinės sistemos administravimas

„Atomic Host“ naudoja savo versiją dokininkas komanda, atominis, nors ir tikrasdokininkas komandą galima aplanke / bin / docker. Jo vieta / šiukšliadėžėje yra užuomina į kai kuriuos pertvarkymus, kurie buvo atlikti su RHEL / CentOS / Fedora, kad „Atomic OS“ būtų specialiai sukurta konteineriams. Paprastai / bin yra tik svarbūs sistemos dvejetainiai failai.

„Atomic Host“ valdote per du posistemius. RPM-OSTree tvarko pagrindinės sistemos diegimą ir atnaujinimus, o „Docker“ - konteinerių, skirtų tarnyboms ir programoms vykdyti, teikimą. Abu šiuos posistemius valdo atominis komanda, esanti / usr / bin /.

„RPM-OSTree“ daro „Atomic“ failų sistemą nekintamą; T.y., failų sistema yra tik skaitoma, išskyrus / var ir / ir kt. Kataloge / var / lib / docker saugomi visi su „Docker“ susiję failai ir vaizdai, o / etc turi visus konfigūracijos failus. Kaip pamatysime vėliau, tai reiškia paprastesnius ir saugesnius pagrindinio kompiuterio naujovinimus ir žemesnę versiją, o tai yra esminis reikalavimas valdant potencialiai tūkstančius grupių sudėtinių rodinių.

atominis komanda turi būti vienas įvesties taškas į konteinerio posistemį - skėtinė komanda, skirta visiems daiktams, įskaitant pagrindinio kompiuterio operacijas. atominis komanda atrodo ir jaučiasi panašiai kaip dokininkas komandą, tačiau sprendžia pagrindinę problemą, kuria dalijasi visos konteinerio pagrindinio kompiuterio operacinės sistemos: sistemos lygio paslaugos paleidimas konteineryje įkrovos metu, patikimai ir skaidriai, naudojant „Systemd“ vieneto failus.

„Atomic“ sistemoje tai daroma vadinamuoju super privilegijuotu konteineriu, kuris turi galimybę pamatyti ir manipuliuoti pačiu šeimininku. Taigi, nors atominis atrodo kaip standartinė „Docker“ komanda, ji užpildo spragas tarp „Docker“ ir „RPM-OSTree“ - konfigūruoja diegimo scenarijus, nustato paslaugas, priskiria tinkamas privilegijas ir panašiai - kad būtų galima patikimai diegti konteinerių programą.

Paprasčiau tariantatominis komanda leidžia jums valdyti pagrindinę pagrindinės kompiuterio infrastruktūrą (grupes, vardų sritis, SELinux ir kt.), kad paleistumėte savo programas. Pvz., Tarkime, kad sukūrėte tinklo laiko protokolo (ntpd) talpyklos programą, kuriai reikalinga SYS_TIME galimybė, kad pakeistumėte pagrindinio kompiuterio sistemos laiką. Tai galite sukonfigūruoti pridėdami metaduomenis prie savo sudėtinio rodinio vaizdo naudodami komandą:

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

Tada paleisdami konteinerį (atominis bėgimas ntpd), sistema nuskaitys tuos metaduomenis ir sukonfigūruos SYS_TIME galimybes ir kitus talpyklos išteklius.

„Atomic Host“ diegimas ir konfigūravimas

Diegimas buvo kova, daugiausia dėl to, kad man pasirodė, kad dokumentacija yra nesutvarkyta ir paini. Dokumentai prisiima aukštą žinių apie „Red Hat“ ekosistemą lygį, kurio turės ne kiekvienas skaitytojas. Po kelių klaidingų paleidimų galiausiai pavyko įdiegti iš pliko metalo ISO. Parama virtualios mašinos diegimui naudojant bet ką, išskyrus „Virt-Manager“, yra skausminga. Šiuo atžvilgiu „Atomic Host“ tikrai nėra draugiškas „Windows“ ar „Mac“.

Visiems, kurie žino „CentOS“ diegimą, metalo procedūra bus lengva. Vieninteliai pastebimi skirtumai yra disko išdėstyme, kai vieta automatiškai rezervuojama „Docker“ ir talpykloms, taip pat daugybė „SELinux“, „cgroups“ ir kt. Laikiklių, kurie yra kartu su konteinerio OS diegimu.

„Kubernetes“ naudojimas konteinerių valdymui klasteriuose yra žymiai sudėtingesnis nei „Docker“ paleidimas viename pagrindiniame kompiuteryje, tačiau sudėtingesnis yra didesnis patikimumas ir galimybės. Naudodamiesi „Kubernetes“, jūs taip pat galite jaustis patogiai žinodami, kad sistema buvo išbandyta didelio masto gamybos aplinkose („Google“).

Nėra jokio paprasto būdo įsirengti „Kubernetes“ meistrą. Dokumentacija yra išplatinta įvairiose projekto svetainėse, ir daug kartų dokumentai ieško informacijos kitose svetainėse, todėl būkite pasirengę praleisti daug laiko skaitydami, vaikydamiesi dokumentus ir eksperimentuodami. Bendra pastangų suma apima maždaug dešimčių failų, išsidėsčiusių keliuose / tt kataloguose, modifikavimą. Žinoma, apgauti yra žinoti, kas yra tos modifikacijos. „Kubernetes“ tikrai nėra sukurtas atsitiktiniams eksperimentams su konteineriais. Tai sunkios gamybos daiktai.

Konfigūravęs pagrindinį kompiuterį su „Kubernetes“, sertifikatais, paslaugomis ir „Flannel“ perdangos tinklu, tada kiekviename mazge įdiegęs „Flannel“ (flanneld), Kubernetes (kubelet) ir Etcd, galiausiai turėjau penkių mazgų talpyklų grupę. Deja, tai sunaudojo nemažai atminties, ir man nepavyko rasti būdo išbandyti naudojant vieną mazgą, kaip tai dariau bandant „RancherOS“ ir „VMware Photon“.

Šiuo metu „Kubernetes“ galima naudoti paleidžiant ir tvarkant ankštis - tas konteinerių grupes, kurios apima paslaugas ir programas.

„Atomic Host“ saugojimas ir tinklų kūrimas

Kaip ir daugumoje talpyklų pagrindinio kompiuterio operacinių sistemų, „Atomic Host“ laikosi minimalistinio požiūrio ir turi tik tiek vietos diske, kad būtų galima paleisti kompiuterį. Tai daug nepalieka daugeliui „Docker“ talpyklų, kurios veiks tipinis klasteris, todėl tam reikės prie pagrindinio kompiuterio prijungti išorinę atmintį.

Programoje „Docker“ vaizdai ir susiję failai paprastai yra saugomi aplanke / var / lib / docker, o daugumoje standartinių operacinių sistemų tiesiog tame failų sistemos taške turėtumėte prijungti įrenginį, kad pridėtumėte saugyklą. Tačiau „Atomic“ naudoja tiesioginius LVM („Linux Volume Manager“) tomus per „Device Mapper“ galinę dalį, kad išsaugotų „Docker“ vaizdus ir metaduomenis: / dev / atomicos / docker-data ir / dev / atomicos / docker-meta. Tai reiškia, kad turėsite ką nors sužinoti apie LVM ir tomus, kad galėtumėte pridėti vietos „Atomic“ pagrindiniame kompiuteryje.

„Atomic“ saugyklos valdymo pradinis taškas yra sąrankos scenarijus, / etc / sysconfig / docker-storage-setup. „Atomic Host“ turi „Docker“ (ir pagrindinio kompiuterio) atminties saugyklą, todėl čia gudrybė yra pridėti naują įrenginį prie šio baseino. Tai padarysite pridėdami faile esančių įrenginių sąrašą taip:

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

Tada paleisite pagalbininko scenarijų, / usr / bin / docker-storage-setup. Jei viskas gerai, jūsų diskai buvo pridėti prie baseino, o „Atomic“ pagrindiniame kompiuteryje yra vietos „Docker“. Manau, kad LVM bus valdomas gamyboje naudojant esamus administravimo įrankius arba naudojant panašius „Ansible“ / „Druska“ / „Virėjas“ / „Lėlių“ scenarijus, todėl greičiausiai tai atrodys standartiškiau administratoriams, dirbantiems didelėje duomenų centro aplinkoje.

„Project Atomic“ naudoja „Flannel“, kad teiktų konteinerių perdangos tinklą per Etcd. Tai sukonfigūravote stumdami JSON konfigūracijos failą į Etcd raktų reikšmių saugyklą, naudodami tokius įrankius kaip „Curl“. Norėdami sukonfigūruoti konteinerių potinklį, galime sukurti JSON failą, kuris atrodo taip:

„Tinklas“: „172.16.0.0/12“,

„SubnetLen“: 24,

„Backend“: {

„Tipas“: „vxlan“

   }

}

Norėdami tai pasiekti Etcd pagrindiniame kompiuteryje, mes jį įstumiame į tinklo konfigūracijos raktą:

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

Nors ir šiek tiek sudėtinga, tačiau ją galima valdyti. Norėčiau pamatyti šių konfigūravimo komandų paketą, kuris „Unix“ administratoriui padaro jį intuityvesnį, galbūt kažką panašaus atominis „ifconfig“ ..., atominis maršrutas…ir kt.

Čia yra dar vienas skirtumas, kurį verta pabrėžti: „Kubernetes“ ankštys ir paslaugos. Ankštis - tai grupė konteinerių, kurie yra gana glaudžiai sujungti. Visi konteineriai dėžutėje turi tą patį pagrindinį kompiuterį ir tą patį IP adresą, ir jie visi gyvena arba miršta kartu. Nurodote, kiek „Pod“ egzempliorių norite paleisti, ir „Kubernetes“ vykdo užsakymą. Jei egzempliorius sustoja arba nepavyksta, „Kubernetes“ sukasi kitą, kad atitiktų norimą būseną.

„Kubernetes“ paslauga yra abstrakcija, apibrėžianti loginį ankščių rinkinį ir politiką, pagal kurią prie jų galima prisijungti. Tai suteikia (mikro) paslaugai vieną, stabilų pavadinimą ir adresą per visą ankštinės gyvavimo ciklą. Tai yra daug daugiau, tačiau tai turėtų padėti suprasti, kodėl tinklui valdyti reikalingas atskiras komponentas. Programoje „Atomic Host“ šis komponentas yra „Flanelė“.

Atomic Host atnaujinimai ir žemesnės versijos

„Atomic Host“ naudoja paketų tvarkyklę RPM-OSTree, kuri sujungia tradicinių RPM ir OSTree ypatybes. RPM-OSTree suteikia mums galimybę patikimai slinkti pirmyn ir atgal, nes procesas yra „atominis“ (žodžio prasme duomenų bazėje). „RPM-OSTree“ teikia patikimas operacijas, skirtas atnaujinti, o tai reiškia, kad vargu ar sugadins operacinę sistemą. Kaip ir konteinerių komandos, pagrindinio kompiuterio naujinius ir grąžinimus pateikia atominis valdymo sistema:

atominio kompiuterio atnaujinimas

atomo šeimininko grįžimas

Atkreipkite dėmesį, kad aš neišbandžiau grįžimo, nes neturėjau prie ko grįžti.

„Red Hat Atomic Host“ geriausiai tinka organizacijoms, daug investuojančioms į „Red Hat“ įgūdžius ir infrastruktūrą. Įmonės, pradedančios kitu kampu, gali norėti apsvarstyti kitas galimybes. „Kubernetes“ ir „Red Hat“ istorijos įtraukimas į didelę gamybinę aplinką reiškia, kad „Atomic Host“ bus beveik „iššūkis“ vykdant konteinerių darbo krūvį įmonėse. Tačiau nematau, kad kūrėjai tai renkasi kaip pasirinktą „Docker“ platformą.

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