Nasazení clusteru Kubernetes s vysokou dostupností ve službě Azure Stack Hub
V tomto článku se dozvíte, jak vytvořit vysoce dostupné prostředí clusteru Kubernetes nasazené v několika instancích služby Azure Stack Hub v různých fyzických umístěních.
V tomto průvodci nasazením řešení se naučíte:
- Stažení a příprava modulu AKS
- Připojení k pomocnému virtuálnímu počítači modulu AKS
- Nasazení clusteru Kubernetes
- Připojení ke clusteru Kubernetes
- Připojení Azure Pipelines ke clusteru Kubernetes
- Konfigurace sledování
- Nasazení aplikace
- Automatické škálování aplikace
- Konfigurace služby Traffic Manager
- Upgrade Kubernetes
- Škálování Kubernetes
Tip
Microsoft Azure Stack Hub je rozšířením Azure. Azure Stack Hub přináší flexibilitu a inovace cloud computingu do vašeho místního prostředí a umožňuje tak jediný hybridní cloud, který umožňuje sestavovat a nasazovat hybridní aplikace kdekoli.
Článek Aspekty návrhu hybridních aplikací se zabývá pilíři kvality softwaru (umístění, škálovatelnost, dostupnost, odolnost, spravovatelnost a zabezpečení) pro návrh, nasazení a provoz hybridních aplikací. Aspekty návrhu pomáhají optimalizovat návrh hybridních aplikací a minimalizovat výzvy v produkčních prostředích.
Požadavky
Než začnete s tímto průvodcem nasazením, ujistěte se, že:
- Projděte si článek o vzoru clusteru Kubernetes s vysokou dostupností .
- Projděte si obsah doprovodného úložiště GitHub, které obsahuje další prostředky, na které se odkazuje v tomto článku.
- Mít účet, který má přístup k uživatelskému portálu služby Azure Stack Hub s alespoň oprávněními přispěvatele.
Stažení a příprava modulu AKS
Modul AKS je binární soubor, který je možné použít z libovolného hostitele s Windows nebo Linuxem, který se může dostat ke koncovým bodům Azure Resource Manager Azure Stack Hub. Tato příručka popisuje nasazení nového virtuálního počítače s Linuxem (nebo Windows) ve službě Azure Stack Hub. Použije se později, až modul AKS nasadí clustery Kubernetes.
Poznámka
K nasazení clusteru Kubernetes ve službě Azure Stack Hub pomocí modulu AKS můžete také použít existující virtuální počítač s Windows nebo Linuxem.
Podrobný postup a požadavky na modul AKS jsou popsané tady:
Modul AKS je pomocný nástroj pro nasazování a provoz (nespravovaných) clusterů Kubernetes (v Azure a ve službě Azure Stack Hub).
Podrobnosti a rozdíly modulu AKS ve službě Azure Stack Hub jsou popsané tady:
Ukázkové prostředí použije Terraform k automatizaci nasazení virtuálního počítače modulu AKS. Podrobnosti a kód najdete v doprovodné úložišti GitHub.
Výsledkem tohoto kroku je nová skupina prostředků ve službě Azure Stack Hub, která obsahuje virtuální počítač pomocného modulu AKS a související prostředky:
Poznámka
Pokud musíte nasadit modul AKS v odpojené prostředí se vzduchovou mezerou, přečtěte si téma Odpojené instance služby Azure Stack Hub , kde najdete další informace.
V dalším kroku použijeme nově nasazený virtuální počítač modulu AKS k nasazení clusteru Kubernetes.
Připojení k pomocnému virtuálnímu počítači modulu AKS
Nejprve se musíte připojit k dříve vytvořenému pomocnému virtuálnímu počítači modulu AKS.
Virtuální počítač by měl mít veřejnou IP adresu a měl by být přístupný přes SSH (port 22/TCP).
Tip
K připojení k virtuálnímu počítači s Linuxem pomocí SSH můžete použít nástroj podle svého výběru, jako je MobaXterm, puTTY nebo PowerShell v Windows 10.
ssh <username>@<ipaddress>
Po připojení spusťte příkaz aks-engine
. Další informace o modulu AKS a verzích Kubernetes najdete v tématu Podporované verze modulu AKS .
Nasazení clusteru Kubernetes
Samotný pomocný virtuální počítač modulu AKS ještě nevytvořil cluster Kubernetes ve službě Azure Stack Hub. Vytvoření clusteru je první akce, která se provede na pomocném virtuálním počítači modulu AKS.
Podrobný postup je zdokumentovaný tady:
Konečným výsledkem aks-engine deploy
příkazu a příprav v předchozích krocích je plně funkční cluster Kubernetes nasazený do prostoru tenanta první instance služby Azure Stack Hub. Samotný cluster se skládá z komponent Azure IaaS, jako jsou virtuální počítače, nástroje pro vyrovnávání zatížení, virtuální sítě, disky atd.
- Nástroj pro vyrovnávání zatížení Azure (koncový bod rozhraní API K8s) 2) Pracovní uzly (fond agentů) 3) hlavní uzly
Cluster je teď v provozu a v dalším kroku se k němu připojíme.
Připojení ke clusteru Kubernetes
Teď se můžete připojit k dříve vytvořenému clusteru Kubernetes, a to buď přes SSH (pomocí klíče SSH zadaného jako součást nasazení), nebo přes kubectl
(doporučeno). Tady je k dispozici nástroj kubectl
příkazového řádku Kubernetes pro Windows, Linux a macOS. Už je předinstalovaný a nakonfigurovaný na hlavních uzlech našeho clusteru:
ssh azureuser@<k8s-master-lb-ip>
Nedoporučuje se používat hlavní uzel jako jumpbox pro úlohy správy. Konfigurace je uložená kubectl
v .kube/config
na hlavních uzlech a také na virtuálním počítači modulu AKS. Konfiguraci můžete zkopírovat na počítač pro správu s připojením ke clusteru Kubernetes a použít příkaz tam kubectl
. Soubor se .kube/config
později použije také ke konfiguraci připojení služby v Azure Pipelines.
Důležité
Tyto soubory zachovejte v bezpečí, protože obsahují přihlašovací údaje pro váš cluster Kubernetes. Útočník s přístupem k souboru má dostatek informací, aby k němu získal přístup správce. Všechny akce, které se provádějí pomocí počátečního .kube/config
souboru, se provádějí pomocí účtu správce clusteru.
Teď můžete zkontrolovat stav clusteru pomocí kubectl
různých příkazů. Tady jsou ukázkové příkazy:
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
Důležité
Kubernetes má vlastní model Access Control na základě rolí (RBAC), který umožňuje vytvářet jemně odstupňované definice rolí a vazby rolí. Toto je vhodnější způsob řízení přístupu ke clusteru místo udělení oprávnění správce clusteru.
Připojení Azure Pipelines ke clusterům Kubernetes
K připojení Azure Pipelines k nově nasazeným clusteru Kubernetes potřebujeme jeho soubor kubeconfig (.kube/config
), jak je vysvětleno v předchozím kroku.
- Připojte se k jednomu z hlavních uzlů clusteru Kubernetes.
- Zkopírujte obsah
.kube/config
souboru. - Přejděte do části Připojení služby Nastavení > projektu Azure DevOps > a vytvořte nové připojení služby Kubernetes (jako metodu ověřování použijte KubeConfig).
Důležité
Azure Pipelines (nebo její agenti sestavení) musí mít přístup k rozhraní Kubernetes API. Pokud existuje internetové připojení ze služby Azure Pipelines ke clusteru Kubernetes služby Azure Stack Hub, budete muset nasadit agenta sestavení Azure Pipelines v místním prostředí.
Při nasazování agentů v místním prostředí pro Azure Pipelines můžete nasazení provést buď ve službě Azure Stack Hub, nebo na počítač se síťovým připojením ke všem požadovaným koncovým bodům správy. Podrobnosti najdete tady:
- Agenti Azure Pipelines ve Windows nebo Linuxu
Část Aspekty nasazení modelu (CI/CD) obsahuje rozhodovací postup, který vám pomůže pochopit, jestli použít agenty hostované Microsoftem nebo agenty v místním prostředí:
Stáhněte si soubor Visia se všemi diagramy v tomto článku.
V tomto ukázkovém řešení topologie zahrnuje agenta sestavení v místním prostředí pro každou instanci služby Azure Stack Hub. Agent má přístup ke koncovým bodům správy služby Azure Stack Hub a koncovým bodům rozhraní API clusteru Kubernetes.
Stáhněte si soubor Visia se všemi diagramy v tomto článku.
Tento návrh splňuje běžný zákonný požadavek, kterým je mít pouze odchozí připojení z řešení aplikace.
Konfigurace sledování
K monitorování kontejnerů v řešení můžete použít Azure Monitor pro kontejnery. Tím azure Monitor odkazuje na cluster Kubernetes nasazený modulem AKS ve službě Azure Stack Hub.
Azure Monitor v clusteru můžete povolit dvěma způsoby. Oba způsoby vyžadují, abyste v Azure nastavili pracovní prostor služby Log Analytics.
V ukázkové topologii se používá "Metoda jedna", která umožňuje automatizaci procesu a snadnější instalaci aktualizací.
V dalším kroku potřebujete pracovní prostor Azure LogAnalytics (ID a klíč) Helm
(verze 3) a kubectl
na svém počítači.
Helm je správce balíčků Kubernetes, který je k dispozici jako binární soubor, který běží v systémech macOS, Windows a Linux. Můžete si ho stáhnout na helm.sh. Helm spoléhá na konfigurační soubor Kubernetes použitý pro kubectl
příkaz :
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
Tento příkaz nainstaluje agenta Azure Monitoru do clusteru Kubernetes:
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
Agent Operations Management Suite (OMS) ve vašem clusteru Kubernetes bude odesílat data monitorování do pracovního prostoru služby Azure Log Analytics (pomocí odchozího protokolu HTTPS). Azure Monitor teď můžete použít k získání hlubších přehledů o clusterech Kubernetes ve službě Azure Stack Hub. Tento návrh představuje účinný způsob, jak předvést sílu analýz, které se dají automaticky nasadit s clustery vaší aplikace.
Důležité
Pokud Azure Monitor nezobrazuje žádná data služby Azure Stack Hub, ujistěte se, že jste pečlivě postupovali podle pokynů k přidání AzureMonitor-Containers řešení do pracovního prostoru služby Azure Log Analytics .
Nasazení aplikace
Před instalací ukázkové aplikace je potřeba v clusteru Kubernetes nakonfigurovat kontroler příchozího přenosu dat založený na nginx. Kontroler příchozího přenosu dat se používá jako nástroj pro vyrovnávání zatížení vrstvy 7 ke směrování provozu v našem clusteru na základě hostitele, cesty nebo protokolu. Příchozí přenos dat Nginx je k dispozici jako chart Helm. Podrobné pokyny najdete v úložišti Helm Chart na GitHubu.
Naše ukázková aplikace je také zabalená jako chart Helm, podobně jako agent monitorování Azure v předchozím kroku. Nasazení aplikace do našeho clusteru Kubernetes je proto jednoduché. Soubory Helm Chart najdete v doprovodné úložišti GitHub.
Ukázková aplikace je třívrstvé aplikace nasazená do clusteru Kubernetes v každé ze dvou instancí služby Azure Stack Hub. Aplikace používá databázi MongoDB. Další informace o tom, jak získat data replikovaná napříč několika instancemi, najdete v tématu Aspekty dat a úložiště.
Po nasazení chartu Helmu pro aplikaci uvidíte všechny tři vrstvy aplikace reprezentované jako nasazení a stavové sady (pro databázi) s jedním podem:
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
Na straně služeb najdete kontroler příchozího přenosu dat založený na nginx a jeho veřejnou IP adresu:
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
Externí IP adresa je náš "koncový bod aplikace". Je to způsob, jak se uživatelé připojí, aby mohli aplikaci otevřít, a použije se také jako koncový bod pro náš další krok Konfigurace Traffic Manageru.
Automatické škálování aplikace
Volitelně můžete horizontální automatické škálování podů nakonfigurovat tak, aby vertikálně navyšoval nebo snižoval kapacitu na základě určitých metrik, jako je využití procesoru. Následující příkaz vytvoří horizontální automatické škálování podů, které udržuje 1 až 10 replik podů řízených nasazením ratings-web. HPA zvýší a sníží počet replik (prostřednictvím nasazení), aby se zachovalo průměrné využití procesoru u všech podů 80 %:
kubectl autoscale deployment ratings-web --cpu-percent=80 --min=1 --max=10
Aktuální stav automatického škálování můžete zkontrolovat spuštěním tohoto příkazu:
kubectl get hpa
NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE
ratings-web Deployment/ratings-web/scale 0% / 80% 1 10 1 18s
Konfigurace služby Traffic Manager
K distribuci provozu mezi dvě (nebo více) nasazení aplikace použijeme Azure Traffic Manager. Azure Traffic Manager je nástroj pro vyrovnávání zatížení provozu založený na DNS v Azure.
Poznámka
Traffic Manager pomocí DNS směruje požadavky klientů do nejvhodnějšího koncového bodu služby na základě metody směrování provozu a stavu koncových bodů.
Místo Azure Traffic Manageru můžete také použít jiná globální řešení pro vyrovnávání zatížení hostovaná místně. V ukázkovém scénáři použijeme Azure Traffic Manager k distribuci provozu mezi dvě instance naší aplikace. Můžou běžet na instancích služby Azure Stack Hub ve stejném nebo jiném umístění:
Stáhněte si soubor Visia se všemi diagramy v tomto článku.
V Azure nakonfigurujeme Traffic Manager tak, aby odkazovat na dvě různé instance naší aplikace:
Jak vidíte, tyto dva koncové body ukazují na dvě instance nasazené aplikace z předchozí části.
V tomto okamžiku:
- Vytvořila se infrastruktura Kubernetes, včetně kontroleru příchozího přenosu dat.
- Clustery se nasadily do dvou instancí služby Azure Stack Hub.
- Monitorování bylo nakonfigurováno.
- Azure Traffic Manager bude vyrovnávat zatížení provozu mezi dvěma instancemi služby Azure Stack Hub.
- Kromě této infrastruktury se ukázková třívrstvé aplikace nasadila automatizovaným způsobem pomocí Helm Charts.
Řešení by teď mělo být dostupné pro uživatele.
Existuje také několik provozních aspektů po nasazení, které stojí za to prodiskutovat, a které jsou popsány v následujících dvou částech.
Upgrade Kubernetes
Při upgradu clusteru Kubernetes zvažte následující témata:
- Upgrade clusteru Kubernetes je složitá operace 2. dne, kterou je možné provést pomocí modulu AKS. Další informace najdete v tématu Upgrade clusteru Kubernetes ve službě Azure Stack Hub.
- Modul AKS umožňuje upgradovat clustery na novější verze kubernetes a základní verze imagí operačního systému. Další informace najdete v tématu Postup upgradu na novější verzi Kubernetes.
- Na novější základní verze imagí operačního systému můžete také upgradovat jenom základní uzly. Další informace najdete v tématu Postup upgradu pouze image operačního systému.
Novější základní image operačního systému obsahují aktualizace zabezpečení a jádra. Za monitorování dostupnosti novějších verzí Kubernetes a imagí operačního systému zodpovídá operátor clusteru. Operátor by měl tyto upgrady naplánovat a spustit pomocí modulu AKS. Základní image operačního systému musí stáhnout z Marketplace služby Azure Stack Hub operátor služby Azure Stack Hub.
Škálování Kubernetes
Škálování je další operace 2. dne, kterou je možné orchestrovat pomocí modulu AKS.
Příkaz pro škálování znovu použije konfigurační soubor clusteru (apimodel.json) ve výstupním adresáři jako vstup pro nové nasazení Azure Resource Manager. Modul AKS provede operaci škálování pro konkrétní fond agentů. Po dokončení operace škálování aktualizuje modul AKS definici clusteru ve stejném souboru apimodel.json. Definice clusteru odráží počet nových uzlů, aby odrážela aktualizovanou aktuální konfiguraci clusteru.
Další kroky
- Přečtěte si další informace o aspektech návrhu hybridních aplikací.
- Projděte si a navrhněte vylepšení kódu pro tuto ukázku na GitHubu.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro