Programmering

RancherOS: En enklere Linux til Docker-elskere

Ligesom de forskellige Linux-server- og desktop-distributioner blander og matcher den containerorienterede Linux-distribution forskellige projekter og komponenter for at konstruere en komplet containerinfrastruktur. Disse distroer kombinerer generelt en minimal OS-kerne, en orkestreringsramme og et økosystem af containertjenester. RancherOS passer ikke kun til formen, men fører den minimale kerne og containerparadigmet til ekstremer.

RancherOS er en containerinfrastrukturplatform, der kører Docker direkte oven på en reduceret fodaftryk (20 MB) Linux-kerne. Ranchers optagelse af et minimalistisk operativsystem er unik, fordi selv init-processen er en Dockerized-servicecontainer. Ligeledes er traditionelle tjenester på systemniveau, som NTP og DNS, blevet erstattet med containeriserede ækvivalenter.

Minimale operativsystemer har flere fordele i produktionen. Fjernelse af unødvendige pakker og biblioteker giver hurtigere opstart, lettere versionadministration og en mindre angrebsflade, hvilket betyder færre sikkerhedsrettelser. RancherOS tager "opdateringer" et skridt videre og distribuerer alle systemtjenester som Docker-containere. En sikkerhedsopdatering betyder simpelthen at downloade et nyt billede og genstarte containeren, en proces der tager kun et par sekunder uden nedetid for tjenesten.

Som et OS designet til containere kan RancherOS næppe genkendes for nogen, der kommer fra en traditionel Unix-baggrund. Kun en lille delmængde af kernen bevares - alt andet sker i containere. Men hvis du er fortrolig med Docker, vil du føle dig hjemme i RancherOS.

Designet til Docker

For at forstå RancherOS-designet skal du huske, at traditionelle Unix-systemer er konfigureret sjældent med applikationer lagdelt oven på et stabilt basisbillede. I en containerinfrastruktur er operativsystemet på en måde disponibel og vil sandsynligvis blive ændret ofte. Selvom du kunne bruge et værktøj som Ansible, SaltStack, Puppet eller Chef til at konfigurere og vedligeholde containerværter, er det nemmere at bruge den samme API til operativsystemet, når du kører i skala, som du gør for containere og starte en ny forekomst af OS.

Således fjerner RancherOS alt andet end det væsentlige til at køre Docker og hostingagenter til containeradministrationsplatforme som Rancher eller Kubernetes. Faktisk er RancherOS så minimal, at kun to brugere understøttes: root og rancher. For at forstå dette design er det bedst at starte med en illustration af systemarkitekturen:

Rancher

RancherOS er blevet containeriseret til det punkt, at selv init-processen, PID 1, hvorfra alle andre processer er skabt, er en Docker-dæmon. Selvom det tilsyneladende er en lille detalje, er det en af ​​kernefunktionerne i RancherOS at erstatte det traditionelle init-system som Sysvinit eller Systemd med en Dockerized init-proces, da det overvinder nogle af inkompatibiliteterne i systemd og Docker-arkitekturen på en ren måde. Selvom der sker fremskridt med at løse disse inkompatibiliteter af Systemd-udviklerne, sikrer RancherOS-designet nul problemer her, nu og i fremtiden, omend på bekostning af at styre tingene lidt anderledes.

RancherOS kører to Docker-dæmoner, System Docker og User Docker. Alle tjenester på systemniveau såsom konsollen, enhedsadministration, NTP og DHCP administreres af system-docker kommando, mens containerarbejdsbelastningerne styres med det traditionelle docker kommando. Disse kommandoer er identiske bortset fra de typer containere, de kan betjene. Så hvis du vil se, hvilke tjenester på systemniveau der kører, skal du gå ind system-docker ps.

Hvis du gør det, vil du bemærke, at navnene yderst til højre - Syslog, NTP, Udev osv. - alle er Linux-systemtjenester. Stop, start og opdatering af en systemtjeneste håndteres på samme måde som med enhver anden container ved hjælp af Docker API.

Bemærk også, at systemtjenestecontaineren kaldet docker, som startes af System Docker, er en separat Docker-dæmon til styring af brugercontainere. Dette er en vigtig adskillelse af privilegier. Da alle brugercontainere kører inde i User Docker-containeren, vil sletning af alle brugercontainere f.eks. Ikke bringe systemcontainere, der kører RancherOS-tjenester, ned.

Du kan se, hvad arbejdsbehovene til brugercontaineren er, som du normalt ville gøre med Docker, ved at indtaste docker ps. Selv skallen er en beholder (den der hedder konsol), så du kan vælge, hvilken du vil køre. De aktuelt tilgængelige skaller er BusyBox (standard), Alpine, CentOS, Debian, Fedora og Ubuntu.

Da systemtjenester er containere, er der ingen pakkehåndtering. For at opgradere en tjeneste skal du blot stoppe den gamle container, trække en ny version og genstarte tjenesten, alt sammen ved hjælp af den samme Docker API.

RancherOS installation og konfiguration

Den første ting, som en traditionel Unix-administrator skal gøre, er at stoppe med at tænke "flerbruger-OS" og begynde at tænke "infrastrukturplatform." RancherOS er designet til at blive klargjort over en række miljøer - herunder blåt metal, virtuel maskine og en række skyer inklusive AWS og Google - på en forudsigelig, automatiseret måde.

Jeg installerede på en virtuel maskine ved hjælp af ISO-billedet og stødte ikke på nogen problemer i den grundlæggende installation. Der er ingen valgmuligheder eller konfigurationsskærme. Du starter operativsystemet (som automatisk logger på dig), indstiller en diskpartition til RANCHER_STATE og genstarter og konfigurerer derefter.

Hvis du ser på konfigurationsmappen / etc, vil du se, at der ikke er nogen / etc / rc-filer eller meget andet, og hvad der er, ændres ikke med en teksteditor. RancherOS har ækvivalenten med tre kørselsniveauer i traditionel forstand, der svarer til System Docker, User Docker og Container. Konfigurationen udføres af bootcmd, der kører før System Docker, og runcmd, der kører i System Docker og udføres, før User Docker startes.

RancherOS er konfigureret på to måder: manuelt ved hjælp af ros config kommando og ved opstart ved hjælp af en cloud-config-konfigurationsfil. Jeg fandt dette lidt fiddly i starten, især hvis du aldrig har brugt cloud-config (tip: brug en YAML-opmærksom editor, som Emacs og Tramp Mode, til den første opsætning). Når jeg først kunne SSH ind i maskinen, var det relativt let at bruge ros config for at få den konfiguration, jeg ønskede, og skrive den tilsvarende YAML-fil med cloud-config, der skal træde i kraft ved næste genstart. Fordi opstart er hurtig, er udviklingscyklussen her også hurtig.

Alt, hvad du vil konfigurere, kan gøres med enten YAML-filen eller ros config inklusive indlæsning af kernemoduler, TLS-konfiguration og parametre for kernetuning. Det ville være rart at have en måde at bevare eksisterende investeringer i konfigurationsstyringsværktøjer som SaltStack og Puppet, i det mindste delvist, for at lette overgangen til containerplatforme. SaltStacks reaktor ser ud som om det ville være godt for denne brugssag. Som det er nu, vil de fleste mennesker lære en helt ny måde at styre maskinkonfigurationer på. De fleste containeradministratorer bruger Rancher containeradministrationswebgrænsefladen, så denne opgave er sandsynligvis lettere på dette niveau.

RancherOS-opbevaring og netværk

Jeg nævnte tidligere, at du installerer RancherOS ved at angive en enhed til at gemme vedvarende tilstand. I de fleste situationer er dette den eneste disk, som RancherOS vil bruge. Da alle tjenester kører i Docker-containere, bruger de Docker-diskenheder til vedvarende opbevaring, hvilket omtrent afspejler systemarkitekturen. Systemvolumener giver vedvarende lagring af systemcontainere, brugervolumener til konsoltjenester og kommandovolumener til binære filer, der bruges af systemtjenester. Det store antal mængder og tjenester betyder, at monteres kommando vil ikke være meget hjælp: der er en hel side med uforståelig output. Jeg ville ønske, at dokumentationen forklarede dette lidt bedre, fordi vedholdenhed er kritisk vigtigt emne at forstå.

Rancher understøtter live snapshots og backup af Docker-diskenheder, så brugerne kan sikkerhedskopiere statefulde containere og stateful services. Dette er ikke inkluderet i RancherOS, men er en del af Convoy-funktionen i Rancher containerhåndteringssystem. Ved hjælp af Convoy kan du tage snapshots af diskenheder, trinvist sikkerhedskopiere snapshots til objektbutikker som Amazon S3 og gendanne diskenheder til kørende værter.

ZFS-filsystemet understøttes, men jeg havde ikke mulighed for at prøve det. I betragtning af dokumentationens tilstand og begrænsningen for, at zpool kun kan monteres på / mnt, vil jeg anbefale grundig test, inden jeg bruger dette i produktionen.

Du kan udføre al den sædvanlige netværkskonfiguration i RancherOS, men ved hjælp af YAML-konfigurationsfiler eller ros kommandoer. Netværksindstillinger lever i rancher.network.interfaces navneområdet, hvor du konfigurerer lignende DHCP, gateways, MTU osv. Flere NIC'er, binding, broer og VLANS kan konfigureres på samme måde. DNS er i nøgleområdet rancher.networks.dns. Indtil du bliver vant til navneområdetilknytningerne, skal du forvente at grave lidt rundt.

RancherOS opgraderinger og nedgraderinger

Opgraderinger og nedgraderinger på stedet kunne næppe være nemmere. Du skal opgradere (eller nedgradere) to systemer: OS og Docker-motoren. Det er nemt at styre enten og tager kun få sekunder at bruge, du gættede det, den ros kommando. Alt hvad du skal gøre er at vælge den version af det operativsystem, du vil køre og genstarte. Jeg ønsker, at alle Unix-opgraderinger og nedgraderinger gik så glat. For eksempel tog nedgradering fra 1.0.1 til 1.0.0 mindre end et minut:

Rancher

Pæn. Hvis du vil skifte Docker-motor, kan du gøre det lige så let:

ros motor switch docker-1.11.2

RancherOS er et dejligt lille operativsystem. Dens tilgange til systemkonfiguration og pakkehåndtering vil være nye og forskellige fra traditionelle systemadministratorer, og dokumentationen er ikke altid, hvad den kunne være. Men hvis du kender Docker, ved du det meste af hvad du har brug for for at køre RancherOS.

Den nye race af containere når modenhed, og produktionsinstallation af containere er en reel mulighed for tidlige adoptere. RancherOS gør det let at opbygge en containerhostinginfrastruktur, men der kræves nye færdigheder.

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