Windows Server-tároló üzembe helyezése egy Azure Kubernetes Service-klaszterben az Azure CLI használatával

Az Azure Kubernetes Service (AKS) egy felügyelt Kubernetes-szolgáltatás, amely lehetővé teszi a fürtök gyors üzembe helyezését és kezelését. Ebben a cikkben az Azure CLI használatával helyez üzembe egy Windows Server-tárolókat futtató AKS-fürtöt. Egy ASP.NET-mintaalkalmazást is üzembe helyezhet egy Windows Server-tárolóban a fürtön.

Megjegyzés:

Az AKS-fürtök gyors üzembe helyezésének megkezdéséhez ez a cikk a csak kiértékelési célokra alapértelmezett beállításokkal rendelkező fürtök üzembe helyezésének lépéseit tartalmazza. Az üzemkész fürtök üzembe helyezése előtt javasoljuk, hogy ismerkedjen meg a referencia architektúra alapjaival, és gondolja át, hogyan felel meg az üzleti követelményeknek.

Mielőtt elkezdené

A rövid útmutató feltételezi, hogy rendelkezik a Kubernetes használatára vonatkozó alapvető ismeretekkel. További információkért tekintse meg az Azure Kubernetes Service (AKS) Kubernetes alapfogalmait.

  • Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.
  • Ez a cikk a Azure CLI 2.87.0-s vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
  • Győződjön meg arról, hogy a klaszter létrehozásához használt identitás rendelkezik a megfelelő minimális engedélyekkel. Az AKS-hez való hozzáféréssel és identitással kapcsolatos további információkért lásd az Azure Kubernetes Service (AKS) hozzáférési és identitásbeállításait.
  • Ha több Azure-előfizetéssel rendelkezik, válassza ki a megfelelő előfizetés-azonosítót, amelyben az erőforrásokat a az account set paranccsal kell számlázni. További információ: Azure-előfizetések kezelése – Azure CLI.

Erőforráscsoport létrehozása

Az Azure-erőforráscsoportok olyan logikai csoportok, amelyekben az Azure-erőforrások üzembe helyezése és kezelése történik. Erőforráscsoport létrehozásakor meg kell adnia egy helyet. Ez a hely tárolja az erőforráscsoport metaadatait, és ahol az erőforrások az Azure-ban futnak, ha nem ad meg másik régiót az erőforrás létrehozása során.

  • Hozzon létre egy erőforráscsoportot a az group create paranccsal. Az alábbi példa létrehoz egy myResourceGroup nevű erőforráscsoportot a WestUS2-helyen .

    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
    

    Eredmények:

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

AKS-fürt létrehozása

Ebben a szakaszban létrehozunk egy AKS-fürtöt a következő konfigurációval:

  • A fürt két csomóponttal van konfigurálva, hogy megbízhatóan működjön. A csomópont egy Azure-beli virtuális gép (VM), amely a Kubernetes-csomópont összetevőit és a tároló futtatókörnyezetét futtatja.
  • Az --windows-admin-password és --windows-admin-username paraméterek megadják a rendszergazdai hitelesítő adatokat a fürt Windows Server csomópontjaihoz, és meg kell felelniük a Windows Server jelszókövetelményeinek.
  • A csomópontkészlet a következőt használja: VirtualMachineScaleSets.

Az AKS-fürt Azure CLI segítségével történő létrehozásához kövesse az alábbi lépéseket:

  1. Hozz létre egy felhasználónevet rendszergazdai azonosításhoz a fürt Windows Server csomópontokhoz.

    export WINDOWS_USERNAME="winadmin"
    
  2. Hozzon létre egy jelszót az előző lépésben létrehozott rendszergazdai felhasználónévhez. A jelszónak legalább 14 karakter hosszúságúnak kell lennie, és meg kell felelnie a Windows Server jelszó összetettségi követelményeinek.

    export WINDOWS_PASSWORD=$(echo "P@ssw0rd$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9!@#$%^&*()' | cut -c1-6)")
    
  3. Hozza létre a fürtöt a az aks create paranccsal, és adja meg a --windows-admin-username és --windows-admin-password paramétereket. Az alábbi példaparancs létrehoz egy fürtöt az előző parancsokban megadott értékek WINDOWS_USERNAMEWINDOWS_PASSWORD alapján. Egy véletlenszerű utótagot fűznek a fürt nevéhez annak egyedi jellege érdekében.

    export MY_AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX"
    az aks create \
        --resource-group $MY_RESOURCE_GROUP_NAME \
        --name $MY_AKS_CLUSTER \
        --kubernetes-version 1.33 \
        --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
    

    Néhány perc múlva a parancs befejeződik, és JSON formátumú információkat ad vissza a klaszterről. Esetenként a fürt rendelkezésre bocsátása több időt vehet igénybe néhány percnél. Engedélyezzen legfeljebb 10 percet a kiépítésre.

    Ha jelszó-érvényesítési hibát kap, és a megadott jelszó megfelel a hosszra és az összetettségre vonatkozó követelményeknek, próbálja meg létrehozni az erőforráscsoportot egy másik régióban. Ezután próbálja meg létrehozni a fürtöt az új erőforráscsoporttal.

    Ha nem ad meg rendszergazdai felhasználónevet és jelszót a csomópontkészlet létrehozásakor, a felhasználónév azureuserre van állítva, és a jelszó véletlenszerű értékre van állítva. További információ: Windows Server – gyakori kérdések

    Nem módosíthatja a rendszergazda felhasználónevét, de megváltoztathatja az AKS-fürt által a Windows Server-csomópontokhoz használt rendszergazda jelszót az aks update. További információ: Windows Server – gyakori kérdések.

    A Windows Server-tárolók csomópontkészleteit támogató AKS-fürt futtatásához a fürtnek egy olyan hálózati szabályzatot kell használnia, amely a Azure CNI (speciális) hálózati beépülő modult alkalmazza. A --network-plugin azure paraméter az Azure CNI-t adja meg.

Csomópontkészlet hozzáadása

Alapértelmezés szerint az összes AKS-fürt olyan csomópontkészlettel jön létre, amely képes linuxos tárolókat futtatni. Olyan Windows-csomópontkészletet kell hozzáadnia, amely Windows Server-tárolókat futtathat a Linux-csomópontkészlet mellett. Ha ellenőrizni szeretné, hogy van-e Windows csomópontkészlet a fürtben, a kubectl get nodes -o wide parancs használatával megtekintheti a fürt csomópontjait.

Windows-csomópontkészlet létrehozásához meg kell adnia egy támogatott OsType és OsSku. Az alábbi táblázatban található információk alapján válassza ki, hogy melyik felel meg az Ön fürtjéhez.

OsType OsSku Alapértelmezett Támogatott K8s-verziók Részletek
windows Windows2025 Alapértelmezett érték a K8s 1.36+-ban 1.32+ Frissített alapértelmezett értékek: containerd 2.0, a 2. generációs rendszerkép alapértelmezés szerint használatos. A FIPS használata kötelező – a csomópontkészlet létrehozásakor adja meg a(z) --enable-fips-image értéket.
windows Windows2022 Alapértelmezett érték a K8s 1.25-1.35-ben Nem érhető el a K8s 1.37-es és újabb verzióiban 2028 júniusában nyugdíjba vonul. Frissített alapértelmezett értékek: A FIPS alapértelmezés szerint engedélyezve van.

Windows Server 2025 a Kubernetes 1.36-os és újabb verziójának alapértelmezett operációs rendszere. Windows Server 2022 a Kubernetes 1.25-1.35-ös verzióinak alapértelmezett verziója. Ha nem ad meg egy adott operációsrendszer-termékváltozatot, az Azure létrehozza az új csomópontkészletet a fürt által használt Kubernetes-verzió alapértelmezett termékváltozatával.

Fontos

2028. június 30-tól kezdődően Azure Kubernetes Service (AKS) már nem támogatja Windows Server 2022 csomópontkészleteket. Windows Server 2022 a Kubernetes 1.37-es és újabb verziói nem támogatottak. 2029. június 30-tól az AKS eltávolítja a Windows Server 2022 összes meglévő csomópontlemezképét, ami azt jelenti, hogy a skálázási műveletek sikertelenek lesznek. A kivonással kapcsolatos további információkért tekintse meg a GitHub-kivonással kapcsolatos problémát és az Azure Updates kivonási bejelentését. Ha értesülni szeretne a bejelentésekről és frissítésekről, kövesse az AKS kibocsátási megjegyzéseit.

  • Adjon hozzá egy Windows-csomópontkészletet a(z) az aks nodepool add parancs használatával, megadott OsType és OsSku értékkel. Ha nem ad meg egy adott operációsrendszer-termékváltozatot, az Azure létrehozza az új csomópontkészletet a fürt által használt Kubernetes-verzió alapértelmezett termékváltozatával. A Windows Server 2025-ös csomópontkészletekhez FIPS-kompatibilis lemezképre van szükség, ezért az alábbi parancs tartalmazza a(z) --enable-fips-image elemet.

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

    Ez a parancs létrehoz egy új npwin nevű csomópontkészletet, és hozzáadja a myAKSClusterhez. A parancs a futtatáskor az aks createlétrehozott alapértelmezett virtuális hálózat alapértelmezett alhálózatát is használja.

A klaszterhez csatlakozás

A Kubernetes-fürtök kezeléséhez a Kubectl, a Kubernetes parancssori ügyfelet kell használnia. Ha az Azure Cloud Shellt használja, kubectl már telepítve van. Ha helyileg szeretné telepíteni és futtatni kubectl , használja a az aks install-cli parancsot.

  1. Konfigurálja a kubectl-t, hogy a az aks get-credentials paranccsal csatlakozhasson a Kubernetes klaszterhez. Ez a parancs letölti a hitelesítő adatokat, és konfigurálja a Kubernetes parancssori felületét a használatukhoz.

    az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER
    
  2. Ellenőrizze a fürthöz való kapcsolatot a kubectl get paranccsal, amely a fürtcsomópontok listáját adja vissza.

    kubectl get nodes -o wide
    

    Az alábbi példakimenet a fürt összes csomópontjának megjelenítése. Győződjön meg arról, hogy az összes csomópont állapota készen áll:

    NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION      CONTAINER-RUNTIME
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.33.12   10.224.0.4    <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure   containerd://1.7.33-1
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.33.12   10.224.0.33   <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure   containerd://1.7.33-1
    aksnpwin000000                      Ready    agent   20h   v1.33.12   10.224.0.62   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    

    Megjegyzés:

    Az egyes csomópontkészletek tároló-futtatókörnyezete a CONTAINER-RUNTIME alatt jelenik meg. A tároló futtatókörnyezet értékei containerd://-val kezdődnek, ami azt jelenti, hogy mindegyik a tároló futtatókörnyezethez használja containerd-t.

Az alkalmazás üzembe helyezése

A Kubernetes-manifest-fájl meghatározza a klaszter kívánt állapotát, például hogy milyen konténerképeket kell futtatni. Ebben a cikkben egy jegyzék használatával hozza létre a ASP.NET mintaalkalmazás Windows Server-tárolóban való futtatásához szükséges összes objektumot. Ez a jegyzék tartalmazza az ASP.NET mintaalkalmazás Kubernetes-üzembe helyezését , valamint egy külső Kubernetes-szolgáltatást az alkalmazás internetről való eléréséhez.

A ASP.NET mintaalkalmazás a .NET-keretrendszer minták részeként érhető el, és Windows Server-tárolóban fut. Az AKS megköveteli, hogy a Windows Server-tárolók a Windows Server 2022 vagy újabb rendszerképeken alapuljanak. A Kubernetes-jegyzékfájlnak egy csomópontválasztót is meg kell adnia, amely tájékoztatja az AKS-fürtöt, hogy futtassa az ASP.NET mintaalkalmazás podját egy olyan csomóponton, amely Windows Server-tárolókat futtathat.

  1. Hozzon létre egy fájlt, sample.yaml és másolja a következő YAML-definícióba:

    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
    

    A YAML-jegyzékfájlok lebontásához tekintse meg az üzembe helyezéseket és a YAML-jegyzékeket.

    Ha helyileg hozza létre és menti a YAML-fájlt, feltöltheti a jegyzékfájlt az alapértelmezett könyvtárba a CloudShellben a Fájlok feltöltése/letöltése gombra kattintva, majd kiválasztva a fájlt a helyi fájlrendszerből.

  2. Telepítse az alkalmazást a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f sample.yaml
    

    Az alábbi példakimenet a sikeresen létrehozott üzembe helyezést és szolgáltatást mutatja be:

    {
      "deployment.apps/sample": "created",
      "service/sample": "created"
    }
    

Az alkalmazás tesztelése

Az alkalmazás futtatásakor egy Kubernetes-szolgáltatás elérhetővé teszi az alkalmazás előtérét az interneten. A folyamat eltarthat pár percig. Időnként a szolgáltatás kiépítése néhány percnél hosszabb időt is igénybe vehet. Engedélyezzen legfeljebb 10 percet a kiépítésre.

  1. Ellenőrizze az üzembe helyezett podok állapotát a kubectl get pods paranccsal. Győződjön meg arról, hogy az összes pod Running, mielőtt folytatja.

    kubectl get pods
    
  2. A folyamatot a kubectl get service paranccsal, a --watch argumentummal figyelheti.

    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
    

    Kezdetben a kimenet függőben lévőként jeleníti meg a mintaszolgáltatás KÜLSŐ IP-címét:

    NAME     TYPE           CLUSTER-IP     EXTERNAL-IP       PORT(S)        AGE
    sample   LoadBalancer   xx.xx.xx.xx    pending          xx:xxxx/TCP     2m
    
  3. Ha a külső IP-cím függőben lévőrőltényleges nyilvános IP-címre változik, állítsa CTRL-C le a kubectl figyelés folyamatát.

    A következő példakimenet a <public-ip-address> helyére a szolgáltatáshoz rendelt érvényes nyilvános IP-címet cseréli.

    {
      "NAME": "sample",
      "TYPE": "LoadBalancer",
      "CLUSTER-IP": "10.0.37.27",
      "EXTERNAL-IP": "<public-ip-address>",
      "PORT(S)": "80:30572/TCP",
      "AGE": "2m"
    }
    
  4. A mintaalkalmazás működés közbeni megtekintéséhez néhány perc múlva megnyit egy webböngészőt a szolgáltatás külső IP-címére.

    Képernyőkép ASP.NET mintaalkalmazás böngészéséről.

Következő lépések

Ebben a rövid útmutatóban üzembe helyezett egy Kubernetes-fürtöt, majd üzembe helyezett egy ASP.NET mintaalkalmazást egy Windows Server-tárolóban. Ez a mintaalkalmazás csak bemutató célokra készült, és nem képviseli a Kubernetes-alkalmazások ajánlott eljárásait. Az AKS produkciós környezetben való teljes megoldások létrehozásához tekintse meg az AKS-megoldások útmutatását.

Ha többet szeretne megtudni az AKS-ről, és végig szeretne járni egy teljes kód–üzembe helyezési példán, folytassa a Kubernetes klaszter oktatóanyagához.