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
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 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:
- Tekintse át a magas rendelkezésre állású Kubernetes-fürt mintáját ismertető cikket.
- Tekintse át a társadattár GitHub tartalmát, amely a cikkben hivatkozott további objektumokat tartalmazza.
- 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 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-motor telepítése Linux rendszeren az Azure Stack Hubban (vagy Windows használatával)
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:

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.

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.

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.

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

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/configfá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:
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.
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.
- 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. 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.
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:

Az Azure-ban úgy konfiguráljuk Traffic Manager, hogy az alkalmazás két különböző példányára mutasson:
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:
- 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-lemezképverziókra. További információt az operációsrendszer-lemezkép frissítésének lépéseiben talál.
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
- 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 GitHub.




