Egyre több informatikai rendszert hoznak létre konténerek használatával. A konténerezés az alkalmazáselemek (folyamatai, függőségei, könyvtárai, konfigurációs fájljai vagy helyi adatbázisai) dinamikusan kezelt tárolókba történő elhelyezéséről szól. Egyesíti a virtualizáció és a rendszer fizikai szerveren tartásának előnyeit. Vagyis biztosítja a skálázhatóságot, a szoftverek gyors és könnyű hordozhatóságát és a példányok szétválasztását a nagy teljesítmény fenntartása mellett.
Míg több konténer manuálisan vezérelhető, több száz vagy ezer elosztott és dinamikusan kezelt konténer esetében ez nagyon nehézkessé válik. A válasz az „orchiestration”, vagyis az automatizálás bevezetése a csoportok kezelésére és a konténerek figyelésére. A legnépszerűbb ilyen eszköz a Kubernetes.
A Kubernetes egy nyílt forráskódú platform, amelyet nagy méretű tárolók kezelésére használnak. A név görögből származik – a „κυβερνήτης” kormányzót jelent, amely tökéletesen közvetíti a platform célját. A Kubernetes-t K8s-nek is hívják – ez egy rövidítés, ahol a nyolc „ubernete” betű helyébe a „8” szám lép.
Az eszközt a Google közel 20 évvel ezelőtt hozta létre a vállalat produkciós terhelésének kezelésére. 2014-ben a projektet átadták a Cloud Native Computing Alapítványnak, és nyilvánosságra hozták – azóta a platformot a Kuberneteset használó szervezet, valamint vállalatok és szakemberek fejlesztik (a felhasználóik is részt vehetnek nyílt forráskódú projektekben).
Támogatja az automatikus bevezetéseket, az alkalmazások skálázását, kezeli a konténereket és figyeli a folyamatokat és a változásokat. Az alkalmazástulajdonosok és a platformot használó fejlesztőcsapatok jobban összpontosíthatnak termékeik fejlesztésére, mint DevOps tevékenységeikre (infrastruktúra-menedzsment és a termék igényeinek való megfelelés). A Kubernetes lehetővé teszi klaszterek (egymással együttműködő szervercsoportok) kezelését, így a felhasználó szempontjából egy egyszerűsített rendszer jelenik meg. A K8s mentesíti a fejlesztőt az alkalmazás infrastrukturális követelményekhez való igazításának kötelezettsége alól – a szakember elrendeli az alkalmazás elindítását, a Kubernetes pedig maga is fel tudja osztani a szolgáltatásokat klaszterek és szerverek között, és a megfelelő tárolókhoz irányíthatja. A Kubernetesnek megvan a saját terheléselosztási formája, vagyis a terhelés több gép közötti elosztására (kiegyenlítésére) szolgáló technikák. A K8s-t a legtöbb nyílt felhőszolgáltatás támogatja, így a Google Cloud Platform is.
Nézd meg:
Központosítás
A Kubernetes platform lehetővé teszi, hogy az összes klasztert, szervert és konténert egy helyről kezelje, függetlenül attól, hogy hol vannak a gépek vagy az alkalmazás-összetevők. Támogatja a csoportos tervezést, megvalósítást, méretezést és az elemek életciklusainak kezelését.
Skálázhatóság
A K8s központi eleme a skálázhatóság – az eszközt a Google heti több milliárd konténer futtatására hozta létre. A végrehajtott műveletek, a használt gépek vagy a konténerek számától függetlenül nincs szükség a DevOps csapat bővítésére vagy csökkentésére. Vízszintesen is méretezheti és csökkentheti az erőforrásigényt parancsokkal a felhasználói felületen keresztül, vagy automatikusan a CPU terhelése alapján.
Különböző infrastrukturális megoldások
A Kubernetes együttműködik a fizikai szerverek infrastruktúrájával, felhő- és hibrid megoldásokkal (összekapcsolja a helyi központot a felhővel). Különféle nyilvános felhőszolgáltatók támogatják. Pl.: Google Cloud Platform, Amazon Web Services vagy a Microsoft Azure.
Összhang a környezetek között
Miután az alkalmazás elindult a platformon, hordozható alkalmazássá válik. Az alkalmazás átruházható környezetek (pl. fejlesztés, tesztelés, gyártás) és infrastrukturális megoldások között, az alkalmazás konzisztenciájának fenntartása mellett.
A meghibásodások megelőzése és az önjavítás
A K8s fokozatosan vezeti be a változásokat, miközben figyelemmel kíséri az egyes példányok állapotát. Ha valami nem stimmel, a Kubernetes automatikusan visszaveti a módosításokat. Abban az esetben, ha az egyik tároló összeomlik, az eszköz lecseréli egy másikra, miközben a helyreállításon vagy a felesleges elemek eltávolításán dolgozik.
A platform folyamatos fejlesztése
A Kubernetes egy nyílt forráskódú projekt. A fejlesztésében nemcsak a tulajdonosok, de a platformot napi szinten használó emberek is részt vesznek: fejlesztők, DevOps szakemberek, programozó vállalatok. Új elemeket hoznak létre, vagy javasolják a meglévő folyamatok és eszközök fejlesztését.
A platformot lelkesen használják a fejlett szolgáltatásokkal rendelkező, nagy mennyiségű adatot kezelő, zökkenőmentes és gyors fejlesztésre összpontosító vállalatok.
A CERN (The European Organization for Nuclear Research) jelenleg mintegy 300 petabájt adatot tárol, és ezek száma folyamatosan növekszik (a becslések szerint a CERN néhány éven belül tízszer több adattal rendelkezik). Ezenkívül a szervezetnek szezonális terhelési csúcsai vannak, és nagyon skálázhatónak kell lennie. A CERN hibrid infrastruktúrát használ – az adatokat napi szinten tárolja és feldolgozza a helyi szervereken, és szükség esetén a felhőre skálázza a megoldást. A konténer-kezelés a Kubernetes használatával lehetővé tette a szervezet számára, hogy teljesen automatizálja az alkalmazás-támogatást, egyszerűsítse a megvalósítási folyamatot és felgyorsítsa a technológiai fejlődést, többek között azáltal, hogy egy klaszter hozzáadásának időtartamát több mint 3 óráról 15 percre csökkentette, míg egy új csomópontét (gépek egy klaszterben) több mint 30 percről 2 percre.
A Nokia a távközlési hálózathoz kapcsolódó termékeket és megoldásokat hoz létre, és számos szolgáltató számára nyújt megoldásokat. A Nokia partnercégeinek különböző infrastrukturális megoldásai vannak: egyesek helyi adatközpontokat (fizikai szervereket), mások virtuális gépeket vagy felhőket, mások pedig hibrid megoldásokat használnak. A Nokia célja, hogy egy teljesen hatékony megoldást nyújtson a partnereknek anélkül, hogy a terméket minden alkalommal más infrastruktúrához kellene igazítania. A Kubernetes használatával bármilyen környezetben futtatható termékeket képesek létrehozni. A K8s támogatja az új funkciók hozzáadását és a tesztek elvégzését anélkül, hogy felosztaná azokat a célkörnyezetben, ami lehetővé teszi, hogy minden megvalósítással több száz órát takarítsanak meg.
Az Adidas a Kubernetes kínálta lehetőségek felhasználásával fejleszti e-commerce webhelyét. Mielőtt a vállalat elkezdte használni a K8s-t, a változtatások bevezetése nehézkes volt, és a megvalósítások gyakran elakadtak a DevOps szakaszban – például a fejlesztőknek 30 perc helyett akár egy hétig is várniuk kellett, hogy hozzáférjenek egy virtuális géphez. A weboldal konténerbe helyezése és a Kubernetes elindítása után a fejlesztők új funkciók létrehozására összpontosíthatnak, ahelyett, hogy részletesen alkalmazkodnának a rendszerhez és az infrastruktúra követelményeihez, vagy a DevOps támogatására várnának. Korábban 4-6 hetente jelentek meg új kiadások, most naponta többször is.
A Kubernetes lehetőségeit a Booking.com, a BlaBlaCar, az ING Group és a Zalando is használja.
1 | gcloud config set project k8s-demo-281313 |
1 | gcloud config set compute/zone europe-west3-c |
1 | gcloud container clusters create my-cluster--num-nodes=1 |
1 | gcloud container clusters get-credentials my-cluster |
1 | kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0 |
12 | kubectl expose deployment hello-server --type LoadBalancer \ --port 80 --target-port 8080 |
1 | kubectl get service hello-server |
12 | kubectl delete service hello-server gcloud container clusters delete my-cluster |