Az üzembe helyezett Kubernetes működése

Befejeződött

A drónkövető alkalmazás több olyan összetevővel rendelkezik, amelyek egymástól elkülönítve vannak üzembe helyezve. Az Ön feladata, hogy konfigurálja ezeknek az összetevőknek az üzembe helyezését a fürtön. Itt áttekintheti az összetevők üzembe helyezéséhez rendelkezésre álló üzembe helyezési lehetőségek némelyikét.

Diagram of the high-level architecture that shows the drone-tracking solution components.

Üzembe helyezési lehetőségek podokkal

A kubectl használatakor több lehetőség áll rendelkezésre a podok Kubernetes-fürtön történő üzembe helyezésére. A következő lehetőségek közül választhat:

  • Podsablonok
  • Replikációs vezérlők
  • Replikakészletek
  • Deployments

A négy Kubernetes-objektumtípus-definíció bármelyikét használhatja podok vagy podok üzembe helyezéséhez. Ezek a fájlok a YAML használatával írják le az üzembe helyezendő podok vagy podok kívánt állapotát.

Mi az a podsablon?

Egy podsablonnal az üzembe helyezni kívánt pod konfigurációja definiálható. A sablon olyan információkat tartalmaz, mint a tárolórendszerkép neve és a rendszerképek lekéréséhez használandó tárolóregisztrációs adatbázis. A sablon futásidejű konfigurációs információkat is tartalmaz, például a használandó portokat. A sablonok ugyanúgy definiálhatók YAML használatával, mint Docker-fájlok létrehozásakor.

Sablonok használatával manuálisan helyezhet üzembe podokat. A manuálisan üzembe helyezett podok azonban nem lesznek újraindítva meghibásodás, törlés vagy leállás után. Egy pod életciklusának kezelésére magasabb szintű Kubernetes-objektumot kell létrehoznia.

Mi az a replikációs vezérlő?

A replikációs vezérlő podsablonokat használ, és meghatározza a kötelezően futtatni kívánt podok számát. A vezérlő segítségével több példányban futtathatja ugyanazt a podot, és gondoskodhat arról, hogy a podok mindig fussanak a fürt egy vagy több csomópontján. A vezérlő új podokkal cseréli le a futó podokat, ha azok meghibásodnak, törlődnek vagy leállnak.

Tegyük fel például, hogy telepíti a drónkövetés előtérbeli webhelyét, és a felhasználók elkezdenek hozzáférni a webhelyhez. Ha bármilyen okból az összes pod leáll, a webhely nem lesz elérhető a felhasználók számára, csak ha új podokat indít. Replikációs vezérlő segítségével biztosíthatja, hogy a webhely mindig rendelkezésre álljon.

Mi az a replikakészlet?

Replikálási vezérlő helyett javasolt replikakészletek használatával elvégezni a replikák üzembe helyezését. A replikakészletek ugyanazokat a funkciókat tartalmazzák, mint a replikációvezérlők, de egy további konfigurációs lehetőséggel is rendelkezik, amely egy választóértéket is tartalmaz.

A szelektor teszi lehetővé, hogy a replikakészlet az alatta futó összes podot azonosítsa. Ezzel a funkcióval kezelhetők a szelektorértékkel megegyező értékkel címkézett, de nem a replikált készlettel létrehozott podok.

Mi az az üzembe helyezés?

Az üzembe helyezés egy replikakészletnél magasabb szintű felügyeleti objektumot hoz létre, és lehetővé teszi a podok frissítéseinek üzembe helyezését és kezelését egy fürtben.

Tegyük fel, hogy az alkalmazás öt példánya van üzembe helyezve a fürtben. Az alkalmazás 1.0.0 verzióját öt pod futtatja.

Diagram that shows five pods running on a node with the same pod version.

Ha úgy dönt, hogy manuálisan frissíti az alkalmazást, eltávolíthatja az összes podot, majd elindíthatja az alkalmazás 2.0.0-s verzióját futtató új podokat. Ezzel a stratégiával az alkalmazás leállást tapasztal.

Ehelyett egy olyan gördülő frissítést szeretne végrehajtani, amelyben a podokat az alkalmazás új verziójával indítja el, mielőtt eltávolítja a régebbi alkalmazásverziójú podokat. A gördülő frissítések egyszerre egy podot indítanak el ahelyett, hogy egyszerre levenni az összes régebbi podot. Az üzembe helyezések figyelembe veszik a replikáknak a replikakészletek adatait leíró szakaszban konfigurált számát. Fenntartja a replikakészletben megadott podok számát, mivel a régi podokat új podokra cseréli.

Diagram that shows five pods, two pods set as version 1 and 3 pods set as version 2.

Az üzembe helyezések alapértelmezés szerint működés közbeni frissítési stratégiát biztosítanak a podok frissítésekor. Újbóli létrehozási stratégiát is alkalmazhat. Ez a stratégia az új podok elindítása előtt leállítja a podokat.

Az üzembe helyezések egy visszaállítási stratégiát is biztosítanak, amelyet a kubectl használatával lehet végrehajtani.

Az üzembe helyezések YAML-alapú definíciós fájlokat használnak, és megkönnyítik az üzemelő példányok kezelését. Ne feledje, hogy az üzembe helyezések lehetővé teszik bármilyen módosítás alkalmazását a fürtökre. Például telepítheti az alkalmazások új verzióit, frissítheti a címkéket és futtathatja a podok más replikáit.

A kubectl szintaxisával egyszerűen elvégezhető az automatikus üzembe helyezés, ha a kubectl run parancsot használja a pod üzembe helyezéséhez. Ez a parancs egy üzemelő példányt hoz létre a szükséges replikakészlettel és podokkal. A parancs azonban nem hoz létre definíciós fájlt. Ajánlott eljárás az összes üzembe helyezés központi telepítési definíciós fájlokkal való kezelése és a módosítások nyomon követése verziókövetési rendszer használatával.

Deployment considerations

A Kubernetes a fürt hálózatkezelésének és tárolásának konfigurálására vonatkozó konkrét követelményekkel rendelkezik. Ennek a két aspektusnak a konfigurálása befolyásolja, hogy milyen döntéseket hozhat az alkalmazásoknak a fürt hálózatán való elérhetővé tételéhez és az adatok tárolásához.

A drónkövető alkalmazás egyes szolgáltatásainak például speciális követelményei vannak a felhasználói hozzáférésre, a folyamatok közötti hálózati hozzáférésre és az adattárolásra vonatkozóan. Most tekintse meg a Kubernetes-fürtök ezen aspektusait, és hogy ezek hogyan befolyásolják az alkalmazások üzembe helyezését.

Kubernetes-hálózatkezelés

Tegyük fel, hogy olyan fürttel rendelkezik, amelyhez egy vezérlősík és két csomópont tartozik. Ha csomópontokat ad hozzá a Kuberneteshez, a rendszer automatikusan hozzárendel egy IP-címet az egyes csomóponthoz egy belső magánhálózat-tartományból. Tegyük fel például, hogy a helyi hálózati tartománya 192.168.1.0/24.

Diagram of nodes with assigned IP addresses in a cluster.

A rendszer az összes telepített podhoz hozzárendel egy IP-címet az IP-címkészletből. Tegyük fel például, hogy a konfiguráció a 10.32.0.0/12 hálózati tartományt használja az alábbi képen látható módon.

Diagram of nodes and pods with assigned IP addresses in a cluster.

Alapértelmezés szerint a különböző IP-címtartományokat használó podok és a csomópontok nem tudnak kommunikálni egymással.

A helyzet ráadásul még bonyolultabb, hiszen a podok átmenetiek. A podok IP-címe ideiglenes, és nem használható egy újonnan létrehozott podhoz való újrakapcsolódáshoz. Ez a konfiguráció hatással van arra, hogy az alkalmazás hogyan kommunikál a belső összetevőivel, és hogy Ön és a szolgáltatások hogyan kommunikálnak vele külsőleg.

A kommunikáció egyszerűsítése érdekében a Kuberneteshez a hálózatkezelést úgy kell konfigurálnia, hogy:

  • A podok hálózati címfordítás (NAT) nélkül kommunikálhassanak egymással a csomópontok között.
  • A csomópontok NAT nélkül kommunikálhassanak az összes poddal és viszont.
  • A csomópontokon lévő ügynökök kommunikálhassanak az összes csomóponttal és poddal

A Kubernetes számos hálózatkezelési megoldást kínál, amelyeket telepíthet a hálózatkezelés konfigurálásához. Ilyen például az Antrea, a Cisco Application Centric Infrastructure (ACI), a Cilium, a Flannel, a Kubenet, a VMware NSX-T és a Weave Net.

A felhőszolgáltatók saját hálózati megoldásokat is biztosítanak. Az Azure Kubernetes Service (AKS) például támogatja az Azure Virtual Network tárolóhálózati adaptert (CNI), a Kubenetet, a Flannelt, a Ciliumot és az Antreát.

Kubernetes-szolgáltatások

A Kubernetes-szolgáltatások olyan Kubernetes-objektumok, amelyek stabil hálózatkezelést biztosítanak a podokhoz. A Kubernetes-szolgáltatások teszik lehetővé a csomópontok, podok és (belső és külső) alkalmazásfelhasználók fürttel való kommunikációját.

A Kubernetes hozzárendel egy IP-címet a szolgáltatáshoz annak létrehozásakor, ugyanúgy, mint egy csomóponthoz vagy podhoz. Ezek a címek egy szolgáltatásfürt IP-címtartományából lesznek hozzárendelve; például: 10.96.0.0/12. A szolgáltatás emellett DNS-nevet is kap a szolgáltatásnév és az IP-port alapján.

A drónkövető alkalmazásban a hálózati kommunikáció a következő:

  • A webhely és a RESTful API a fürtön kívüli felhasználók számára is elérhető.

  • A memóriában tárolt gyorsítótár és az üzenetsor szolgáltatás elérhető az előtér illetve a RESTful API számára, de a külső felhasználók számára nem.

  • Az üzenetsor hozzáférést igényel az adatfeldolgozási szolgáltatáshoz, de a külső felhasználókhoz nem.

  • A NoSQL-adatbázis elérhető a memóriában tárolt gyorsítótár és az adatfeldolgozási szolgáltatás számára, de a külső felhasználók számára nem.

Ezeknek a forgatókönyveknek a támogatásához háromféle szolgáltatást konfigurálhat az alkalmazás összetevőinek közzététele érdekében.

Szolgáltatás Leírás
ClusterIP Egy szolgáltatáshoz rendelt cím, amely a szolgáltatást a fürtön belüli szolgáltatások számára teszi elérhetővé. Például az alkalmazás előtér- és háttérösszetevői közötti kommunikáció.
NodePort A Kubernetes vezérlősík által a szolgáltatáshoz hozzárendelt 30000 és 32767 közötti csomópontport; például 192.169.1.11 fürtökön01. Ezután konfigurálja a szolgáltatást a podon egy olyan célport használatával, amelyet közzé szeretne tenni. Konfigurálhatja például a 80-as portot az előterek egyikét futtató podon. Most már elérheti az előteret egy csomóponti IP-címmel és portcímmel.
LoadBalancer Az a terheléselosztó, amely lehetővé teszi a terhelés elosztását az alkalmazást futtató csomópontok között és a pod elérhetővé tételét nyilvános hálózati hozzáféréssel. A terheléselosztók általában a felhőalapú szolgáltatók használatakor konfigurálhatók. Ebben az esetben a külső terheléselosztóból érkező forgalmat a rendszer az alkalmazást futtató podokra irányítja.

A drónkövető alkalmazásban dönthet úgy, hogy a nyomkövetési webhelyet és a RESTful API-t egy LoadBalancerrel és az adatfeldolgozási szolgáltatással teszi elérhetővé egy ClusterIP használatával.

A podok csoportosítása

A podok IP-cím szerinti kezelése nem praktikus. A pod IP-címei változnak, miközben a vezérlők újra létrehozzák őket, és tetszőleges számú podot futtathat.

Diagram of a service with selector labels.

A szolgáltatásobjektumok szelektorcímkék használatával teszik lehetővé a fürt adott podjának megcélzását és kezelését. A szelektorcímkét a szolgáltatás definíciójában állíthatja be úgy, hogy megegyezzen a pod definíciós fájljában megadott podcímkével.

Tegyük fel például, hogy sok futó podja van. Ezen podok közül csak néhány van az előtérben, és Ön olyan terheléselosztó-szolgáltatást szeretne beállítani, amely csak az előtérbeli podokat célozza meg. A szolgáltatást alkalmazhatja úgy, hogy közzétegye ezeket a podokat a pod címkéjére szelektorértékként való hivatkozással a szolgáltatás definíciós fájljában. A szolgáltatás csak a címkének megfelelő podokat csoportosítja. Ha egy podot eltávolítanak és újra létrehoznak, az új pod a megfelelő címkével automatikusan hozzáadódik a szolgáltatási csoporthoz.

Kubernetes-tár

A Kubernetes ugyanazt a tárkötet fogalmat használja, amely a Docker esetében is használatos. A Docker-kötetek kevésbé felügyeltek, mint a Kubernetes-kötetek, mivel a Docker-kötetek élettartama nem felügyelt. A Kubernetes-kötet élettartama egy explicit élettartam, amely megfelel a pod élettartamának. Ez az élettartam-egyezés azt jelenti, hogy a kötet túléli a podon futó tárolókat. Ha azonban a podot eltávolítja, akkor a kötet is el lesz távolítva.

Diagram of a service with selector labels again.

A Kubernetes lehetőségeket kínál az állandó tár PersistentVolumes használatával való kiépítésére. A PersistentVolumeClaims használatával adott tárterületet is igényelhet a podokhoz.

A megőrzött tárterületet (például üzenetsorokat és adatbázisokat) igénylő alkalmazás-összetevők telepítése során mindkét megfontolást figyelembe kell vennie.

Felhőalapú integrációs megfontolások

A Kubernetes nem írja elő a natív felhőalkalmazáshoz használandó technológiai eszközöket. Egy felhőalapú környezetben, például az Azure-ban a Kubernetes-fürtön kívül számos szolgáltatást használhat.

Korábban már volt szó arról, hogy a Kubernetes az alábbi szolgáltatások egyikét sem nyújtja:

  • Közbenső szoftver
  • Adatfeldolgozási keretrendszerek
  • Databases
  • Gyorsítótárak
  • Fürttárolási rendszerek

Ebben a drónkövető megoldásban három szolgáltatás biztosítja a köztes szoftver funkcióit: egy NoSQL-adatbázist, egy memóriabeli gyorsítótár szolgáltatást és egy üzenetsort. Választhatja a MongoDB Atlast a NoSQL-megoldáshoz, a Redist a memóriabeli gyorsítótár kezeléséhez, a RabbitMQ-t vagy a Kafkát az üzenetsor igényeitől függően.

Felhőalapú környezet, például az Azure használata esetén ajánlott eljárás a Kubernetes-fürtön kívüli szolgáltatások használata. Ez a döntés egyszerűsítheti a fürt konfigurációját és felügyeletét. Használhatja például az Azure Cache for Redist a memóriában tárolt gyorsítótárazási szolgáltatásokhoz, az Azure Service Bus-üzenetkezelést az üzenetsorhoz, valamint az Azure Cosmos DB-t a NoSQL-adatbázishoz.