Kubernetes - mi ez és hogyan kezdjük el használni? [Tutorial a GCP-n]
Kubernetes – mi ez és hogyan kezdjük el használni?
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.
Mi az 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 Kubernetes használata – példa:
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.
Az –image flag mutat arra a linkre, amin a konténerizált alkalmazás elérhető a Container Registryben (GCR). A Container Registry segít az alkalmazás konténerizált képének tárolásában. A GCR-ről további információt találsz az alábbi linken: https://cloud.google.com/container-registry
A –type flag mutatja meg, hogy milyen típusú bevezetésről van szó (ClusterIP, NodePort, LoadBalancer lub ExternalName). Ebben az esetben LoadBalancert hozunk létre, ami lehetővé teszi, hogy az alkalmazás elérhető legyen az interneten.
A –target-port flag azt a portot mutatja meg a konténeren, ahová a forgalmat irányítani kell.
Ezután adjuk meg az alábbi parancsot:
1
kubectl get service hello-server
Ezzel megkapjuk annak a klaszternek a publikus IP címét, amelyre bevezettük az alkalmazást.
Eredmény
A klaszter törléséhez és a bevezetés visszahívásához használjuk az alábbi parancsot:
12
kubectl delete service hello-servergcloud container clusters delete my-cluster
Ez a weboldal sütiket használ az Ön élményének javítása érdekében. Feltételezzük, hogy ez Önt nem zavarja, de ha szeretné, lemondhat róla. Cookie beállításokELFOGAD
Adatvédelmi és sütikre vonatkozó szabályzat
Adatvédelmi áttekintés
Ez a weboldal cookie-kat használ, hogy javítsa a felhasználói élményt, miközben a weboldalon navigál. Ezek közül a sütik közül a szükségesnek minősített sütiket tárolja az Ön böngészője, mivel ezek elengedhetetlenek a weboldal alapvető funkcióinak működéséhez. Emellett harmadik féltől származó sütiket is használunk, amelyek segítenek elemezni és megérteni, hogyan használja ezt a weboldalt. Ezeket a cookie-kat csak az Ön hozzájárulásával tároljuk az Ön böngészőjében. Önnek lehetősége van arra is, hogy lemondjon ezekről a cookie-król. De néhány ilyen cookie lemondása hatással lehet a böngészési élményére.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Cookie
Duration
Description
pll_language
1 year
Polylang sets this cookie to remember the language the user selects when returning to the website and get the language information when unavailable in another way.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
_ga
1 year 1 month 4 days
Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.
_ga_*
1 year 1 month 4 days
Google Analytics sets this cookie to store and count page views.
_gat_gtag_UA_*
1 minute
Google Analytics sets this cookie to store a unique user ID.
_gid
1 day
Google Analytics sets this cookie to store information on how visitors use a website while also creating an analytics report of the website's performance. Some of the collected data includes the number of visitors, their source, and the pages they visit anonymously.
CONSENT
2 years
YouTube sets this cookie via embedded YouTube videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
test_cookie
15 minutes
doubleclick.net sets this cookie to determine if the user's browser supports cookies.
VISITOR_INFO1_LIVE
5 months 27 days
YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface.
YSC
session
Youtube sets this cookie to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt-remote-device-id
never
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt.innertube::nextId
never
YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requests
never
YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.