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.

Snímek obrazovky s procházením ukázkové aplikace ASP.NET

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

  • 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 createpří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 createpří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-sizeStandard_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 je containerdStandard_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 createpří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, vinebo 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.

Snímek obrazovky s procházením ukázkové aplikace ASP.NET

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.