Container Linux - Container Linux
| Utvecklaren | röd hatt |
|---|---|
| OS-familj | Linux (baserat på Gentoo Linux ) |
| Arbetande tillstånd | Under utveckling |
| Källmodell | Öppen källa |
| Inledande utgåva | 3 oktober 2013 |
| Senaste släppningen | 2247.5.0 / 15 oktober 2019 |
| Senaste förhandsgranskning | 2275.2.0 / 15 oktober 2019 |
| Marknadsföringsmål | Servrar och kluster |
| plattformar | x86-64 |
| kernel typ | Monolitisk ( Linux-kärna ) |
| Licens | Apache License 2.0 |
| Officiell hemsida | coreos |
Container Linux (tidigare CoreOS Linux ) är en öppen källkod lätta operativsystem baserat på Linux-kärnan och utformad för att tillhandahålla infrastruktur till klustrade distributioner, med fokus på automation, enkel programdistribution, säkerhet, tillförlitlighet och skalbarhet . Som ett operativsystem tillhandahåller Container Linux endast den minimala funktionalitet som krävs för att distribuera applikationer i programvarubehållare , tillsammans med inbyggda mekanismer för serviceupptäckt och konfigurationsdelning.
Container Linux delar stiftelser med Gentoo Linux , Chrome OS och Chromium OS genom ett gemensamt programvaruutvecklingspaket (SDK). Container Linux lägger till ny funktionalitet och anpassning till denna delade foundation för att stödja serverhårdvara och användningsfall. Från och med januari 2015 utvecklas CoreOS aktivt, främst av Alex Polvi, Brandon Philips och Michael Marineau, med dess viktigaste funktioner tillgängliga som en stabil release .
Översikt
Container Linux tillhandahåller ingen pakethanterare som ett sätt att distribuera nyttolastapplikationer, vilket i stället kräver att alla program ska köras i sina containrar. Som en enda kontrollvärd använder en Linux-instans de underliggande virtualiseringsfunktionerna på operativsystemnivå i Linux-kärnan för att skapa och konfigurera flera behållare som fungerar som isolerade Linux- system. På det sättet, resurs fördelning mellan containrar utförs genom flera isolerade användarrymden instanser, istället för att använda en hypervisor och tillhandahålla fullfjädrad virtuella maskiner . Detta tillvägagångssätt förlitar sig på Linuxkärnan s cgroups och namnrymder funktioner, som tillsammans ger förmåga att gränsen konto och isolera resursanvändning ( CPU , minne, disk I / O , etc.) för samlingar av användarrymden processer .
Ursprungligen använde Container Linux uteslutande Docker som en komponent som tillhandahöll ett extra lager av abstraktion och gränssnitt till operativsystemnivån virtualiseringsfunktioner i Linux-kärnan, samt tillhandahöll ett standardiserat format för containrar som gör att applikationer kan köras i olika miljöer. I december 2014 CoreOS släpptes och började stöd RKT (ursprungligen släpptes som Rocket ) som ett alternativ till Docker, ger genom det en annan standardiserat format för applikationscontainerbilder, tillhörande definition av behållaren körmiljön och protokoll för att upptäcka och hämta behållarbilder. CoreOS tillhandahåller rkt som en implementering av den så kallade app container (appc) -specifikationen som beskriver nödvändiga egenskaper för applikationsbehållarbilden (ACI); CoreOS initierade appc och ACI som en oberoende kommittestyrd uppsättning specifikationer, med målet att få dem att bli en del av det leverantörs- och operativsystemoberoende Open Container Initiative (OCI; ursprungligen benämnd Open Container Project eller OCP) containerisering standard, som tillkännagavs i juni 2015.
Container Linux använder ebuild- skript från Gentoo Linux för automatiserad sammanställning av sina systemkomponenter, och använder systemd som sitt primära init- system med tät integration mellan systemd och olika Container Linux interna mekanismer.
Uppdaterar distributionen
Container Linux uppnår ökad säkerhet och tillförlitlighet av sitt operativsystem uppdateringar genom att använda FastPatch som en dubbel-partitionsschema för skriv bara en del av sin installation, vilket innebär att uppdateringarna utförs som en helhet och installeras på ett passivt sekundär boot partition som blir aktiv vid omstart eller kexec . Detta tillvägagångssätt undviker möjliga problem som uppstår genom uppdatering av endast vissa delar av operativsystemet, säkerställer enkla återuppspelningar till en känd att vara stabil version av operativsystemet och gör att varje startpartition kan undertecknas för ytterligare säkerhet. Rotpartitionen och dess rotfilsystem ändras automatiskt för att fylla allt tillgängligt diskutrymme vid omstart. medan rotpartitionen ger lagringsutrymme för lässkrivning, är själva operativsystemet monterat skrivskyddat under / usr .
För att säkerställa att endast en viss del av kluster omstarter på en gång när uppdateringarna operativsystemet tillämpas, bevara det sättet de resurser som krävs för att köra utplacerade applikationer ger CoreOS låssmed som omstart chef för Container Linux. Med låssmed kan man välja mellan olika uppdateringsstrategier som bestäms av hur omstart utförs som det sista steget i tillämpningen av uppdateringar; till exempel kan man konfigurera hur många klustermedlemmar som får starta om samtidigt. Internt, fungerar låssmed som locksmithd demonen som körs på kluster medlemmar, medan locksmithctl kommandoradsverktyget verktyget hanterar konfigurationsparametrar. Låssmed är skriven på Go-språket och distribueras under villkoren i Apache License 2.0 .
Distributionssystemet för uppdateringar som används av Container Linux är baserat på Googles öppen källkod Omaha- projekt, som tillhandahåller en mekanism för att rulla ut uppdateringar och det underliggande protokollet om begäran-svar baserat på XML . Dessutom tillhandahåller CoreOS CoreUpdate som en webbaserad instrumentpanel för hantering av klusterövergripande uppdateringar. Verksamheter som är tillgängliga via CoreUpdate inkluderar tilldelning av klustermedlemmar till olika grupper som delar anpassade uppdateringspolicyer, granskar klusterövergripande uppdelningar av Container Linux-versioner, stoppar och startar om uppdateringar och granskar inspelade uppdateringsloggar. CoreUpdate tillhandahåller också ett HTTP- baserat API som tillåter integrering i tredjepartsverktyg eller distributionssystem .
Klusterinfrastruktur
Container Linux tillhandahåller etcd, en daemon som körs över alla datorer i ett kluster och tillhandahåller ett dynamiskt konfigurationsregister, vilket gör att olika konfigurationsdata enkelt och pålitligt kan delas mellan klustermedlemmarna. Eftersom nyckelvärdedata lagrade inom etcd automatiskt distribueras och replikeras med automatiserad masterval och konsensusupprättande med hjälp av Raft- algoritmen återspeglas alla förändringar i lagrad data över hela klustret, medan den uppnådda redundansen förhindrar misslyckanden hos enstaka klustermedlemmar från att orsaka dataförlust. Förutom konfigurationshanteringen ger etc också serviceupptäckt genom att tillåta distribuerade applikationer att tillkännage sig själva och de tjänster de erbjuder. Kommunikation med etcd utförs via ett exponerat REST- baserat API, som internt använder JSON ovanpå HTTP; API kan användas direkt (till exempel genom curl eller wget ) eller indirekt via etcdctl , som är ett specialiserat kommandoradsverktyg som också tillhandahålls av CoreOS .. Etcd används också i Kubernetes programvara.
Container Linux tillhandahåller också flotta klusterhanteraren som styr Container Linuxs separata systemd instanser på klustrnivå. Från och med 2017 är "flottan" inte längre aktivt utvecklad och avskrivs till förmån för Kubernetes . Genom att använda fleetd skapar Container Linux ett distribuerat init-system som binder samman separata systemd-instanser och en klusterbredd etcd- distribution; internt kommunicerar fleetd daemon med lokala systemd- instanser över D-Bus och med etcd- distributionen genom sitt exponerade API. Att använda fleetd tillåter distribution av enstaka eller flera containrar klusterbrett, med mer avancerade alternativ inklusive redundans , failover , distribution till specifika klustermedlemmar, beroenden mellan containrar och gruppering av containrar. Ett kommandoradsverktyg som kallas fleetctl används för att konfigurera och övervaka detta distribuerade init-system; internt kommunicerar det med den fleetd- demonen med hjälp av ett JSON-baserat API ovanpå HTTP, som också kan användas direkt. När den används lokalt på en klustermeddelande, kommunicerar fleetctl med den lokala flottans instans över ett Unix-domänuttag ; när den används från en extern värd används SSH-tunneling med autentisering tillhandahållen genom offentliga SSH-nycklar .
Alla ovan nämnda demoner och kommandoradsverktyg ( etc , etcdctl , fleetd och fleetctl ) är skrivna på Go-språket och distribueras under villkoren i Apache License 2.0.
Spridning
När du kör på dedicerad hårdvara kan Container Linux antingen installeras permanent på lokal lagring, till exempel en hårddisk (HDD) eller solid-state-enhet (SSD), eller starta fjärrstyrt via ett nätverk med Preboot Execution Environment (PXE) i allmänhet , eller iPXE som en av dess implementationer. CoreOS stöder också distributioner på olika hårdvaruvirtualiseringsplattformar , inklusive Amazon EC2 , DigitalOcean , Google Compute Engine , Microsoft Azure , OpenStack , QEMU / KVM , Vagrant och VMware . Container Linux kan också installeras på Citrix XenServer och noterar att det finns en "mall" för CoreOS.
Container Linux kan också distribueras genom sin kommersiella distribution som kallas Tectonic , som dessutom integrerar Googles Kubernetes som ett klusterhanteringsverktyg. Från april 2015 planeras Tectonic erbjudas som beta-programvara för utvalda kunder. Dessutom tillhandahåller CoreOS Flannel som en komponent som implementerar ett overlay-nätverk som i första hand krävs för integrationen med Kubernetes.
Från och med februari 2015 stöder Container Linux endast x86-64- arkitekturen.
derivat
Efter förvärvet av CoreOS, Inc. i januari 2018 tillkännagav Red Hat att det skulle fusionera CoreOS Container Linux med Red Hat's Project Atomic för att skapa ett nytt operativsystem, Red Hat CoreOS, samtidigt som det uppströms Fedora Project öppna källkodssamhället runt Fedora CoreOS , som kombinerar teknik från båda föregångare.
Den 6 mars 2018 meddelade Kinvolk GmbH Flatcar Linux , ett derivat av CoreOS Container Linux. Detta spårar uppströms CoreOS alpha / beta / stabila kanalutgivningar, med en experimentell Edge release-kanal tillagd i maj 2019.
Reception
LWN.net granskade CoreOS 2014:
För dem som sätter ihop stora, distribuerade system - webbapplikationer är ett bra exempel - verkar CoreOS ha mycket intressant funktionalitet. Det bör tillåta applikationer av den typen att växa och krympa efter behov med efterfrågan, samt tillhandahålla en stabil plattform där uppgraderingar inte är en konstant huvudvärk. För "massiva serverinstallationer" ser CoreOS, eller något med många av samma egenskaper, ut i framtiden.
Se även
- Applicationsvirtualisering - mjukvaruteknik som kapslar in applikationsprogramvara från operativsystemet på vilket det körs
- Jämförelse av applikations virtualiseringsprogram - olika bärbara och manuskriptspråkiga virtuella maskiner
- Jämförelse av plattformsvirtualiseringsprogramvara - olika emulatorer och hypervisorer, som emulerar hela fysiska datorer
- LXC (Linux Containers) - en miljö för att köra flera isolerade Linux-system (containrar) på en enda Linux-kontrollvärd
- Implementering av virtualiseringsoperationer på operativsystemnivå - baserat på operativsystemkärnans stöd för flera isolerade användarområdesinstanser
- Software as a service (SaaS) - en mjukvarulicens- och leveransmodell som är värd för programvaran centralt och licensierar den på prenumerationsbasis
- Virtualisering - ett allmänt koncept för att tillhandahålla virtuella versioner av datormaskinvaruplattformar, operativsystem, lagringsenheter etc.
referenser
externa länkar
- Officiella CoreOS- och Tectonic- webbplatser och GitHub- källkodförvar : CoreOS , etcd , fleet , rkt och CoreOS-overlay
- CoreOS på DistroWatch
- Första glimt på CoreOS den 3 september 2013 av Sébastien Han
- CoreOS: Linux för molnet och datacentret , ZDNet , 2 juli 2014, av Steven J. Vaughan-Nichols
- Vad är CoreOS? Ett existentiellt hot mot Linux-leverantörer , InfoWorld , 9 oktober 2014, av Matt Asay
- Förståelse av CoreOS distribuerad arkitektur , 4 mars 2015, ett samtal med Alex Polvi av Aaron Delp och Brian Gracely
- CoreOS flottans arkitektur , 26 augusti 2014, av Brian Waldon et al.
- Kör CoreOS på Google Compute Engine , 23 maj 2014
- CoreOS flyttar från Btrfs till Ext4 + OverlayFS , Phoronix , 18 januari 2015, av Michael Larabel
- Behållare och ihållande data , LWN.net , 28 maj 2015, av Josh Berkus