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

Hibrid pillérek 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:

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 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:

AKS-motor virtuálisgép-erőforrásai az Azure Stack Hubban

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.

Az AKS-motor virtuális gépének áttekintése oldal

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.

példa aks-engine parancssorra

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.

Fürt IaaS-összetevői – Azure Stack Hub portál

  1. 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 kubectlitt é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>

Kubectl végrehajtása a főcsomóponton

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:

A saját üzemeltetésű ügynökök döntési folyamatát bemutató ábra.

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.

A kimenő forgalmat ábrázoló diagram.

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.

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.

Azure Stack Hub-fürtök az Azure Monitorban

Az Azure Monitor-fürt részletei

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:

Egy helyszíni forgalomkezelőt ábrázoló ábra.

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:

TM-végpontprofil

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:

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