Nasazení kontejneru Windows Serveru v clusteru Azure Kubernetes Service (AKS) pomocí Azure CLI
Azure Kubernetes Service (AKS) je spravovaná služba Kubernetes, která umožňuje rychle nasazovat a spravovat clustery. V tomto článku použijete Azure CLI k nasazení clusteru AKS, na kterém běží kontejnery Windows Serveru. Do clusteru také nasadíte ukázkovou aplikaci ASP.NET v kontejneru Windows Serveru.
Poznámka:
Pokud chcete začít rychle zřizovat cluster AKS, najdete v tomto článku postup nasazení clusteru s výchozím nastavením pouze pro účely vyhodnocení. Před nasazením clusteru připraveného pro produkční prostředí doporučujeme seznámit se s naší referenční architekturou podle směrného plánu a zvážit, jak je v souladu s vašimi obchodními požadavky.
Než začnete
Tento rychlý start předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Tento článek vyžaduje verzi 2.0.64 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je tam už nainstalovaná nejnovější verze.
- Ujistěte se, že identita, kterou používáte k vytvoření clusteru, má odpovídající minimální oprávnění. Další podrobnosti o přístupu a identitě pro AKS najdete v tématu Možnosti přístupu a identit pro Službu Azure Kubernetes Service (AKS).
- Pokud máte více předplatných Azure, vyberte odpovídající ID předplatného, ve kterém se mají prostředky fakturovat pomocí příkazu az account set . Další informace najdete v tématu Správa předplatných Azure – Azure CLI.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure. Když vytvoříte skupinu prostředků, zobrazí se výzva k zadání umístění. V tomto umístění jsou uložena metadata skupiny prostředků a kde se vaše prostředky spouští v Azure, pokud během vytváření prostředků nezadáte jinou oblast.
Vytvořte skupinu prostředků pomocí příkazu az group create . Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus. Do prostředí BASH zadejte tento příkaz a další příkazy v tomto článku:
az group create --name myResourceGroup --location eastus
Následující ukázkový výstup ukazuje, že skupina prostředků byla úspěšně vytvořena:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": null }
Vytvoření clusteru AKS
V této části vytvoříme cluster AKS s následující konfigurací:
- Cluster je nakonfigurovaný se dvěma uzly, aby se zajistilo, že spolehlivě funguje. Uzel je virtuální počítač Azure, na kterém běží komponenty uzlu Kubernetes a modul runtime kontejneru.
- Parametry
--windows-admin-password
a--windows-admin-username
přihlašovací údaje správce nastavují pro všechny uzly Windows Serveru v clusteru a musí splňovat požadavky na heslo Windows Serveru. - Fond uzlů používá
VirtualMachineScaleSets
.
Pokud chcete vytvořit cluster AKS pomocí Azure CLI, postupujte takto:
Vytvořte uživatelské jméno, které se použije jako přihlašovací údaje správce pro uzly Windows Serveru ve vašem clusteru. Následující příkazy zobrazí výzvu k zadání uživatelského jména a nastaví ho na WINDOWS_USERNAME pro pozdější použití.
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
Vytvořte heslo pro uživatelské jméno správce, které jste vytvořili v předchozím kroku. Heslo musí mít minimálně 14 znaků a musí splňovat požadavky na složitost hesla Windows Serveru.
echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
Vytvořte cluster pomocí příkazu az aks create a zadejte parametry
--windows-admin-username
.--windows-admin-password
Následující ukázkový příkaz vytvoří cluster s použitím hodnoty z WINDOWS_USERNAME , kterou jste nastavili v předchozím příkazu. Alternativně můžete místo použití WINDOWS_USERNAME zadat jiné uživatelské jméno přímo v parametru.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --enable-addons monitoring \ --generate-ssh-keys \ --windows-admin-username $WINDOWS_USERNAME \ --windows-admin-password $WINDOWS_PASSWORD \ --vm-set-type VirtualMachineScaleSets \ --network-plugin azure
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON. V některých případech může zřízení clusteru trvat déle než několik minut. Povolte zřizování až 10 minut.
Pokud se zobrazí chyba ověření hesla a nastavené heslo splňuje požadavky na délku a složitost, zkuste vytvořit skupinu prostředků v jiné oblasti. Pak zkuste vytvořit cluster s novou skupinou prostředků.
Pokud při vytváření fondu uzlů nezadáte uživatelské jméno a heslo správce, uživatelské jméno se nastaví na azureuser a heslo se nastaví na náhodnou hodnotu. Další informace najdete v nejčastějších dotazech k Windows Serveru.
Uživatelské jméno správce nelze změnit, ale můžete změnit heslo správce, které váš cluster AKS používá pro uzly Windows Serveru pomocí
az aks update
. Další informace najdete v nejčastějších dotazech k Windows Serveru.Pokud chcete spustit cluster AKS, který podporuje fondy uzlů pro kontejnery Windows Serveru, musí váš cluster použít zásady sítě, které používají síťový modul plug-in Azure CNI (advanced). Parametr
--network-plugin azure
určuje Azure CNI.
Přidání fondu uzlů
Ve výchozím nastavení se cluster AKS vytvoří s fondem uzlů, který může spouštět kontejnery Linuxu. Musíte přidat další fond uzlů, který může spouštět kontejnery Windows Serveru společně s fondem uzlů Linuxu.
Windows Server 2022 je výchozí operační systém pro Kubernetes verze 1.25.0 a vyšší. Windows Server 2019 je výchozím operačním systémem pro starší verze. Pokud neurčíte konkrétní skladovou položku operačního systému, Azure vytvoří nový fond uzlů s výchozí skladovou jednotkou pro verzi Kubernetes používanou clusterem.
- Fond uzlů Windows (výchozí skladová položka)
- Fond uzlů Windows Serveru 2022
- Fond uzlů Windows Serveru 2019
Pokud chcete použít výchozí skladovou položku operačního systému, vytvořte fond uzlů bez zadání skladové položky operačního systému. Fond uzlů je nakonfigurovaný pro výchozí operační systém založený na verzi Kubernetes clusteru.
Přidejte fond uzlů Systému Windows pomocí az aks nodepool add
příkazu. Následující příkaz vytvoří nový fond uzlů s názvem npwin a přidá ho do myAKSCluster. Příkaz také používá výchozí podsíť ve výchozí virtuální síti vytvořenou při spuštění az aks create
. Není zadaná skladová položka operačního systému, takže fond uzlů je nastavený na výchozí operační systém založený na verzi Kubernetes clusteru:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
Připojení ke clusteru
Ke správě clusterů Kubernetes použijete kubectl, klienta příkazového řádku Kubernetes. Pokud používáte Azure Cloud Shell, kubectl
je už nainstalovaný. Pokud chcete nainstalovat a spustit kubectl
místně, zavolejte příkaz az aks install-cli .
Nakonfigurujte
kubectl
připojení ke clusteru Kubernetes pomocí příkazu az aks get-credentials . Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Pomocí příkazu kubectl get ověřte připojení ke clusteru, který vrátí seznam uzlů clusteru.
kubectl get nodes -o wide
Následující ukázkový výstup ukazuje všechny uzly v clusteru. Ujistěte se, že je stav všech uzlů připravený:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 10.224.0.4 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 10.224.0.33 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aksnpwin000000 Ready agent 20h v1.27.7 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.2159 containerd://1.6.21+azure
Poznámka:
Modul runtime kontejneru pro každý fond uzlů se zobrazí v části CONTAINER-RUNTIME. Hodnoty modulu runtime kontejneru začínají
containerd://
hodnotou , což znamená, že se používajícontainerd
pro modul runtime kontejneru.
Nasazení aplikace
Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například jaké image kontejneru se mají spustit. V tomto článku pomocí manifestu vytvoříte všechny objekty potřebné ke spuštění ukázkové aplikace ASP.NET v kontejneru Windows Serveru. Tento manifest zahrnuje nasazení Kubernetes pro ukázkovou aplikaci ASP.NET a externí službu Kubernetes pro přístup k aplikaci z internetu.
Ukázková aplikace ASP.NET je poskytována jako součást ukázek rozhraní .NET Framework a běží v kontejneru Windows Serveru. AKS vyžaduje, aby kontejnery Windows Serveru byly založené na imagích Windows Serveru 2019 nebo novějších. Soubor manifestu Kubernetes musí také definovat selektor uzlu, který vašemu clusteru AKS řekne, aby spustil pod ukázkové aplikace ASP.NET na uzlu, který může spouštět kontejnery Windows Serveru.
Vytvořte soubor s názvem
sample.yaml
a zkopírujte ho v následující definici YAML.apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample
Rozpis souborů manifestu YAML najdete v tématu Nasazení a manifesty YAML.
Pokud soubor YAML vytvoříte a uložíte místně, můžete soubor manifestu nahrát do výchozího adresáře v CloudShellu tak , že vyberete tlačítko Nahrát/Stáhnout soubory a vyberete soubor z místního systému souborů.
Nasaďte aplikaci pomocí příkazu kubectl apply a zadejte název manifestu YAML.
kubectl apply -f sample.yaml
Následující ukázkový výstup ukazuje úspěšné vytvoření nasazení a služby:
deployment.apps/sample created service/sample created
Testování aplikace
Když se aplikace spustí, služba Kubernetes zveřejní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut. Občas může zřízení služby trvat déle než několik minut. Povolte zřizování až 10 minut.
Pomocí příkazu kubectl get pods zkontrolujte stav nasazených podů. Než budete pokračovat, udělejte všechny pody
Running
.kubectl get pods
Sledujte průběh pomocí příkazu kubectl get service s argumentem
--watch
.kubectl get service sample --watch
Na začátku výstup zobrazí externí IP adresu ukázkové služby jako čekající:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Když se externí IP adresa změní z čekání na skutečnou
kubectl
veřejnou IP adresu, použijteCTRL-C
k zastavení procesu sledování. Následující ukázkový výstup ukazuje platnou veřejnou IP adresu přiřazenou službě:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Prohlédněte si ukázkovou aplikaci v akci otevřením webového prohlížeče na externí IP adresu vaší služby.
Odstranění prostředků
Pokud nechcete projít kurzem AKS, měli byste cluster odstranit, abyste se vyhnuli poplatkům za Azure.
Pomocí příkazu az group delete odstraňte skupinu prostředků, službu kontejneru a všechny související prostředky.
az group delete --name myResourceGroup --yes --no-wait
Poznámka:
Cluster AKS byl vytvořen pomocí spravované identity přiřazené systémem (výchozí možnost identity použitá v tomto rychlém startu). Platforma Azure tuto identitu spravuje, takže nevyžaduje odebrání.
Další kroky
V tomto rychlém startu jste nasadili cluster Kubernetes a pak jste do něj nasadili ukázkovou aplikaci ASP.NET v kontejneru Windows Serveru. Tato ukázková aplikace slouží jenom pro ukázkové účely a nepředstavuje všechny osvědčené postupy pro aplikace Kubernetes. Pokyny k vytváření úplných řešení pomocí AKS pro produkční prostředí najdete v pokynech k řešení AKS.
Pokud chcete získat další informace o AKS a projít si kompletní příklad nasazení kódu k nasazení, pokračujte kurzem clusteru Kubernetes.
Azure Kubernetes Service