Vytvoření 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 nasadíte cluster AKS, ve kterém běží kontejnery Windows Serveru 2019, pomocí Azure CLI. Do clusteru také nasadíte ukázkovou aplikaci ASP.NET v kontejneru Windows Serveru.
Tento článek předpokládá základní znalost konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Azure Kubernetes Service (AKS).
Pokud nemáte předplatné Azure, vytvořte si bezplatný účet Azure , než začnete.
Požadavky
Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.
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 azure CLI verze 2.0.64 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
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 identity pro Azure Kubernetes Service (AKS).
Pokud máte více předplatných Azure, vyberte příslušné ID předplatného, ve kterém se mají prostředky fakturovat, pomocí příkazu az account .
Ověřte, že jsou ve vašem předplatném zaregistrovaní poskytovatelé Microsoft.OperationsManagement a Microsoft.OperationalInsights . Toto jsou poskytovatelé prostředků Azure, kteří jsou potřební k podpoře container insights. Pokud chcete zkontrolovat stav registrace, spusťte následující příkazy:
az provider show -n Microsoft.OperationsManagement -o table az provider show -n Microsoft.OperationalInsights -o table
Pokud nejsou zaregistrované, zaregistrujte Microsoft.OperationsManagement a Microsoft.OperationalInsights pomocí následujících příkazů:
az provider register --namespace Microsoft.OperationsManagement az provider register --namespace Microsoft.OperationalInsights
Poznámka
Pokud plánujete spouštět příkazy v tomto rychlém startu místně místo v Azure Cloud Shell, spusťte příkazy s oprávněními správce.
Omezení
Při vytváření a správě clusterů AKS, které podporují více fondů uzlů, platí následující omezení:
- První fond uzlů není možné odstranit.
Na fondy uzlů Windows Serveru platí následující další omezení:
- Cluster AKS může mít maximálně 10 fondů uzlů.
- Cluster AKS může mít v každém fondu uzlů maximálně 100 uzlů.
- Název fondu uzlů Windows Serveru má maximálně 6 znaků.
Vytvoření skupiny prostředků
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure. Při vytváření skupiny prostředků se zobrazí výzva k zadání umístění. V tomto umístění se ukládají metadata skupiny prostředků. Pokud během vytváření prostředků nezadáte jinou oblast, vaše prostředky se také spouští v Azure. 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.
Poznámka
Tento článek používá syntaxi Bash pro příkazy v tomto kurzu. Pokud používáte Azure Cloud Shell, ujistěte se, že je rozevírací seznam v levém horním rohu okna Cloud Shell nastavený na Bash.
az group create --name myResourceGroup --location eastus
Následující příklad výstupu ukazuje úspěšně vytvořenou skupinu prostředků:
{
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": null
}
Vytvoření clusteru AKS
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í modul plug-in sítě Azure CNI (advanced). Podrobnější informace, které vám pomůžou naplánovat požadované rozsahy podsítí a důležité informace o síti, najdete v tématu Konfigurace sítě Azure CNI. Pomocí příkazu az aks create vytvořte cluster AKS s názvem myAKSCluster. Tento příkaz vytvoří potřebné síťové prostředky, pokud neexistují.
- Cluster je nakonfigurovaný se dvěma uzly.
- Parametry
--windows-admin-password
a--windows-admin-username
nastaví přihlašovací údaje správce pro všechny uzly Windows Serveru v clusteru a musí splňovat požadavky na heslo Windows Serveru. Pokud parametr nezadáte--windows-admin-password
, zobrazí se výzva k zadání hodnoty. - Fond uzlů používá
VirtualMachineScaleSets
.
Poznámka
Abyste zajistili spolehlivý provoz clusteru, měli byste ve výchozím fondu uzlů spustit alespoň 2 (dva) uzly.
Vytvořte uživatelské jméno, které se použije jako přihlašovací údaje správce pro uzly Windows Serveru v clusteru. Následující příkazy vás vyzve k zadání uživatelského jména a nastavte ho na WINDOWS_USERNAME pro použití v pozdějším příkazu (nezapomeňte, že příkazy v tomto článku se zadávají do prostředí BASH).
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
Vytvořte cluster a zajistěte, abyste zadali --windows-admin-username
parametr. Následující ukázkový příkaz vytvoří cluster pomocí hodnoty z WINDOWS_USERNAME , kterou jste nastavili v předchozím příkazu. Případně můžete zadat jiné uživatelské jméno přímo v parametru místo použití WINDOWS_USERNAME. Následující příkaz vás také vyzve k vytvoření hesla pro přihlašovací údaje správce pro uzly Windows Serveru v clusteru. Případně můžete použít --windows-admin-password
parametr a zadat vlastní hodnotu.
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 2 \
--enable-addons monitoring \
--generate-ssh-keys \
--windows-admin-username $WINDOWS_USERNAME \
--vm-set-type VirtualMachineScaleSets \
--network-plugin azure
Poznámka
Pokud se zobrazí chyba ověřování hesla, ověřte, že nastavené heslo splňuje požadavky na heslo windows serveru. Pokud vaše heslo splňuje požadavky, zkuste vytvořit skupinu prostředků v jiné oblasti. Pak zkuste cluster vytvořit s novou skupinou prostředků.
Pokud nezadáte uživatelské jméno a heslo správce při nastavení --vm-set-type VirtualMachineScaleSets
a --network-plugin azure
, uživatelské jméno se nastaví na azureuser a heslo se nastaví na náhodnou hodnotu.
Uživatelské jméno správce nejde změnit, ale heslo správce, které cluster AKS používá pro uzly Windows Serveru, můžete změnit pomocí az aks update
. Další podrobnosti najdete v nejčastějších dotazech k fondům uzlů Windows Serveru.
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON. Někdy může zřízení clusteru trvat déle než několik minut. V těchto případech povolte až 10 minut.
Přidání fondu uzlů Windows
Ve výchozím nastavení se cluster AKS vytvoří s fondem uzlů, který může spouštět kontejnery Linuxu. az aks nodepool add
Pomocí příkazu přidejte další fond uzlů, který může spouštět kontejnery Windows Serveru společně s fondem uzlů Linuxu.
AKS podporuje fondy uzlů Windows Server 2019 a Windows Server 2022. Pro Kubernetes 1.25 a novější je Windows Server 2022 výchozím operačním systémem a jedinou možností v Kubernetes 1.33 a novějších. Ve starších verzích bude výchozím operačním systémem Windows Server 2019.
Pomocí příkazu az aks nodepool add
přidejte fond uzlů Windows:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
Výše uvedený příkaz vytvoří nový fond uzlů npwin a přidá ho do myAKSCluster. Výše uvedený příkaz také používá výchozí podsíť ve výchozí virtuální síti vytvořené při spuštění az aks create
příkazu . Skladová položka operačního systému nebyla zadána, takže fond uzlů se nastaví na výchozí operační systém na základě verze clusteru Kubernetes.
Přidání fondu uzlů Windows Serveru 2019
Poznámka
Windows Server 2019 se vyřazuje, jakmile Kubernetes verze 1.32 dosáhne konce životnosti (EOL) a nebude podporován v budoucích verzích. Další informace o tomto vyřazení najdete v [poznámkách k verzi AKS][aks-release-notes].
Při vytváření fondu uzlů Windows bude výchozím operačním systémem v Kubernetes verze 1.24 nebo starší Windows Server 2019. Pokud chcete použít fondy uzlů Windows Serveru 2019, když není výchozí možnost, musíte zadat typ skladové položky operačního systému Windows2019
.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--os-sku Windows2019 \
--name npwin \
--node-count 1
Výše uvedený příkaz vytvoří nový fond uzlů Windows Serveru 2019 s názvem npwin a přidá ho do myAKSCluster. Výše uvedený příkaz také používá výchozí podsíť ve výchozí virtuální síti vytvořené při spuštění az aks create
příkazu .
Přidání fondu uzlů Systému Windows Server 2022
Při vytváření fondu uzlů Windows bude pro Kubernetes 1.25 a vyšší výchozí operační systém Windows Server 2022. Chcete-li použít uzly systému Windows Server 2022, pokud nejsou výchozí, musíte zadat typ SKU operačního systému Windows2022
.
Poznámka
Windows Server 2022 vyžaduje Kubernetes verze 1.23.0 nebo vyšší.
az aks nodepool add
Pomocí příkazu přidejte fond uzlů Systému Windows Server 2022:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--os-sku Windows2022 \
--name npwin \
--node-count 1
Volitelné: Použití containerd
s fondy uzlů Windows Serveru
Počínaje kubernetes verze 1.20 a vyšší můžete pro fondy uzlů Windows Serveru 2019 určit containerd
jako modul runtime kontejneru. Počínaje Kubernetes 1.23 containerd
je výchozí a jediný modul runtime kontejneru pro Windows.
Důležité
Při použití containerd
s fondy uzlů Windows Serveru 2019:
- Řídicí rovina i fondy uzlů Windows Serveru 2019 musí používat Kubernetes verze 1.20 nebo vyšší.
- Při vytváření nebo aktualizaci fondu uzlů pro spouštění kontejnerů Windows Serveru je výchozí hodnota
--node-vm-size
Standard_D2s_v3 což byla minimální doporučená velikost pro fondy uzlů Windows Serveru 2019 před Kubernetes 1.20. Minimální doporučená velikost pro fondy uzlů Windows Serveru 2019 jecontainerd
Standard_D4s_v3. Při nastavování parametru--node-vm-size
zkontrolujte seznam omezených velikostí virtuálních počítačů. - Důrazně doporučujeme používat tainty nebo popisky se spuštěnými
containerd
fondy uzlů Windows Serveru 2019 a tolerance nebo selektory uzlů s vašimi nasazeními, aby se zajistilo správné naplánování úloh.
Přidání fondu uzlů Windows Serveru pomocí containerd
Pomocí příkazu az aks nodepool add
přidejte fond uzlů, který může spouštět kontejnery Windows Serveru s modulem containerd
runtime.
Poznámka
Pokud nezadáte vlastní hlavičku WindowsContainerRuntime=containerd , bude fond uzlů nadále používat containerd
jako modul runtime kontejneru ve výchozím nastavení.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwcd \
--node-vm-size Standard_D4s_v3 \
--kubernetes-version 1.20.5 \
--aks-custom-headers WindowsContainerRuntime=containerd \
--node-count 1
Výše uvedený příkaz vytvoří nový fond uzlů Windows Serveru pomocí containerd
modulu runtime s názvem npwcd a přidá ho do myAKSCluster. Výše uvedený příkaz také používá výchozí podsíť ve výchozí virtuální síti vytvořené při spuštění az aks create
příkazu .
Upgrade existujícího fondu uzlů Windows Serveru na containerd
Pomocí příkazu az aks nodepool upgrade
upgradujte konkrétní fond uzlů z Dockeru na containerd
.
az aks nodepool upgrade \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name npwd \
--kubernetes-version 1.20.7 \
--aks-custom-headers WindowsContainerRuntime=containerd
Výše uvedený příkaz upgraduje fond uzlů npwd na containerd
modul runtime.
Upgrade všech existujících fondů uzlů v clusteru tak, aby používal modul containerd
runtime pro všechny fondy uzlů Windows Serveru:
az aks upgrade \
--resource-group myResourceGroup \
--name myAKSCluster \
--kubernetes-version 1.20.7 \
--aks-custom-headers WindowsContainerRuntime=containerd
Výše uvedený příkaz upgraduje všechny fondy uzlů Windows Serveru v myAKSCluster tak, aby používaly containerd
modul runtime.
Poznámka
Při spuštění příkazu --kubernetes-version
pro upgrade musí být zadaná verze vyšší než aktuální verze fondu uzlů.
Připojení ke clusteru
Ke správě clusteru Kubernetes používáte kubectl, klienta příkazového řádku Kubernetes. Pokud používáte Azure Cloud Shell, kubectl
je už nainstalovaný. K místní instalaci kubectl
použijte příkaz az aks install-cli :
az aks install-cli
Pomocí příkazu az aks get-credentials nakonfigurujte klienta kubectl
pro připojení k vašemu clusteru Kubernetes. 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
Pokud chcete ověřit připojení ke clusteru, použijte příkaz kubectl get, který vrátí seznam uzlů clusteru.
kubectl get nodes -o wide
Následující příklad výstupu ukazuje všechny uzly v clusteru. Ujistěte se, že stav všech uzlů je Připraveno:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.20.7 10.240.0.4 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
aks-nodepool1-12345678-vmss000001 Ready agent 34m v1.20.7 10.240.0.35 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
aksnpwcd123456 Ready agent 9m6s v1.20.7 10.240.0.97 <none> Windows Server 2019 Datacenter 10.0.17763.1879 containerd://1.4.4+unknown
aksnpwin987654 Ready agent 25m v1.20.7 10.240.0.66 <none> Windows Server 2019 Datacenter 10.0.17763.1879 docker://19.3.14
Poznámka
Modul runtime kontejneru pro každý fond uzlů se zobrazí v části CONTAINER-RUNTIME. Všimněte si , že aksnpwin987654 začíná na docker://
, což znamená, že pro modul runtime kontejneru používá Docker. Všimněte si , že aksnpwcd123456 začíná containerd://
na, což znamená, že se používá 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 se manifest používá k vytvoření všech objektů potřebných 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 se poskytuje 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 uzlů , který clusteru AKS řekne, aby spustil pod ASP.NET ukázkové aplikace na uzlu, na který může spouštět kontejnery Windows Serveru.
Vytvořte soubor s názvem sample.yaml
a zkopírujte následující definici YAML. Pokud používáte Azure Cloud Shell, můžete tento soubor vytvořit pomocí code
, vi
nebo nano
jako při práci na virtuálním nebo fyzickém systému:
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.
Nasaďte aplikaci pomocí příkazu kubectl apply a zadejte název manifestu YAML:
kubectl apply -f sample.yaml
Následující příklad výstupu ukazuje úspěšné vytvoření nasazení a služby:
deployment.apps/sample created
service/sample created
Testování aplikace
Při spuštění aplikace služba Kubernetes zpřístupní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut. Někdy může zřízení služby trvat déle než několik minut. V těchto případech povolte až 10 minut.
Pomocí příkazu kubectl get service s argumentem --watch
můžete sledovat průběh.
kubectl get service sample --watch
Na začátku se externí IP adresaukázkové služby zobrazí jako čekající.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Pokud se externí IP adresa změní z čekající na skutečnou veřejnou IP adresu, použijte CTRL-C
k zastavení kubectl
procesu sledování. Následující příklad výstupu 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
Pokud chcete ukázkovou aplikaci zobrazit v akci, otevřete webový prohlížeč na externí IP adresu vaší služby.
Poznámka
Pokud při pokusu o načtení stránky dojde k vypršení časového limitu připojení, měli byste pomocí následujícího příkazu [kubectl get pods --watch] ověřit, že je ukázková aplikace připravená. Někdy se kontejner Windows nespustit do okamžiku, kdy je vaše externí IP adresa k dispozici.
Odstranění clusteru
Pokud nechcete projít následujícími kurzy, pomocí příkazu az group delete odeberte skupinu prostředků, službu kontejneru a všechny související prostředky, abyste se vyhnuli poplatkům za Azure.
az group delete --name myResourceGroup --yes --no-wait
Poznámka
Cluster AKS byl vytvořen se spravovanou identitou přiřazenou systémem (výchozí možnost identity použitá v tomto rychlém startu), identita je spravovaná platformou a nevyžaduje odebrání.
Další kroky
V tomto článku jste nasadili cluster Kubernetes a do kontejneru Windows Serveru jste nasadili ukázkovou aplikaci ASP.NET.
Další informace o službě AKS a podrobné vysvětlení kompletního příkladu od kódu až po nasazení najdete v kurzu clusteru Kubernetes.