Nasazení clusteru Kubernetes s vysokou dostupností v centru Azure Stack
V tomto článku se dozvíte, jak vytvořit vysoce dostupné prostředí clusteru Kubernetes nasazené na více instancích centra Azure Stack v různých fyzických umístěních.
V tomto průvodci nasazením řešení se dozvíte, jak:
- Stažení a příprava modulu AKS
- Připojení k virtuálnímu počítači pomocníka pro modul AKS
- Nasazení clusteru Kubernetes
- Připojení ke clusteru Kubernetes
- Připojení Azure Pipelines do 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 Rozbočovač Stack je rozšíření Azure. Centrum Azure Stack přináší flexibilitu a inovace cloud computingu do místního prostředí. tím se umožní jenom hybridní cloud, který umožňuje vytvářet a nasazovat hybridní aplikace odkudkoli.
Články týkající se návrhu hybridní aplikace prověří pilíře kvality softwaru (umístění, škálovatelnost, dostupnost, odolnost, možnosti správy a zabezpečení) pro navrhování, nasazování a provozování hybridních aplikací. Pokyny k návrhu pomáhají při optimalizaci návrhu hybridní aplikace a minimalizaci výzev v produkčních prostředích.
Požadavky
Než začnete s tímto průvodcem nasazením, nezapomeňte:
- Projděte si článek o vzoru clusteru Kubernetes s vysokou dostupností .
- zkontrolujte obsah doprovodného GitHub úložiště, které obsahuje další prostředky, na které se odkazuje v tomto článku.
- Mít účet, který má přístup k portálu pro uživatele centra Azure Stack, s alespoň oprávněními Přispěvatel.
Stažení a příprava AKS Engine
modul AKS je binární soubor, který se dá použít z libovolného hostitele Windows nebo Linux, který se může dostat do koncových bodů Azure Stack centra Azure Resource Manager. tato příručka popisuje nasazení nového virtuálního počítače se systémem Linux (nebo Windows) v centru Azure Stack. Později se použije v případě, že AKS modul nasadí clustery Kubernetes.
Poznámka
můžete také použít stávající virtuální počítač Windows nebo Linux k nasazení clusteru Kubernetes v centru Azure Stack pomocí stroje AKS.
Podrobný proces a požadavky na modul AKS jsou popsané tady:
Modul AKS je pomocný nástroj pro nasazení a provozování (nespravovaných) Kubernetes clusterů (v Azure a centru Azure Stack).
Podrobnosti a rozdíly modulu AKS na rozbočovači Azure Stack jsou popsány zde:
Ukázkové prostředí použije Terraformu k automatizaci nasazení virtuálního počítače modulu AKS. podrobnosti a kód můžete najít v doprovodném GitHub úložišti.
Výsledkem tohoto kroku je nová skupina prostředků v Azure Stack hub, která obsahuje pomocný virtuální počítač pro modul AKS a související prostředky:

Poznámka
Pokud potřebujete nasadit modul AKS v odpojeném prostředí gapped, přečtěte si téma odpojené instance centra Azure Stack , kde se dozvíte víc.
V dalším kroku použijeme nově nasazený virtuální počítač AKS Engine k nasazení clusteru Kubernetes.
Připojení k virtuálnímu počítači pomocníka pro modul AKS
Nejprve se musíte připojit k dříve vytvořenému virtuálnímu počítači pomocníka AKS Engine.
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 se systémem Linux pomocí protokolu SSH můžete použít libovolný nástroj, třeba MobaXterm, výstup 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 části podporované verze modulu AKS .

Nasazení clusteru Kubernetes
Samotný pomocný virtuální počítač modulu AKS ještě nevytvořil cluster Kubernetes v našem centru Azure Stack. Vytvoření clusteru je první akce, která se má provést na virtuálním počítači pomocníka s modulem AKS.
Podrobný postup je popsán zde:
Konečný výsledek aks-engine deploy příkazu a přípravy v předchozích krocích je plně funkční cluster Kubernetes nasazený do prostoru klienta první instance centra Azure Stack. 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 a tak dále.

- Nástroj pro vyrovnávání zatížení Azure (koncový bod rozhraní K8s API)
- Pracovní uzly (fond agentů)
- Hlavní uzly
Cluster je teď v provozu a v dalším kroku se k němu připojíme.
Připojení ke clusteru Kubernetes
Nyní se můžete připojit k dříve vytvořenému clusteru Kubernetes, a to buď prostřednictvím protokolu SSH (pomocí klíče SSH zadaného jako součást nasazení), nebo prostřednictvím kubectl (doporučeno). nástroj příkazového řádku Kubernetes kubectl je k dispozici pro Windows, Linux a macOS . Je už předem nainstalovaný a nakonfigurovaný na hlavních uzlech tohoto clusteru:
ssh azureuser@<k8s-master-lb-ip>

Nedoporučujeme používat hlavní uzel jako JumpBox pro úlohy správy. kubectlKonfigurace je uložena v nástroji .kube/config na hlavních uzlech a také na virtuálním počítači modulu AKS. Konfiguraci můžete zkopírovat do počítače správce s připojením k Kubernetes clusteru a použít kubectl příkaz. .kube/configSoubor se používá také později ke konfiguraci připojení služby v Azure Pipelines.
Důležité
Tyto soubory udržujte 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 mohl získat 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.
Nyní můžete vyzkoušet různé příkazy pomocí nástroje kubectl a zkontrolovat stav clusteru. Tady jsou příklady příkazů:
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á svůj vlastní model správy na Access Control základě rolí (RBAC) , který umožňuje vytvářet jemně odstupňované definice rolí a vazby rolí. Toto je vhodnější způsob, jak řídit přístup ke clusteru místo ručního nastavení oprávnění správce clusteru.
Připojení Azure Pipelines do clusterů Kubernetes
k připojení Azure Pipelines k nově nasazenému clusteru Kubernetes potřebujeme svůj soubor kubeconfig ( .kube/config ), jak je vysvětleno v předchozím kroku.
- Připojení k jednomu z hlavních uzlů clusteru Kubernetes.
- Zkopírujte obsah
.kube/configsouboru. - pokud chcete vytvořit nové připojení služby Kubernetes (použijte KubeConfig jako metodu ověřování), přejdete na Azure DevOps > Project Nastavení > připojení služby.
Důležité
Azure Pipelines (nebo jeho agenti sestavení) musí mít přístup k rozhraní Kubernetes API. pokud je k dispozici připojení k internetu z Azure Pipelines do clusteru služby Azure Stack Hub Kubernetes, budete muset nasadit agenta pro samoobslužné Azure Pipelines sestavení.
při nasazování agentů pro samoobslužné hostování pro Azure Pipelines můžete nasadit buď v centru Azure Stack, nebo na počítači, který má síťové připojení ke všem požadovaným koncovým bodům správy. Podrobnosti najdete tady:
- agenti Azure Pipelines v Windows nebo Linux
Část s informacemi pro nasazení vzoru (CI/CD) obsahuje rozhodovací tok, který vám pomůže pochopit, jestli se mají používat agenti hostovaná Microsoftem nebo agenti s místním hostováním:
V tomto ukázkovém řešení zahrnuje topologie agent sestavení v místním prostředí v každé instanci centra Azure Stack. Agent má přístup ke koncovým bodům správy centra Azure Stack a koncovým bodům rozhraní API clusteru Kubernetes.
Tento návrh splňuje společný regulativní požadavek, který má pouze odchozí připojení z řešení aplikace.
Konfigurace sledování
Můžete použít Azure monitor pro kontejnery k monitorování kontejnerů v řešení. Tyto body Azure Monitor clusteru Kubernetes nasazeného pro modul AKS v centru Azure Stack.
Existují dva způsoby, jak povolit Azure Monitor v clusteru. Oba způsoby vyžadují, abyste si nastavili pracovní prostor Log Analytics v Azure.
- Metoda One používá Helm graf.
- Metoda 2 jako součást specifikace clusteru AKS Engine
V ukázkové topologii je použita "metoda One", která umožňuje snazší instalaci procesu a aktualizací.
Pro další krok potřebujete pracovní prostor Azure LogAnalytics (ID a klíč), Helm (verze 3) a kubectl na vašem počítači.
Helm je Kubernetes správce balíčků, který je dostupný jako binární soubor, který je spuštěný v macOS, Windows a Linux. Dá se stáhnout na adrese Helm.sh. Helm spoléhá na konfigurační soubor Kubernetes, který se používá 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 Monitor 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) v clusteru Kubernetes odešle data monitorování do vašeho pracovního prostoru Azure Log Analytics (pomocí odchozího protokolu HTTPS). Teď můžete pomocí Azure Monitor získat hlubší přehled o clusterech Kubernetes v centru Azure Stack. Tento návrh představuje účinný způsob, jak předvést výkon analýz, které se dají automaticky nasadit do clusterů vaší aplikace.
Důležité
Pokud Azure Monitor nezobrazuje žádná data centra Azure Stack, ujistěte se, že jste postupovali podle pokynů, jak přidat AzureMonitor-Containers řešení do pracovního prostoru Azure Log Analytics pečlivě.
Nasazení aplikace
Před instalací naší ukázkové aplikace je k dispozici další krok konfigurace nginx řadiče pro příchozí přenos dat v našem clusteru Kubernetes. 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 založeném na hostiteli, cestě nebo protokolu. Nginx – příchozí je k dispozici jako graf Helm. podrobné pokyny najdete v grafu Helm GitHub úložišti.
Naše ukázková aplikace je také zabalena jako Helm graf, jako je například Agent Azure Monitoring v předchozím kroku. V takovém případě je jednoduché nasadit aplikaci do našeho clusteru Kubernetes. soubory grafu Helm můžete najít v doprovodném úložišti GitHub .
Ukázková aplikace je tři aplikace vrstev nasazená do clusteru Kubernetes v každé ze dvou instancí centra Azure Stack. Aplikace používá databázi MongoDB. přečtěte si další informace o tom, jak získat data replikovaná napříč několika instancemi v datech vzorů a Storagech důležitých informací.
Po nasazení grafu Helm pro aplikaci uvidíte všechny tři úrovně vaší aplikace, které jsou reprezentovány jako nasazení a stavové sady (pro databázi), jedním pod:
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žby najdete Nginx kontroler příchozího přenosu dat 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
Adresa externí IP adresy je naším koncovým bodem aplikace. Je to způsob, jakým se uživatelé připojí k otevření aplikace a použijí se taky jako koncový bod pro náš další krok konfigurace Traffic Manager.
Automatické škálování aplikace
Volitelně můžete nakonfigurovat automatické škálování vodorovně pod , abyste mohli škálovat nahoru nebo dolů na základě určitých metrik, jako je využití procesoru. Následující příkaz vytvoří horizontální horizontální navýšení, které udržuje 1 až 10 replik v Luskech kontrolovaných pomocí nasazení webu hodnocení. HPA zvýší a sníží počet replik (přes nasazení) a zachová průměrné využití procesoru napříč všemi lusky 80%:
kubectl autoscale deployment ratings-web --cpu-percent=80 --min=1 --max=10
Aktuální stav automatického škálování můžete ověřit 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ěma (nebo více) nasazeními aplikace použijeme Azure Traffic Manager. Azure Traffic Manager je nástroj pro vyrovnávání zatížení pro provoz založený na DNS v Azure.
Poznámka
Traffic Manager používá DNS k přímému směrování požadavků klientů na nejvhodnější koncový bod služby na základě metody směrování provozu a stavu koncových bodů.
místo použití Azure Traffic Manager můžete také použít jiná globální řešení 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ěma instancemi naší aplikace. Můžou běžet na instancích centra Azure Stack ve stejném nebo různých umístěních:

v Azure nakonfigurujeme Traffic Manager tak, aby odkazovaly na dvě různé instance naší aplikace:
Jak vidíte, dva koncové body ukazují na dvě instance nasazené aplikace z předchozí části.
V tomto okamžiku:
- Byla vytvořena infrastruktura Kubernetes, včetně kontroleru příchozího přenosu dat.
- Clustery byly nasazeny v rámci dvou Azure Stackch instancí centra.
- Monitorování bylo nakonfigurováno.
- Azure Traffic Manager bude vyrovnávat zatížení napříč dvěma instancemi centra Azure Stack.
- V horní části této infrastruktury se ukázková aplikace nasadila automatizovaným způsobem pomocí Helm grafů.
Řešení by teď mělo být dostupné pro uživatele.
K dispozici jsou také některé provozní předpoklady po nasazení, které jsou zahrnuty v následujících dvou částech.
Upgrade Kubernetes
Při upgradu clusteru Kubernetes Vezměte v úvahu následující témata:
- Upgrade clusteru Kubernetes je složitá operace dne 2, kterou je možné provést pomocí stroje AKS. Další informace najdete v tématu upgrade clusteru Kubernetes na rozbočovači Azure Stack.
- Modul AKS vám umožňuje upgradovat clustery na novější verze Kubernetes a základní image operačního systému. Další informace najdete v tématu Postup upgradu na novější verzi Kubernetes.
- Můžete také upgradovat pouze základní uzly na novější verze základní image operačního systému. Další informace najdete v tématu Postup upgradu image operačního systému.
Novější image základního operačního systému obsahují aktualizace zabezpečení a jádra. Je zodpovědností operátora clusteru sledovat dostupnost novějších verzí Kubernetes a imagí operačních systémů. Operátor by měl naplánovat a spustit tyto upgrady pomocí AKS Engine. Základní image operačního systému se musí stáhnout z webu centra Azure Stack pomocí operátoru centra Azure Stack.
Škálování Kubernetes
Škálování je další operace dne 2, kterou je možné orchestrovat pomocí AKS Engine.
Příkaz Scale znovu použije váš konfigurační soubor clusteru (apimodel. JSON) ve výstupním adresáři jako vstup pro nové nasazení Azure Resource Manager. AKS Engine provádí operaci škálování proti určitému fondu agentů. Až se operace škálování dokončí, modul AKS aktualizuje definici clusteru ve stejném souboru apimodel. JSON. Definice clusteru odráží nové počty uzlů, aby odrážela aktualizovanou aktuální konfiguraci clusteru.
Další kroky
- Přečtěte si další informace o požadavcích na návrh hybridní aplikace.
- Přečtěte si a navrhněte vylepšení kódu pro tuto ukázku na GitHub.




