Kihagyás

CoreOS

1. Bevezetés

A Container Linux (korábban CoreOS Linux) egy megszűnt nyílt forráskódú, könnyű operációs rendszeren alapul, amely Linux kernelt és infrastruktúrát biztosít a fürtözött telepítésekhez, miközben az automatizálásra, az alkalmazások egyszerű telepítésére, a biztonságra, a megbízhatóságra és a méretezhetőségre koncentrál. Operációs rendszerként a Container Linux csak az alkalmazások szoftvertárolókon belüli telepítéséhez szükséges minimális funkcionalitást biztosította, valamint beépített szolgáltatáskeresési és konfigurációmegosztási mechanizmusokat.

A Container Linux megosztja az alapokat a Gentoo Linux-szal, Chrome OS-sel és Chromium OS-sel egy közös szoftverfejlesztő készleten (SDK) keresztül. A Container Linux új funkciókkal és testreszabással bővíti ezt a megosztott alapot a szerver hardverének és használati eseteinek támogatásához. A CoreOS-t elsősorban Alex Polvi, Brandon Philips és Michael Marineau fejlesztette, főbb funkciói pedig stabil kiadásként érhetők el.

A CoreOS csapata élettartamának végét 2020. május 26-án bejelentette. A Container Linux-ot és a Fedora CoreOS-t kínálja felváltásaként, mindkettő Red Hat alapú.

2. Áttekintés

A Container Linux nem biztosít csomagkezelőt a hasznos alkalmazások elosztására, hanem megköveteli, hogy minden alkalmazás a tárolójában fusson. Az egyetlen vezérlőállomásként szolgáló Container Linux-példány a Linux-kernel mögöttes operációs rendszer-szintű virtualizációs szolgáltatásait használja több, elszigetelt Linux - rendszerként működő tároló létrehozására és konfigurálására. Így erőforrás a konténerek közötti particionálás több izolált felhasználói terület példányon keresztül történik, ahelyett, hogy hipervizort használnának és teljes értékű virtuális gépeket biztosítanának. Ez a megközelítés a Linux kernel cgroups és namespaces funkcióira támaszkodik, amelyek együttesen lehetővé teszik az erőforrás-használat (CPU, memória, lemez I/O stb.) korlátozását, elszámolását és elkülönítését a felhasználói területi folyamatok gyűjteményei számára.

Kezdetben a Container Linux kizárólag a Dockert használta komponensként, amely további absztrakciós réteget és interfészt biztosít a Linux kernel operációs rendszer-szintű virtualizációs szolgáltatásaihoz, valamint szabványos formátumot biztosít a konténerekhez, amely lehetővé teszi az alkalmazások futását különböző környezetekben. 2014 decemberében a CoreOS kiadta és támogatni kezdte az rkt-t (eredetileg Rocket néven adták ki) a Docker alternatívájaként, amelyen keresztül az alkalmazás-tároló képek egy másik szabványos formátumát, a konténer futási környezethez kapcsolódó definícióját biztosította, valamint egy protokollt a tárolóképek felderítésére és lekérésére. A CoreOS az rkt-t az úgynevezett alkalmazáskonténer (appc) specifikáció megvalósításaként biztosítja, amely leírja az alkalmazáskonténer képfájl (ACI) szükséges tulajdonságait. A CoreOS az appc-t és az ACI-t független bizottság által irányított specifikációkészletként hozta létre azzal a céllal, hogy a gyártótól és operációs rendszertől független részévé váljon. Open Container Initiative vagy OCI, eredeti neve Open Container Project (OCP) konténerezési szabvány.

A Container Linux a Gentoo Linux ebuild szkriptjeit használja rendszerösszetevőinek automatikus fordításához, és a systemd-t használja elsődleges indítórendszerként, szoros integrációval a systemd és a Container Linux különféle belső mechanizmusai között.

2.1. Frissítések terjesztése

A Container Linux további biztonságot és megbízhatóságot ér el az operációs rendszer frissítéseinél a FastPatch kétpartíciós sémával a telepítés csak olvasható részében, ami azt jelenti, hogy a frissítések teljes egészében kerülnek végrehajtásra, és egy passzív másodlagos rendszerindító partícióra települnek aktív újraindításkor vagy kexec esetén. Ez a megközelítés elkerüli az operációs rendszer bizonyos részeinek frissítéséből adódó esetleges problémákat, egyszerű visszaállítást biztosít az operációs rendszer ismert stabil verziójára, és lehetővé teszi az egyes rendszerindító partíciók aláírását a további biztonság érdekében. A gyökérpartíció és gyökér fájlrendszere automatikusan átméretezésre kerül, hogy újraindításkor az összes rendelkezésre álló lemezterületet kitöltse; míg a gyökérpartíció írási-olvasási tárhelyet biztosít, maga az operációs rendszernek csak olvasható módon van felcsatolva a /usr.

Annak biztosítására, hogy csak egy bizonyos része induljon újra a fürtnek az operációs rendszer frissítéseinek alkalmazásakor, így megőrizve a telepített alkalmazások futtatásához szükséges erőforrásokat, a CoreOS a locksmith-et biztosítja újraindítás kezelőként a Container Linux számára. A locksmith segítségével különböző frissítési stratégiák közül választhat, amelyeket az újraindítások végrehajtásának módja határozza meg a frissítések alkalmazásának utolsó lépéseként; például beállítható, hogy hány fürttag indíthat újra egyidejűleg. Belsőleg a lakatos úgy működik, mint a locksmithd démon , amely a fürttagokon fut, míg a A locksmithctl parancssori segédprogram kezeli a konfigurációs paramétereket. A Locksmith Go nyelven íródott, és az Apache License 2.0 feltételei szerint terjesztik.

A Container Linux által használt frissítés-elosztó rendszer a Google nyílt forráskódú Omaha projektjén alapul, amely mechanizmust biztosít a frissítések kibocsátásához és a mögöttes XML alapú kérelem-válasz protokollhoz. Ezenkívül a CoreOS biztosítja a CoreUpdate-et ami egy webalapú irányítópult a fürtszintű frissítések kezeléséhez. A CoreUpdate-en keresztül elérhető műveletek közé tartozik a fürttagok hozzárendelése különböző csoportokhoz, amelyek testreszabott frissítési házirendeket osztanak meg, a Container Linux-verziók fürtszintű lebontásának áttekintése, a frissítések leállítása és újraindítása, valamint a rögzített frissítési naplók áttekintése. A CoreUpdate HTTP alapú API-t is biztosít, amely lehetővé teszi a harmadik féltől származó segédprogramokba vagy telepítési rendszerekbe való integrációt.

2.2. Klaszter infrastruktúra

A Container Linux biztosítja az etcd-t, egy démont, amely egy fürt összes számítógépén fut, és dinamikus konfigurációs nyilvántartást biztosít, lehetővé téve a különféle konfigurációs adatok egyszerű és megbízható megosztását a fürt tagjai között. Kulcs/érték adatokat tárol. Az etcd automatikusan elosztja és replikája az adatokat. A Raft algoritmus segítségével (automatizált mester választással és konszenzus létrehozásával), a tárolt adatok minden változása a teljes klaszteren tükröződik, míg az elért redundancia megakadályozza, hogy az egyes fürttagok meghibásodása adatvesztést okozzon. A konfigurációkezelés mellett Az etcd is biztosít szolgáltatásfelderítést azáltal, hogy lehetővé teszi a telepített alkalmazások számára, hogy bejelentsék magukat és az általuk kínált szolgáltatásokat. Kommunikáció a Az etcd egy nyitott REST API-n keresztül történik, amely belsőleg a JSON-t használja a HTTP-n felül; az API közvetlenül használható, vagy közvetve ezen keresztül etcdctl, amely egy speciális parancssori segédprogram, amelyet szintén a CoreOS biztosít. Az Etcd a Kubernetes szoftverben is használatos.

A Container Linux emellett a flottafürtkezelő, amely a Container Linux különálló rendszerpéldányait vezérli a fürt szintjén. 2017-től a „flottát” már nem fejlesztik aktívan, és a Kubernetes javára elavulttá vált. fleetd használatával, a Container Linux elosztott indítórendszert hoz létre, amely összekapcsolja a különálló rendszerpéldányokat és egy fürtszintű etcd telepítést belsőleg. A flotta démon kommunikál a helyiekkel systemd példányok D-Buson keresztül, és az etcd üzembe helyezés a nyílt API-ján keresztül. A fleetd használata lehetővé teszi egyetlen vagy több tároló telepítését a fürt egészében, fejlettebb opciókkal, beleértve a redundanciát, a feladatátvételt, a fürt egyes tagokra történő telepítését, a tárolók közötti függőséget és a tárolók csoportos telepítését. A meghívott parancssori segédprogram, a fleetctl ennek az elosztott indítórendszernek a konfigurálására és figyelésére szolgál, belsőleg kommunikál a fleetd démon egy JSON-alapú API-val a HTTP-n felül, amely közvetlenül is használható. Ha helyileg használják egy fürttagon, akkor Unix socketen keresztül kommunikál, külső gazdagépről történő használat esetén az SSH-n keresztül történik a kommunikáció.

Az összes fent említett démon és parancssori segédprogram (stbd, etcdctl, flott és fleetctl) Go nyelven íródott, és az Apache License 2.0 feltételei szerint terjesztik.

3. Telepítés

Ha dedikált hardveren fut a Container Linux akkor telepíthető helyi tárolóra, (például HDD, SSD) vagy távolról indítható hálózaton keresztül(PXE) segítségével. A CoreOS különböző hardvervirtualizációs platformokon is támogatja a telepítéseket, beleértve az Amazon EC2-t, a DigitalOcean-t, a Google Compute Engine-t, a Microsoft Azure-t, az OpenStack-et, a QEMU/KVM-et, a Vagrant és a VMware-t. A Container Linux a Citrix Xen Serverre is telepíthető, megjegyezve, hogy létezik egy "sablon" a CoreOS számára.

A Container Linux a Tectonic nevű kereskedelmi disztribúcióján keresztül is telepíthető, amely a Google Kubernetes-ét is integrálja fürtkezelő segédprogramként. 2015 áprilisától a tervek szerint a Tectonicot béta szoftverként kínálják a kiválasztott ügyfelek számára. Ezenkívül a CoreOS a Flannelt olyan komponensként biztosítja, amely egy olyan overlay hálózatot valósít meg, amely elsősorban a Kubernetes-szel való integrációhoz szükséges.

2015 februárjától a Container Linux csak az x86-64 architektúrát támogatja.