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.
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:
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.
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.
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.
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 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 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 Kubernetes lehetőségeit a Booking.com, a BlaBlaCar, az ING Group és a Zalando is használja.
Először lépjünk be a Google Cloud konzolra. https://console.cloud.google.com/.
Hozzunk létre új projektet (kattintsunk a projekt nevére a „Google Cloud Platform” felirat melletti bal felső sarokban).
Írjuk be a projekt nevét és kattintsunk a Create gombra.
Ezután a projektlistára lépve (a „Google Cloud Platform” felirat mellett) megkapjuk a projekt ID-jét. Erre a továbbiakban szükségünk lesz.
Megnyitjuk a Cloudshellt (jobb felső sarok).
Az alábbi paranccsal beállítjuk a projektet, amellyel dolgozni fogunk:
1 | gcloud config set project k8s-demo-281313 |
Figyelj oda, hogy a parancsba a projekted ID-ját írd be. Ez különbözhet a példában használttól.
Ezután beállítjuk a régiót, amelyben be szeretnénk vezetni az alkalmazást:
1 | gcloud config set compute/zone europe-west3-c |
A régiók listáját az alábbi helyen találjuk: https://cloud.google.com/about/locations#europe
Klasztert az alábbi paranccsal hozhatunk létre:
1 | gcloud container clusters create my-cluster--num-nodes=1 |
A –num-nodes flag segítségével állíthatjuk be a node-ok (fizikai vagy virtuális gép) számát a klaszterben. A flagről további információt találsz az alábbi linken: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create#–num-nodes
Ez az operáció néhány percet vesz igénybe.
Az operáció végén a Cloudshellben megkapjuk azt a táblázatot, amely tartalmazza a klaszter paramétereit.
Ezután használjuk az alábbi parancsot:
1 | gcloud container clusters get-credentials my-cluster |
A parancs aktualizálja a kubeconfig fájlt a megfelelő referenciákkal és információkkal, amelyek a klaszter további használatához szükségesek.
Az alkalmazás bevezetéséhez a klaszterre használjuk az alábbi parancsot:
1 | kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0 |
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
Itt található a bevezetendő hello-app alkalmazás forráskódja: https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/blob/master/hello-app/main.go
Az alkalmazásunkat bevezethetjük a Container Registryben tárolt konténerizált alkalmazáskép segítségével.
Most fel kell fednünk az alkalmazást (ezpose). Erre a célra használjuk az alábbi parancsot:
12 | kubectl expose deployment hello-server --type LoadBalancer \ --port 80 --target-port 8080 |
A kubectl parancsról további információt találsz az alábbi linken: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose
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-server gcloud container clusters delete my-cluster |
Ezek voltak a Kubernetes alapjai!
forrás: https://flyonthecloud.com/hu/blog/kubernetes-tutorial/
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. |
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. |
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. |
Cookie | Duration | Description |
---|---|---|
Murloc7A6B62905CA54C13DCDD11A0962E47EC21BBA94193C61D5987195FF6B7CAB838 | 1 day | Description is currently not available. |
SiteMapId | session | Description is currently not available. |
SWLOCALE | 30 years | Description is currently not available. |
SWSESSIONID | session | Description is currently not available. |