Sdílet prostřednictvím


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 nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
  • 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 příslušné ID předplatného, ve kterém se mají prostředky fakturovat pomocí az account set příkazu. Další informace najdete v tématu Správa předplatných Azure – Azure CLI.
  • Pokud používáte --os-sku Windows2025, musíte nainstalovat aks-preview rozšíření a zaregistrovat příznak preview. Minimální verze je 18.0.0b40.

Instalovat aks-preview rozšíření

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

  1. aks-preview Nainstalujte rozšíření Azure CLI pomocí az extension add příkazu.
az extension add --name aks-preview
  1. Pomocí příkazu aktualizujte na nejnovější verzi rozšíření az extension update . Windows Server 2025 vyžaduje minimálně 18.0.0b40.
az extension update --name aks-preview

Zaregistruj příznak funkce AksWindows2025Preview

  1. AksWindows2025Preview Pomocí příkazu [az feature register][az-feature-register] zaregistrujte příznak funkce.
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Pomocí příkazu [az feature show][az-feature-show] ověřte stav registrace. Zobrazení stavu Zaregistrované trvá několik minut.
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí příkazu [az provider register][az-provider-register].

    az provider register --namespace Microsoft.ContainerService
    

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 lokalitě WestUS2.

    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export REGION="canadacentral"
    export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup$RANDOM_SUFFIX"
    az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
    

    Výsledky:

    {
      "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupxxxxx",
      "location": "WestUS2",
      "managedBy": null,
      "name": "myResourceGroupxxxxx",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null,
      "type": "Microsoft.Resources/resourceGroups"
    }
    

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 běhové prostředí 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.
  • Pool uzlů používá VirtualMachineScaleSets.

Pomocí následujících kroků vytvořte cluster AKS pomocí Azure CLI:

  1. 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.

    export WINDOWS_USERNAME="winadmin"
    
  2. 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.

    export WINDOWS_PASSWORD=$(echo "P@ssw0rd$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9!@#$%^&*()' | cut -c1-6)")
    
  3. Vytvořte cluster pomocí az aks create příkazu a zadejte --windows-admin-username parametry.--windows-admin-password Následující ukázkový příkaz vytvoří cluster pomocí hodnot z WINDOWS_USERNAME a WINDOWS_PASSWORD, které jste nastavili v předchozích příkazech. K názvu clusteru se připojí náhodná přípona pro jedinečnost.

    export MY_AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX"
    az aks create \
        --resource-group $MY_RESOURCE_GROUP_NAME \
        --name $MY_AKS_CLUSTER \
        --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ž pár minut. Dovolte až 10 minut na nastavení.

    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 nemůžete 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řidejte fond uzlů

Ve výchozím nastavení se všechny clustery AKS vytvářejí s fondem uzlů, který může spouštět kontejnery Linuxu. Musíte přidat fond uzlů Windows, který může spouštět kontejnery Windows Serveru společně s fondem uzlů Linuxu. Pokud chcete zkontrolovat, jestli máte ve svém clusteru fond uzlů Windows, můžete pomocí příkazu zobrazit uzly v clusteru kubectl get nodes -o wide .

Pokud chcete vytvořit fond uzlů systému Windows, musíte zadat podporované OsType a OsSku. Pomocí informací v následující tabulce určete, která je vhodná pro váš cluster:

OsType OsSku Výchozí Podporované verze K8s Podrobnosti
windows Windows2025 Aktuálně ve verzi Preview. Není výchozí. 1.32+ Aktualizované výchozí hodnoty: kontejner 2.0, image 2. generace se používá ve výchozím nastavení.
windows Windows2022 Výchozí nastavení v K8s 1.25-1.35 Není k dispozici v K8s 1.36+ V březnu 2027 se vyřadí z důchodu. Aktualizované výchozí hodnoty: Funkce FIPS je ve výchozím nastavení povolená.
windows Windows2019 Výchozí nastavení v K8s 1,24 a níže V K8s 1.33 nebo novějších není k dispozici V březnu 2026 se vyřadí z důchodu.

Windows Server 2022 je výchozím operačním systémem pro Kubernetes verze 1.25-1.35. 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.

Poznámka:

  • Windows Server 2019 se 1. března 2026 přestane podporovat. Po tomto datu už AKS nebude vytvářet nové image uzlů ani poskytovat opravy zabezpečení. Po tomto datu nebudete moct vytvářet nové fondy uzlů s Windows Serverem 2019 v žádné verzi Kubernetes. Všechny existující fondy uzlů s Windows Serverem 2019 nebudou podporovány. Windows Server 2019 není podporován v Kubernetes verze 1.33 a novější. Od 1. dubna 2027 odebere AKS všechny existující obrazy uzlů pro Windows Server 2019, což znamená, že operace škálování nebudou fungovat.
  • Windows Server 2022 bude vyřazen dne 15. března 2027. Po tomto datu už AKS nebude vytvářet nové image uzlů ani poskytovat opravy zabezpečení. Po tomto datu nebudete moct vytvářet nové fondy uzlů s Windows Serverem 2022 v žádné verzi Kubernetes. Všechny existující uzlové skupiny využívající Windows Server 2022 nebudou podporovány. Windows Server 2022 není podporován v Kubernetes verze 1.36 a novější. Od 1. dubna 2028 odstraní AKS všechny existující image uzlů pro Windows Server 2022, tedy operace škálování nebude možné provést.

Další informace najdete v poznámkách k vydání AKS. Aktuální informace o nejnovějších verzích operačního systému Windows Server a další informace o našem plánu podpory v AKS najdete v našem veřejném plánu AKS.

  • Přidejte fond uzlů systému Windows pomocí příkazu az aks nodepool add se zadaným OsType a OsSku. 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.

    az aks nodepool add \
      --resource-group $MY_RESOURCE_GROUP_NAME \
      --cluster-name $MY_AKS_CLUSTER \
      --os-type Windows \
      --os-sku Windows2022 \
      --name npwin \
      --node-count 1
    

    Tento 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.

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ě, použijte az aks install-cli příkaz.

  1. Nakonfigurujte kubectl pro připojení ke svému Kubernetes clusteru 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 $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER
    
  2. Pomocí příkazu ověřte připojení ke clusteru 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 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 runtime kontejneru začínají containerd://, což znamená, že každá používá containerd pro 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 obrazech Windows Serveru 2019 nebo novějších. Soubor manifestu Kubernetes musí také definovat selektor uzlu, aby vašemu clusteru AKS určil, že má spustit pod ukázkové aplikace ASP.NET na uzlu, který dokáže spouštět kontejnery Windows Serveru.

  1. 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ů.

  2. Nasaďte aplikaci pomocí kubectl apply příkazu a zadejte název manifestu YAML.

    kubectl apply -f sample.yaml
    

    Následující příklad výstupu ukazuje, že nasazení a služba byly úspěšně vytvořeny:

    {
      "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. Dovolte až 10 minut na nastavení.

  1. Pomocí příkazu zkontrolujte stav nasazených podů kubectl get pods . Ujistěte se, že jsou všechny pody Running, než budete pokračovat.

    kubectl get pods
    
  2. Sledujte průběh pomocí kubectl get service příkazu s argumentem --watch .

    while true; do
      export EXTERNAL_IP=$(kubectl get service sample -o jsonpath="{.status.loadBalancer.ingress[0].ip}" 2>/dev/null)
      if [[ -n "$EXTERNAL_IP" && "$EXTERNAL_IP" != "<pending>" ]]; then
        kubectl get service sample
        break
      fi
      echo "Still waiting for external IP assignment..."
      sleep 5
    done
    

    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   xx.xx.xx.xx    pending          xx:xxxx/TCP     2m
    
  3. Když se externí IP adresa změní z čekání na skutečnou CTRL-C veřejnou IP adresu, použijte kubectl k zastavení procesu sledování.

    Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou službě:

    {
      "NAME": "sample",
      "TYPE": "LoadBalancer",
      "CLUSTER-IP": "10.0.37.27",
      "EXTERNAL-IP": "52.179.23.131",
      "PORT(S)": "80:30572/TCP",
      "AGE": "2m"
    }
    
  4. Prohlédněte si ukázkovou aplikaci v akci tak, že po několika minutách otevřete webový prohlížeč na externí IP adresu vaší služby.

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

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 od kódu po nasazení, přejděte k návodu na clustery Kubernetes.