Magas rendelkezésre állású Kubernetes-fürt üzembe helyezése az Azure Stack Hubon

Ez a cikk bemutatja, hogyan hozhat létre magas rendelkezésre állású Kubernetes-fürtkörnyezetet több Azure Stack Hub-példányon, különböző fizikai helyeken.

Ebben a megoldástelepítési útmutatóban a következőket sajátíthatja el:

  • Az AKS-motor letöltése és előkészítése
  • Csatlakozás az AKS-motor segéd virtuális gépéhez
  • Kubernetes-fürt üzembe helyezése
  • Csatlakozás a Kubernetes-fürthöz
  • Azure Pipelines Csatlakozás Kubernetes-fürtre
  • Figyelés konfigurálása
  • Alkalmazás üzembe helyezése
  • Alkalmazás automatikus skálázása
  • A Traffic Manager konfigurálása
  • Kubernetes frissítése
  • A Kubernetes méretezése

Tipp

Hybrid pillarsMicrosoft 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 hibrid felhő, 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 kialakítá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

Az üzembehelyezési útmutató használatának megkezdése előtt 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 fájl, 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) 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 találja:

Az AKS Engine egy segédeszköz 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 itt ismertetjük:

A mintakörnyezet a Terraform használatával automatizálja az AKS-motor virtuális gépének ü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épét és a kapcsolódó erőforrásokat:

AKS Engine VM Resources in Azure Stack Hub

Megjegyzés

Ha az AKS-motort leválasztott, levegőhöz csatlakoztatott környezetben kell üzembe helyeznie, további információért tekintse át a leválasztott Azure Stack Hub-példányokat .

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.

AKS Engine VM Overview page

Tipp

A linuxos virtuális géphez SSH-val való csatlakozáshoz használhat egy tetszőleges eszközt, például a MobaXtermet, a puTTY-t vagy a PowerShellt Windows 10.

ssh <username>@<ipaddress>

A csatlakozás után futtassa a parancsot aks-engine. Az AKS Engine és a Kubernetes támogatott verzióiról további információt a támogatott AKS-motorverziókban olvashat.

aks-engine command line example

Kubernetes-fürt üzembe helyezése

Maga az AKS Engine segítő 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épen.

A részletes folyamatot itt találja:

A parancs és az előző lépésekben végrehajtott előkészületek végeredménye aks-engine deploy egy teljes funkcionalitású 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, terheléselosztók, virtuális hálózatok, lemezek stb.

Cluster IaaS components Azure Stack Hub portal

  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 (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 rendszerekhez. Már előre telepítve van és konfigurálva van a fürt főcsomópontjaira:

ssh azureuser@<k8s-master-lb-ip>

Execute kubectl on master node

Felügyeleti feladatokhoz nem ajánlott a fő csomópontot jumpboxként használni. A kubectl konfigurációt a fő csomópont(ok) és az AKS-motor virtuális gépe tárolja .kube/config . A konfigurációt átmásolhatja a Kubernetes-fürthöz kapcsolódó rendszergazdai gépre, és használhatja az kubectl ott található parancsot. A .kube/config fájlt később az Azure Pipelines szolgáltatáskapcsolatának konfigurálására is használni fogjuk.

Fontos

Ezeket a fájlokat tartsa biztonságban, mert azok 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 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ör-definíciók és szerepkörkötések létrehozását. Ez a fürthöz való hozzáférés szabályozásának előnyösebb módja a fürt-rendszergazdai engedélyek átadása helyett.

Azure Pipelines Csatlakozás Kubernetes-fürtökbe

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.

  • Csatlakozás a Kubernetes-fürt egyik fő csomópontjára.
  • Másolja ki a .kube/config fájl tartalmát.
  • Lépjen az Azure DevOps > Project Gépház > Service Connections szolgáltatáshoz egy új "Kubernetes" szolgáltatáskapcsolat létrehozásához (használja a KubeConfigot hitelesítési módszerként)

Fontos

Az Azure Pipelinesnak (vagy annak fordítóü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 saját üzemeltetésű ü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égponttal. A részleteket itt tekinti meg:

Az üzembe helyezési minta (CI/CD) szempontjainak szakasza egy döntési folyamatot tartalmaz, amely segít megérteni, hogy a Microsoft által üzemeltetett ügynököket vagy saját üzemeltetésű ügynököket kell-e használnia:

decision flow self hosted agents

Ebben a mintamegoldásban a topológia egy saját üzemeltetésű fordítóügynököt tartalmaz minden Azure Stack Hub-példányon. Az ügynök hozzáférhet az Azure Stack Hub felügyeleti végpontjaihoz és a Kubernetes-fürt API-végpontjaihoz.

only outbound traffic

Ez a kialakítás megfelel egy közös szabályozási követelménynek, amelynek az az oka, hogy csak az alkalmazásmegoldásból kimenő kapcsolatokra van szükség.

Figyelés konfigurálása

A tárolókhoz készült Azure Monitor használatával figyelheti a megoldásban lévő tárolókat. 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. A helm.sh innen tölthető le. 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 (OMS) ügynöke monitorozási adatokat küld az Azure Log Analytics-munkaterületre (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ódszer az alkalmazás fürtöivel automatikusan üzembe helyezhető elemzési teljesítmény bemutatására.

Azure Stack Hub clusters in Azure monitor

Azure Monitor cluster details

Fontos

Ha az Azure Monitor nem jelenít meg Azure Stack Hub-adatokat, győződjön meg arról, hogy követte a 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 a 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árat.

A mintaalkalmazás helm-diagramként is van csomagolva, mint az előző lépésben az Azure Monitoring Agent . Így egyszerűen üzembe helyezheti az alkalmazást a Kubernetes-fürtön. A Helm-diagramfájlokat 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 egy Kubernetes-fürtön van üzembe helyezve. Az alkalmazás MongoDB-adatbázist használ. Az Adatok minta adatai és Storage szempontok segítségével többet is megtudhat arról, hogyan replikálhatja az adatokat több példányra.

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

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". Így csatlakoznak a felhasználók az alkalmazás megnyitásához, és a következő lépés, a Konfigurálás Traffic Manager végpontjaként is használhatók lesznek.

Az alkalmazás automatikus méretezése

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 CPU-kihasználtság alapján vertikálisan fel- vagy leskálázható legyen. A következő parancs létrehoz egy horizontális pod-automatikus skálázót, amely a ratings-web üzemelő példány által vezérelt podok 1–10 replikáját tartja karban. 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 Azure Traffic Manager fogjuk használni. Azure Traffic Manager egy DNS-alapú forgalom terheléselosztó az Azure-ban.

Megjegyzés

Traffic Manager DNS használatával irányítja az ügyfélkéréseket a legmegfelelőbb szolgáltatásvégpontra egy forgalom-útválasztási módszer és a végpontok állapota alapján.

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

on-premises traffic manager

Az Azure-ban úgy konfiguráljuk Traffic Manager, hogy az alkalmazás két különböző példányára mutasson:

TM endpoint profile

Mint 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.
  • Azure Traffic Manager terheléselosztást fog használni a két Azure Stack Hub-példányon.
  • Ezen az infrastruktúrán felül a minta háromrétegű alkalmazás automatikusan üzembe lett helyezve a 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és utáni 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ésekor 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 az AKS Engine használatával kell megterveznie és végrehajtania ezeket a frissítéseket. Az alap operációsrendszer-rendszerképeket az Azure Stack Hub-kezelőnek le kell töltenie az Azure Stack Hub Marketplace-ről.

A Kubernetes méretezése

A skálázás egy másik 2. napi művelet, amely az AKS Engine használatával vezénylhető.

A méretezé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 Engine végrehajtja a méretezési műveletet egy adott ügynökkészleten. A skálázási művelet befejezése után 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