Magas rendelkezésre állású Kubernetes-fürt üzembe helyezése az Azure Stack Hubon
Ez a cikk bemutatja, hogyan hozhat létre egy magas rendelkezésre állású Kubernetes-fürtkörnyezetet, amelyet több Azure Stack Hub-példányon, különböző fizikai helyeken helyez üzembe.
Ebben a megoldás üzembehelyezési útmutatójában megtudhatja, hogyan:
- Az AKS-motor letöltése és előkészítése
- Csatlakozás az AKS engine helper virtuális géphez
- Kubernetes-fürt üzembe helyezése
- Csatlakozás a Kubernetes-fürthöz
- Azure Pipelines csatlakoztatása Kubernetes-fürthöz
- Figyelés konfigurálása
- Alkalmazás üzembe helyezése
- Automatikus skálázási alkalmazás
- A Traffic Manager konfigurálása
- Kubernetes frissítése
- Kubernetes skálázása
Tipp
A Microsoft Azure Stack Hub az Azure bővítménye. Az Azure Stack Hub biztosítja a felhőalapú számítástechnika rugalmasságát és innovációját a helyszíni környezetében, így az egyetlen olyan hibrid felhőt teszi lehetővé, amely lehetővé teszi hibrid alkalmazások bárhol történő kiépítését és üzembe helyezését.
A hibrid alkalmazások tervezésével kapcsolatos szempontok a szoftverminőség (elhelyezés, méretezhetőség, rendelkezésre állás, rugalmasság, kezelhetőség és biztonság) alappilléreit vizsgálják a hibrid alkalmazások tervezéséhez, üzembe helyezéséhez és üzemeltetéséhez. A tervezési szempontok segítenek optimalizálni a hibrid alkalmazások tervezését, minimalizálva az éles környezetekben jelentkező kihívásokat.
Előfeltételek
Mielőtt elkezdené ezt az üzembe helyezési útmutatót, győződjön meg arról, hogy:
- Tekintse át a Magas rendelkezésre állású Kubernetes-fürtminta cikket.
- Tekintse át a társ GitHub-adattár tartalmát, amely további, ebben a cikkben hivatkozott objektumokat tartalmaz.
- Rendelkezik olyan fiókkal, amely hozzáfér az Azure Stack Hub felhasználói portálhoz, és rendelkezik legalább "közreműködői" engedélyekkel.
Az AKS-motor letöltése és előkészítése
Az AKS Engine egy bináris, amely bármely Olyan Windows- vagy Linux-gazdagépről használható, amely eléri az Azure Stack Hub Azure Resource Manager végpontjait. Ez az útmutató egy új Linux (vagy Windows) rendszerű virtuális gép üzembe helyezését ismerteti az Azure Stack Hubon. Később fogjuk használni, amikor az AKS Engine üzembe helyezi a Kubernetes-fürtöket.
Megjegyzés
Egy meglévő Windows vagy Linux rendszerű virtuális gép használatával kubernetes-fürtöt is üzembe helyezhet az Azure Stack Hubon az AKS Engine használatával.
Az AKS Engine részletes folyamatát és követelményeit itt dokumentáljuk:
- Az AKS-motor telepítése Linuxra az Azure Stack Hubban (vagy Windows használatával)
Az AKS Engine egy segédeszköz a (nem felügyelt) Kubernetes-fürtök üzembe helyezéséhez és üzemeltetéséhez (az Azure-ban és az Azure Stack Hubban).
Az Azure Stack Hub AKS-motorjának részleteit és különbségeit az alábbiakban ismertetjük:
A mintakörnyezet a Terraform használatával automatizálja az AKS Engine virtuális gép üzembe helyezését. A részleteket és a kódot a társ GitHub-adattárban találja.
Ennek a lépésnek az eredménye egy új erőforráscsoport az Azure Stack Hubon, amely tartalmazza az AKS Engine-segéd virtuális gépet és a kapcsolódó erőforrásokat:
Megjegyzés
Ha az AKS-motort leválasztott, levegővel csatlakoztatott környezetben kell üzembe helyeznie, további információért tekintse át a Leválasztott Azure Stack Hub-példányokat ismertető cikket.
A következő lépésben az újonnan üzembe helyezett AKS Engine virtuális gépet fogjuk használni egy Kubernetes-fürt üzembe helyezéséhez.
Csatlakozás az AKS Engine segéd virtuális gépéhez
Először csatlakoznia kell a korábban létrehozott AKS Engine segéd virtuális géphez.
A virtuális gépnek nyilvános IP-címmel kell rendelkeznie, és SSH-n (22/TCP-porton) keresztül kell elérhetőnek lennie.
Tipp
Használhat egy tetszőleges eszközt, például a MobaXtermet, a puTTY-t vagy a PowerShellt a Windows 10 linuxos virtuális géphez való csatlakozáshoz SSH használatával.
ssh <username>@<ipaddress>
A csatlakozás után futtassa a parancsot aks-engine
. Az AKS-motor és a Kubernetes-verziókról további információt a Támogatott AKS-motorverziók című témakörben olvashat.
Kubernetes-fürt üzembe helyezése
Maga az AKS Engine-segéd virtuális gép még nem hozott létre Kubernetes-fürtöt az Azure Stack Hubon. A fürt létrehozása az első művelet az AKS Engine segéd virtuális gépén.
A részletes folyamatot itt dokumentáljuk:
A parancs és az aks-engine deploy
előző lépésekben végrehajtott előkészületek végeredménye egy teljes értékű Kubernetes-fürt, amely az első Azure Stack Hub-példány bérlői területén van üzembe helyezve. Maga a fürt olyan Azure IaaS-összetevőkből áll, mint a virtuális gépek, a terheléselosztók, a virtuális hálózatok, a lemezek stb.
- Azure Load Balancer (K8s API-végpont) 2) Feldolgozó csomópontok (ügynökkészlet) 3) Fő csomópontok
A fürt most már működik, és a következő lépésben csatlakozunk hozzá.
Csatlakozás a Kubernetes-fürthöz
Most már csatlakozhat a korábban létrehozott Kubernetes-fürthöz SSH-n keresztül (az üzembe helyezés részeként megadott SSH-kulccsal) vagy (ajánlott) keresztül kubectl
. A Kubernetes parancssori eszköze kubectl
itt érhető el Windows, Linux és macOS rendszeren. Már előre telepítve van és konfigurálva van a fürt fő csomópontján:
ssh azureuser@<k8s-master-lb-ip>
A felügyeleti feladatokhoz nem ajánlott a fő csomópontot jumpboxként használni. A kubectl
konfiguráció a fő csomópont(ok) és az AKS-motor virtuális gépén van tárolva .kube/config
. A konfigurációt átmásolhatja a Kubernetes-fürthöz kapcsolódó rendszergazdai gépre, és ott használhatja az kubectl
parancsot. A .kube/config
fájl később szolgáltatáskapcsolat konfigurálására is használható az Azure Pipelinesban.
Fontos
Tartsa ezeket a fájlokat biztonságban, mert tartalmazzák a Kubernetes-fürt hitelesítő adatait. A fájlhoz hozzáféréssel rendelkező támadónak elegendő információja van ahhoz, hogy rendszergazdai hozzáférést kapjon a fájlhoz. A kezdeti .kube/config
fájllal végzett összes művelet fürt-rendszergazdai fiókkal történik.
Mostantól többféle parancsot kubectl
is kipróbálhat a fürt állapotának ellenőrzéséhez. Íme néhány példaparancs:
kubectl get nodes
NAME STATUS ROLE VERSION
k8s-linuxpool-35064155-0 Ready agent v1.14.8
k8s-linuxpool-35064155-1 Ready agent v1.14.8
k8s-linuxpool-35064155-2 Ready agent v1.14.8
k8s-master-35064155-0 Ready master v1.14.8
kubectl cluster-info
Kubernetes master is running at https://aks.***
CoreDNS is running at https://aks.***/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
kubernetes-dashboard is running at https://aks.***/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
Metrics-server is running at https://aks.***/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Fontos
A Kubernetes saját szerepköralapú Access Control (RBAC) modellel rendelkezik, amely lehetővé teszi részletes szerepkördefiníciók és szerepkörkötések létrehozását. Ez a lehetőség a fürthöz való hozzáférés szabályozására a fürt-rendszergazdai engedélyek átadása helyett.
Azure Pipelines csatlakoztatása Kubernetes-fürtökhöz
Az Azure Pipelinesnak az újonnan üzembe helyezett Kubernetes-fürthöz való csatlakoztatásához az előző lépésben ismertetett kubeconfig (.kube/config
) fájlra van szükségünk.
- Csatlakozzon a Kubernetes-fürt egyik fő csomópontjához.
- Másolja ki a
.kube/config
fájl tartalmát. - Lépjen az Azure DevOps > Project Settings > Szolgáltatáskapcsolatok területre egy új "Kubernetes" szolgáltatáskapcsolat létrehozásához (a KubeConfig használata hitelesítési módszerként)
Fontos
Az Azure Pipelinesnak (vagy annak buildügynökeinek) hozzáféréssel kell rendelkeznie a Kubernetes API-hoz. Ha van internetkapcsolat az Azure Pipelines és az Azure Stack Hub Kubernetes-fürt között, üzembe kell helyeznie egy saját üzemeltetésű Azure Pipelines buildügynököt.
Az Azure Pipelines helyi ügynökeinek üzembe helyezésekor üzembe helyezheti az Azure Stack Hubon vagy egy olyan gépen, amelyen hálózati kapcsolat van az összes szükséges felügyeleti végponthoz. A részleteket itt tekintse meg:
A mintatelepítési (CI/CD) szempontok szakasz egy döntési folyamatot tartalmaz, amely segít megérteni, hogy a Microsoft által üzemeltetett ügynököket vagy a saját üzemeltetésű ügynököket használja-e:
Töltse le a jelen cikk összes diagramját tartalmazó Visio-fájlt .
Ebben a mintamegoldásban a topológia egy saját üzemeltetésű buildügynököt tartalmaz az egyes Azure Stack Hub-példányokon. Az ügynök hozzáférhet az Azure Stack Hub felügyeleti végpontjaihoz és a Kubernetes-fürt API-végpontjaihoz.
Töltse le a jelen cikk összes diagramját tartalmazó Visio-fájlt .
Ez a kialakítás megfelel egy közös szabályozási követelménynek, amely csak az alkalmazásmegoldásból kimenő kapcsolatokkal rendelkezik.
Figyelés konfigurálása
Az Azure Monitor for Containers használatával monitorozhatja a tárolókat a megoldásban. Ez az Azure Monitort az AKS Engine által üzembe helyezett Kubernetes-fürtre helyezija az Azure Stack Hubon.
Kétféleképpen engedélyezheti az Azure Monitort a fürtön. Mindkét módon be kell állítania egy Log Analytics-munkaterületet az Azure-ban.
- Az első módszer Helm-diagramot használ
- A második módszer az AKS-motor fürtspecifikációjának részeként
A minta topológiában az "1. módszer" használatos, amely lehetővé teszi a folyamat automatizálását, és a frissítések könnyebben telepíthetők.
A következő lépéshez szüksége lesz egy Azure LogAnalytics-munkaterületre (azonosító és kulcs), Helm
(3-es verzió) és kubectl
a gépére.
A Helm egy Kubernetes-csomagkezelő, amely binárisan érhető el macOS, Windows és Linux rendszeren. Letölthető a helm.sh. A Helm a parancshoz használt Kubernetes-konfigurációs fájlra kubectl
támaszkodik:
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
helm repo update
helm install incubator/azuremonitor-containers \
--set omsagent.secret.wsid=<your_workspace_id> \
--set omsagent.secret.key=<your_workspace_key> \
--set omsagent.env.clusterName=<my_prod_cluster> \
--generate-name
Ez a parancs telepíti az Azure Monitor-ügynököt a Kubernetes-fürtön:
kubectl get pods -n kube-system
NAME READY STATUS
omsagent-8qdm6 1/1 Running
omsagent-r6ppm 1/1 Running
omsagent-rs-76c45758f5-lmc4l 1/1 Running
A Kubernetes-fürt Operations Management Suite -ügynöke (OMS) monitorozási adatokat küld az Azure Log Analytics-munkaterületnek (kimenő HTTPS használatával). Mostantól az Azure Monitor használatával mélyebb betekintést nyerhet az Azure Stack Hub kubernetes-fürtjeibe. Ez a kialakítás hatékony módja annak, hogy bemutassa az alkalmazás fürtöivel automatikusan üzembe helyezhető elemzési teljesítményt.
Fontos
Ha az Azure Monitor nem jelenít meg Azure Stack Hub-adatokat, győződjön meg arról, hogy követte AzureMonitor-Containers megoldás Azure Log Analytics-munkaterülethez való hozzáadására vonatkozó utasításokat.
Az alkalmazás üzembe helyezése
A mintaalkalmazás telepítése előtt egy másik lépésben konfigurálhatja az nginx-alapú bejövőforgalom-vezérlőt a Kubernetes-fürtön. A bejövőforgalom-vezérlőt 7. rétegbeli terheléselosztóként használjuk a fürt forgalmának gazdagép, elérési út vagy protokoll alapján történő irányításához. Az Nginx-bejövő forgalom Helm-diagramként érhető el. Részletes útmutatásért tekintse meg a Helm-diagram GitHub-adattárát.
A mintaalkalmazás helm-diagramként is be van csomagolva, mint az előző lépésben az Azure Monitoring Agent . Ezért egyszerű üzembe helyezni az alkalmazást a Kubernetes-fürtön. A Helm-diagram fájljait a társ GitHub-adattárban találja
A mintaalkalmazás egy háromrétegű alkalmazás, amely két Azure Stack Hub-példány mindegyikén üzembe helyezve van egy Kubernetes-fürtön. Az alkalmazás MongoDB-adatbázist használ. Az adatok több példányra történő replikálásáról az Adat- és tárolási szempontok című témakörben talál további információt.
Az alkalmazás Helm-diagramjának üzembe helyezése után az alkalmazás mindhárom szintje üzembe helyezésként és állapotalapú készletként jelenik meg (az adatbázishoz) egyetlen poddal:
kubectl get pod,deployment,statefulset
NAME READY STATUS
pod/ratings-api-569d7f7b54-mrv5d 1/1 Running
pod/ratings-mongodb-0 1/1 Running
pod/ratings-web-85667bfb86-l6vxz 1/1 Running
NAME READY
deployment.extensions/ratings-api 1/1
deployment.extensions/ratings-web 1/1
NAME READY
statefulset.apps/ratings-mongodb 1/1
A szolgáltatások oldalán megtalálja az nginx-alapú bejövőforgalom-vezérlőt és annak nyilvános IP-címét:
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP
nginx-ingress-1588931383-controller LoadBalancer 10.0.114.180 *public-ip* 443:30667/TCP
nginx-ingress-1588931383-default-backend ClusterIP 10.0.76.54 <none> 80/TCP
ratings-api ClusterIP 10.0.46.69 <none> 80/TCP
ratings-web ClusterIP 10.0.161.124 <none> 80/TCP
A "külső IP-cím" az "alkalmazásvégpont". A felhasználók így fognak csatlakozni az alkalmazás megnyitásához, és a Következő lépés, a Traffic Manager konfigurálása során is végpontként lesznek használva.
Az alkalmazás automatikus skálázása
A horizontális pod automatikus skálázási eszközét igény szerint konfigurálhatja úgy, hogy bizonyos metrikák, például a processzorkihasználtság alapján vertikálisan fel- vagy leskálázható legyen. A következő parancs egy horizontális pod-automatikus skálázót hoz létre, amely a ratings-web üzemelő példány által vezérelt podok 1–10 replikáját tartja fenn. A HPA növeli és csökkenti a replikák számát (az üzembe helyezésen keresztül), hogy fenntartsa az átlagos processzorkihasználtságot az összes podon 80%:
kubectl autoscale deployment ratings-web --cpu-percent=80 --min=1 --max=10
Az automatikus skálázási eszköz aktuális állapotát az alábbi parancs futtatásával ellenőrizheti:
kubectl get hpa
NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE
ratings-web Deployment/ratings-web/scale 0% / 80% 1 10 1 18s
A Traffic Manager konfigurálása
Az alkalmazás két (vagy több) üzemelő példánya közötti forgalom elosztásához az Azure Traffic Managert használjuk. Az Azure Traffic Manager egy DNS-alapú forgalom terheléselosztó az Azure-ban.
Megjegyzés
A Traffic Manager DNS használatával irányítja az ügyfélkéréseket a legmegfelelőbb szolgáltatásvégpontra a forgalom-útválasztási módszer és a végpontok állapota alapján.
Az Azure Traffic Manager használata helyett más, a helyszínen üzemeltetett globális terheléselosztási megoldásokat is használhat. A mintaforgatókönyvben az Azure Traffic Manager használatával osztjuk el a forgalmat az alkalmazás két példánya között. Ugyanazon vagy különböző helyeken futtathatók az Azure Stack Hub-példányokon:
Töltse le a jelen cikk összes diagramját bemutató Visio-fájlt .
Az Azure-ban úgy konfiguráljuk a Traffic Managert, hogy az alkalmazás két különböző példányára mutasson:
Amint látható, a két végpont az előző szakaszban üzembe helyezett alkalmazás két példányára mutat.
Ezen a ponton:
- Létrejött a Kubernetes-infrastruktúra, beleértve a bejövőforgalom-vezérlőt is.
- A fürtök két Azure Stack Hub-példányon lettek üzembe helyezve.
- A figyelés konfigurálva van.
- Az Azure Traffic Manager terheléselosztást biztosít a két Azure Stack Hub-példány között.
- Ezen az infrastruktúrán felül a minta háromszintű alkalmazás automatikusan üzembe lett helyezve Helm-diagramok használatával.
A megoldásnak mostantól elérhetőnek kell lennie a felhasználók számára!
Az üzembe helyezést követő működési szempontokat is érdemes megvitatni, amelyekről a következő két szakaszban olvashat.
Kubernetes frissítése
A Kubernetes-fürt frissítése során vegye figyelembe a következő témaköröket:
- A Kubernetes-fürt frissítése egy összetett 2. nap művelet, amely az AKS Engine használatával végezhető el. További információ: Kubernetes-fürt frissítése az Azure Stack Hubon.
- Az AKS Engine lehetővé teszi a fürtök újabb Kubernetes- és alap operációsrendszer-rendszerképverziókra való frissítését. További információ: A Kubernetes újabb verziójára való frissítés lépései.
- Emellett csak a mögöttes csomópontokat frissítheti újabb alap operációsrendszer-rendszerképverziókra. További információ: Az operációsrendszer-lemezkép frissítésének lépései.
Az újabb alap operációsrendszer-rendszerképek biztonsági és kernelfrissítéseket tartalmaznak. A fürtüzemeltető feladata az újabb Kubernetes-verziók és operációsrendszer-rendszerképek rendelkezésre állásának monitorozása. Az operátornak megterveznie és végre kell hajtania ezeket a frissítéseket az AKS Engine használatával. Az alap operációsrendszer-rendszerképeket az Azure Stack Hub-kezelőnek kell letöltenie az Azure Stack Hub Marketplace-ről.
A Kubernetes méretezése
A skálázás egy másik 2. nap művelet, amely az AKS Engine használatával vezénylhető.
A skálázási parancs újra felhasználja a fürtkonfigurációs fájlt (apimodel.json) a kimeneti könyvtárban egy új Azure-Resource Manager üzembe helyezés bemeneteként. Az AKS-motor végrehajtja a skálázási műveletet egy adott ügynökkészleten. Ha a skálázási művelet befejeződött, az AKS Engine ugyanabban az apimodel.json fájlban frissíti a fürtdefiníciót. A fürtdefiníció az új csomópontok számát tükrözi, hogy tükrözze a frissített, aktuális fürtkonfigurációt.
Következő lépések
- További információ a hibrid alkalmazások tervezésének szempontjairól.
- Tekintse át és javasolja a minta kódjának fejlesztését a GitHubon.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: