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

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/00000000-0000-0000-0000-000000000000/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:

  1. 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 WindowsProfileAdminUserNameWindowsProfileAdminUserPassword. 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'
    
  2. Vytvořte cluster pomocí rutiny New-AzAksCluster a zadejte parametryWindowsProfileAdminUserName.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 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)][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.

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 .

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

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