Programmēšana

RancherOS: vienkāršāks Linux Docker mīļotājiem

Tāpat kā dažādie Linux serveru un darbvirsmas izplatījumi, arī uz konteineriem orientētie Linux sadalījumi sajauc un saskaņo dažādus projektus un komponentus, lai izveidotu pilnīgu konteineru infrastruktūru. Šie rajoni parasti apvieno minimālu OS kodolu, orķestrēšanas sistēmu un konteineru pakalpojumu ekosistēmu. RancherOS ne tikai der formai, bet arī minimālo kodolu un konteineru paradigmu noved līdz galējībām.

RancherOS ir konteineru infrastruktūras platforma, kas Docker darbojas tieši virs samazinātas pēdas (20 MB) Linux kodola. Rancher uzņemšanās minimālisma OS ir unikāla ar to, ka pat init process ir Dockerized servisa konteiners. Tāpat tradicionālie sistēmas līmeņa pakalpojumi, piemēram, NTP un DNS, ir aizstāti ar ekvivalentiem konteineros.

Minimālām operētājsistēmām ir vairākas priekšrocības ražošanā. Nevajadzīgu pakotņu un bibliotēku noņemšana nodrošina ātrāku sāknēšanu, vienkāršāku versiju pārvaldību un mazāku uzbrukuma virsmu, kas nozīmē mazāk drošības ielāpu. RancherOS sper “atjauninājumus” soli tālāk un izplata visus sistēmas pakalpojumus kā Docker konteinerus. Drošības atjauninājums vienkārši nozīmē jauna attēla lejupielādi un konteinera restartēšanu - procesu, kas aizņem tikai dažas sekundes un pakalpojumam nav dīkstāves.

Kā operētājsistēmai, kas paredzēta konteineriem, RancherOS diez vai varēs atpazīt kāds, kas nāk no tradicionālā Unix fona. Ir saglabāta tikai neliela kodola apakškopa - viss pārējais tiek darīts konteineros. Bet, ja jūs esat pazīstams ar Docker, jūs jutīsieties kā mājās RancherOS.

Paredzēts Docker

Lai saprastu RancherOS dizainu, jums jāatgādina, ka tradicionālās Unix sistēmas tiek konfigurētas reti, lietojumprogrammām kārtojot stabilu pamatattēlu. Konteineru infrastruktūrā OS savā ziņā ir vienreizlietojama un, iespējams, bieži tiks mainīta. Lai gan konteineru resursdatoru konfigurēšanai un uzturēšanai jūs varētu izmantot tādu rīku kā Ansible, SaltStack, Puppet vai Chef, skrienot mērogā, operētājsistēmai ir vieglāk izmantot to pašu API kā konteineriem un palaist jaunu OS.

Tādējādi RancherOS izslēdz visu, izņemot būtiskāko Docker darbināšanai un konteineru pārvaldības platformu, piemēram, Rancher vai Kubernetes, mitināšanas aģentiem. Patiesībā RancherOS ir tik minimāls, ka tiek atbalstīti tikai divi lietotāji: root un rančotājs. Lai saprastu šo dizainu, vislabāk ir sākt ar sistēmas arhitektūras ilustrāciju:

Lauksaimnieks

RancherOS ir ievietots konteinerā līdz vietai, ka pat init process, PID 1, no kura tiek radīti visi pārējie procesi, ir Docker dēmons. Lai arī šķiet, ka tā ir maza detaļa, tradicionālās init sistēmas, piemēram, Sysvinit vai Systemd, aizstāšana ar Dockerized init procesu ir viena no RancherOS galvenajām iezīmēm, jo ​​tā tīrā veidā pārvar dažas nesaderības Systemd un Docker arhitektūrās. Lai gan progresu šo nesaderību novēršanā veic Systemd izstrādātāji, RancherOS dizains nodrošina nulle problēmu šeit, tagad un nākotnē, lai arī par to, ka lietas tiek pārvaldītas mazliet savādāk.

RancherOS vada divus Docker dēmonus, System Docker un User Docker. Visus sistēmas līmeņa pakalpojumus, piemēram, konsoli, ierīču pārvaldību, NTP un DHCP, pārvalda system-docker komandu, kamēr konteinera darba slodzes tiek pārvaldītas ar tradicionālo dokeris komandu. Šīs komandas ir identiskas, izņemot konteineru veidus, ar kuriem tās var darboties. Tātad, ja vēlaties redzēt, kādi sistēmas līmeņa pakalpojumi darbojas, jūs ievadītu sistēmas dokstacija ps.

Ja to izdarīsit, pamanīsit, ka labajā malā esošie nosaukumi - Syslog, NTP, Udev utt. - ir visi Linux sistēmas pakalpojumi. Sistēmas pakalpojuma apturēšana, palaišana un atjaunināšana tiek veikta tāpat kā ar jebkuru citu konteineru, izmantojot Docker API.

Ņemiet vērā arī to, ka sistēmas pakalpojuma konteiners, ko sauc par docker un kuru sāk System Docker, ir atsevišķs Docker dēmons lietotāju konteineru pārvaldībai. Tas ir svarīgs privilēģiju nodalījums. Tā kā visi lietotāju konteineri darbojas User Docker konteinerā, piemēram, izdzēšot visus lietotāju konteinerus, sistēmas konteineri, kuros darbojas RancherOS pakalpojumi, netiks nolaisti.

Ievadot, varat redzēt, kādas ir lietotāja konteinera slodzes tieši tāpat kā parasti ar Docker dokers ps. Pat apvalks ir konteiners (tā ir nosaukta konsole), tāpēc jūs varat izvēlēties, kuru palaist. Pašlaik pieejamās čaulas ir BusyBox (noklusējums), Alpine, CentOS, Debian, Fedora un Ubuntu.

Tā kā sistēmas pakalpojumi ir konteineri, pakešu pārvaldība nepastāv. Lai jauninātu pakalpojumu, vienkārši apturiet veco konteineru, velciet jaunu versiju un restartējiet pakalpojumu, izmantojot to pašu Docker API.

RancherOS instalēšana un konfigurēšana

Pirmā lieta, kas jādara tradicionālajam Unix administratoram, ir pārtraukt domāt par “daudzlietotāju OS” un sākt domāt par “infrastruktūras platformu”. RancherOS ir paredzēts, lai to varētu nodrošināt dažādās vidēs - ieskaitot tukšu metālu, virtuālo mašīnu un vairākus mākoņus, tostarp AWS un Google - paredzamā, automatizētā veidā.

Es instalēju virtuālajā mašīnā, izmantojot ISO attēlu, un pamata instalācijā nav radušās problēmas. Nav opciju vai konfigurācijas ekrānu. Jūs sāknējat operētājsistēmu (kas jūs automātiski reģistrē), iestatiet diska nodalījumu RANCHER_STATE un pēc tam restartējiet un konfigurējiet.

Apskatot konfigurācijas direktoriju / etc, jūs redzēsiet, ka nav / etc / rc failu vai daudz kas cits, un tas, kas tur ir, nav modificēts ar teksta redaktoru. RancherOS ir līdzvērtīgs trim palaišanas līmeņiem tradicionālā nozīmē, kas atbilst System Docker, User Docker un Container. Konfigurāciju veic bootcmd, kas darbojas pirms System Docker, un runcmd, kas darbojas sistēmā Docker, izpildot pirms lietotāja Docker palaišanas.

RancherOS ir konfigurēts divos veidos: manuāli, izmantojot ros konfigurācija komandu un sāknēšanas laikā, izmantojot mākoņa konfigurācijas konfigurācijas failu. Sākumā es to atradu mazliet jocīgi, it īpaši, ja jūs nekad neesat izmantojis cloud-config (padoms: sākotnējai iestatīšanai izmantojiet YAML zinošu redaktoru, piemēram, Emacs un Tramp Mode). Kad es varēju SSH ievadīt mašīnā, to bija salīdzinoši viegli izmantot ros konfigurācija lai iegūtu vēlamo konfigurāciju un izrakstītu atbilstošo mākoņkonfigurācijas YAML failu, kas stāsies spēkā nākamajā atsāknēšanas reizē. Tā kā sāknēšana ir ātra, arī attīstības cikls šeit ir ātrs.

Jebkuru, ko vēlaties konfigurēt, var izdarīt ar YAML failu vai ros konfigurācija ieskaitot kodola moduļu ielādi, TLS konfigurāciju un kodola regulēšanas parametrus. Būtu jauki, ja vismaz daļēji saglabātu esošos ieguldījumus konfigurācijas pārvaldības rīkos, piemēram, SaltStack un Puppet, lai atvieglotu pāreju uz konteineru platformām. Šķiet, ka SaltStack reaktors būtu piemērots šim lietošanas gadījumam. Tāpat kā tagad, lielākā daļa cilvēku apgūs pilnīgi jaunu veidu, kā pārvaldīt mašīnu konfigurācijas. Lielākā daļa konteineru administratoru izmantos Rancher konteineru pārvaldības tīmekļa lietotāja saskarni, tāpēc šajā līmenī šis uzdevums, iespējams, ir vienkāršāks.

RancherOS glabāšana un tīklošana

Iepriekš es minēju, ka jūs instalējat RancherOS, norādot ierīci, lai saglabātu pastāvīgo stāvokli. Lielākajā daļā gadījumu tas ir vienīgais disks, ko RancherOS izmantos. Tā kā visi pakalpojumi darbojas Docker konteineros, tie pastāvīgai glabāšanai izmantos Docker sējumus, aptuveni atspoguļojot sistēmas arhitektūru. Sistēmas apjomi nodrošina pastāvīgu sistēmas konteineru krātuvi, lietotāju sējumus konsoles pakalpojumiem un komandu sējumus bināriem, ko izmanto sistēmas pakalpojumi. Lielais apjomu un pakalpojumu skaits nozīmē, ka stiprinājums komandai nebūs daudz palīdzības: ir pilna nesaprotamas izvades lapa. Es vēlos, lai dokumentācija to paskaidrotu mazliet labāk, jo neatlaidība ir kritiski svarīga tēma, kas jāsaprot.

Rancher atbalsta reāllaika momentuzņēmumus un Docker sējumu dublēšanu, ļaujot lietotājiem dublēt valstiskus konteinerus un valstiskus pakalpojumus. Tas nav iekļauts RancherOS, bet ir daļa no Rancher konteineru pārvaldības sistēmas Convoy funkcijas. Izmantojot Convoy, varat uzņemt sējumu momentuzņēmumus, pakāpeniski dublēt momentuzņēmumus objektu veikalos, piemēram, Amazon S3, un atjaunot sējumus darbojošajos resursdatoros.

ZFS failu sistēma tiek atbalstīta, taču man nebija iespējas to izmēģināt. Ņemot vērā dokumentācijas stāvokli un ierobežojumu, ka zpool var uzstādīt tikai uz / mnt, es iesaku rūpīgi pārbaudīt, pirms to izmantot ražošanā.

RancherOS varat veikt visu parasto tīkla konfigurāciju, bet izmantojot YAML konfigurācijas failus vai ros komandas. Tīkla iestatījumi dzīvo nosaukumvietā rancher.network.interfaces, kur konfigurējat tādus kā DHCP, vārtejas, MTU utt. Tādā pašā veidā var konfigurēt vairākus NIC, savienojumus, tiltus un VLANS. DNS atrodas rancher.networks.dns atslēgu telpā. Kamēr neesat pieradis pie nosaukumvietas kartēšanas, sagaidiet, ka mazliet izrokaties.

RancherOS jauninājumi un pazemināšana

Vietā jaunināšana un pazemināšana diez vai varētu būt vieglāka. Jums būs jāatjaunina (vai jāpazemina) divas sistēmas: OS un Docker dzinējs. Jebkuru no tiem pārvaldīt ir viegli, un, lietojot, jūs to domājat, nepieciešamas tikai sekundes ros komandu. Viss, kas jums jādara, ir atlasīt OS versiju, kuru vēlaties palaist un pārstartēt. Es vēlos, lai visi Unix jauninājumi un pazeminājumi noritētu tik gludi. Piemēram, pazemināšana no 1.0.1 uz 1.0.0 prasīja mazāk nekā minūti:

Lauksaimnieks

Jauki. Ja vēlaties pārslēgt Docker dzinējus, to varat izdarīt tikpat viegli:

ros motora slēdža dokotājs-1.11.2

RancherOS ir jauka maza operētājsistēma. Tās pieejas sistēmas konfigurācijai un pakotņu pārvaldībai būs jaunas un atšķirīgas no tradicionālajiem sistēmas administratoriem, un dokumentācija ne vienmēr ir tāda, kāda tā varētu būt. Bet, ja jūs zināt Docker, jūs zināt lielāko daļu no tā, kas jums nepieciešams, lai palaistu RancherOS.

Jaunā konteineru šķirne ir sasniegusi briedumu, un konteineru ražošana ir reāla iespēja agrīnajiem lietotājiem. RancherOS atvieglo konteineru mitināšanas infrastruktūras izveidi, taču ir nepieciešamas jaunas prasmes.