Nasazení kontejneru Windows Serveru v clusteru Azure Kubernetes Service (AKS) pomocí PowerShellu
Azure Kubernetes Service (AKS) je spravovaná služba Kubernetes, která umožňuje rychle nasazovat a spravovat clustery. V tomto článku použijete Azure PowerShell 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.
Pro usnadnění použití vyzkoušejte prostředí PowerShell ve službě Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Azure Cloud Shell.
Pokud chcete použít PowerShell místně, nainstalujte modul Az PowerShell a připojte se ke svému účtu Azure pomocí rutiny Connect-AzAccount . Ujistěte se, že příkazy spouštíte s oprávněními správce. Další informace najdete v tématu Instalace Azure PowerShellu.
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 než jedno předplatné Azure, nastavte předplatné, které chcete použít pro rychlý start zavoláním rutiny Set-AzContext . Další informace najdete v tématu Správa předplatných Azure pomocí Azure PowerShellu.
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.
K vytvoření skupiny prostředků použijte rutinu New-AzResourceGroup . Následující příklad vytvoří skupinu prostředků myResourceGroup v oblasti eastus.
New-AzResourceGroup -Name myResourceGroup -Location eastus
Následující ukázkový výstup ukazuje, že skupina prostředků byla úspěšně vytvořena:
ResourceGroupName : myResourceGroup
Location : eastus
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup
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
-WindowsProfileAdminUserName
a-WindowsProfileAdminUserPassword
přihlašovací údaje správce nastavují pro všechny uzly Windows Serveru v clusteru a musí splňovat požadavky na složitost hesla Windows Serveru. - Fond uzlů používá
VirtualMachineScaleSets
.
Pokud chcete vytvořit cluster AKS pomocí Azure PowerShellu, postupujte takto:
Pomocí následujícího příkazu vytvořte přihlašovací údaje správce pro kontejnery Windows Serveru. Tento příkaz vás vyzve k zadání a
WindowsProfileAdminUserName
WindowsProfileAdminUserPassword
. Heslo musí mít minimálně 14 znaků a musí splňovat požadavky na složitost hesla Windows Serveru.$AdminCreds = Get-Credential ` -Message 'Please create the administrator credentials for your Windows Server containers'
Vytvořte cluster pomocí rutiny New-AzAksCluster a zadejte parametry
WindowsProfileAdminUserName
.WindowsProfileAdminUserPassword
New-AzAksCluster -ResourceGroupName myResourceGroup ` -Name myAKSCluster ` -NodeCount 2 ` -NetworkPlugin azure ` -NodeVmSetType VirtualMachineScaleSets ` -WindowsProfileAdminUserName $AdminCreds.UserName ` -WindowsProfileAdminUserPassword $secureString ` -GenerateSshKey
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)][azure-cni]. Parametr
-NetworkPlugin 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ů Windows Serveru pomocí rutiny New-AzAksNodePool . 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í New-AzAksCluster
:
New-AzAksNodePool -ResourceGroupName myResourceGroup `
-ClusterName myAKSCluster `
-VmSetType VirtualMachineScaleSets `
-OsType Windows `
-Name npwin
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 kubectl
místně, můžete použít tuto rutinu Install-AzAzAksCliTool
.
Nakonfigurujte
kubectl
připojení ke clusteru Kubernetes pomocí rutiny Import-AzAksCredential . Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
Pomocí příkazu kubectl get ověřte připojení ke clusteru, který vrátí seznam uzlů clusteru.
kubectl get nodes
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 aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 aksnpwin000000 Ready agent 21h v1.27.7
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, odstraňte cluster, abyste se vyhnuli poplatkům za Azure. Voláním rutiny Remove-AzResourceGroup odeberte skupinu prostředků, službu kontejneru a všechny související prostředky.
Remove-AzResourceGroup -Name myResourceGroup
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