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

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

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:

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

    echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
    
  3. 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 tématu Návody změna hesla správce pro uzly Windows Serveru v mém clusteru?.

    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 fondům uzlů 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.

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 .

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

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

  1. Pomocí příkazu kubectl get pods zkontrolujte stav nasazených podů. Než budete pokračovat, udělejte všechny pody Running .

    kubectl get pods
    
  2. 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žijte CTRL-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
    
  3. Prohlédněte si ukázkovou aplikaci v akci otevřením webového prohlížeče na externí IP adresu vaší služby.

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

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.