Rövid útmutató: Azure Kubernetes Service- (AKS-) fürt üzembe helyezése az Azure Portal 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 rövid útmutatóban a következőket hajtja végre:

  • AKS-fürt létrehozása az Azure Portalon.
  • Többtárolós mintaalkalmazás futtatása mikroszolgáltatások és webes kezelőfelületek egy kiskereskedelmi forgatókönyvet szimuláló csoportjával.

Feljegyzé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 éles üzemre kész fürtök üzembe helyezése előtt javasoljuk, hogy ismerkedjen meg az alapszintű referenciaarchitektúrával, és gondolja át, hogyan igazodik az üzleti követelményekhez.

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 nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
  • Ha nem ismeri az Azure Cloud Shellt, tekintse át az Azure Cloud Shell áttekintését.
  • Győződjön meg arról, hogy a fürt 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 részletekért tekintse meg az Azure Kubernetes Service (AKS) hozzáféréssel és identitással kapcsolatos lehetőségeit.

Feljegyzés

Az Azure Linux-csomópontkészlet általánosan elérhető (GA). Az előnyökről és az üzembe helyezés lépéseiről az AKS-hez készült Azure Linux Container Host bemutatása című témakörben olvashat.

AKS-fürt létrehozása

  1. Jelentkezzen be az Azure Portalra.

  2. Az Azure Portal kezdőlapján válassza az Erőforrás létrehozása lehetőséget.

  3. A Kategóriák szakaszban válassza az Azure Kubernetes Service (AKS) tárolóit>.

  4. Az Alapszintű beállítások lapon konfigurálja a következő beállításokat:

    • A Projekt részletei csoportban:
      • Válasszon ki egy Azure-előfizetést.
      • Hozzon létre egy Azure-erőforráscsoportot, például a myResourceGroupot. Bár kiválaszthat egy meglévő erőforráscsoportot tesztelési vagy kiértékelési célokra, javasoljuk, hogy hozzon létre egy erőforráscsoportot, amely ideiglenesen üzemelteti ezeket az erőforrásokat, és elkerüli az éles vagy fejlesztési számítási feladatokra gyakorolt hatást.
    • A Fürt részletei csoportban:
      • Állítsa a fürt által előre beállított konfigurációt Dev/Test értékre. Az előre beállított konfigurációkkal kapcsolatos további információkért lásd az Azure Portal fürtkonfigurációs előbeállításait.

        Feljegyzés

        A fürt létrehozásakor módosíthatja az előre beállított konfigurációt az Előzetes beállítások összehasonlítása és egy másik lehetőség kiválasztásával. Képernyőkép az AKS-fürt létrehozásáról – a portál előre beállított beállításairól.

      • Adja meg a Kubernetes-fürt nevét, például myAKSCluster.

      • Válasszon egy régiót az AKS-fürthöz.

      • Állítsa a Rendelkezésre állási zónák beállítást Nincs értékre.

      • Állítsa az AKS tarifacsomagot ingyenesre.

      • Hagyja meg a Kubernetes-verzió alapértelmezett értékét.

      • Hagyja meg az Automatikus frissítés beállítást a javasolt értékre, amely javítással engedélyezve van.

      • Hagyja a Hitelesítés és engedélyezés beállítást helyi fiókokra a Kubernetes RBAC-vel.

        Képernyőkép az AKS-fürtök Azure Portalon való konfigurálásáról.

  5. Válassza a Tovább lehetőséget. A Csomópontkészletek lapon adjon hozzá egy új csomópontkészletet:

    • Válassza a Csomópontkészlet hozzáadása lehetőséget.

    • Adja meg a csomópontkészlet nevét, például nplinux.

    • A Mód beállításnál válassza a Felhasználó lehetőséget.

    • Operációsrendszer-termékváltozat esetén válassza az Ubuntu Linux lehetőséget.

    • Állítsa a Rendelkezésre állási zónák beállítást Nincs értékre.

    • Hagyja bejelölve az Azure Spot-példányok engedélyezése jelölőnégyzetet.

    • Csomópontméret esetén válassza a Méret kiválasztása lehetőséget. A Virtuális gép méretének kiválasztása lapon válassza a D2s_v3, majd a Kiválasztás gombot.

    • Hagyja meg a Méretezési módszer beállítását automatikus skálázásra.

    • Hagyja meg a csomópontok minimális számát és a csomópontok maximális számát tartalmazó mezőket az alapértelmezett beállításoknak.

      Képernyőkép az Ubuntu Linuxot futtató csomópontkészlet létrehozásáról.

  6. Hagyja a többi lapon az összes beállítást alapértelmezett értékre állítani, kivéve a Figyelés lapon lévő beállításokat. Az Azure Monitor alapértelmezés szerint a Container Insightst, a Prometheushoz készült Azure Monitor felügyelt szolgáltatást és az Azure Managed Grafana szolgáltatást is engedélyezi. A költségek a letiltásukkal takaríthatók meg.

  7. Válassza a Véleményezés + létrehozás lehetőséget az ellenőrzés fürtkonfiguráción való futtatásához. Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget az AKS-fürt létrehozásához.

Az AKS-fürt létrehozása eltarthat néhány percig. Ha az üzembe helyezés befejeződött, keresse meg az erőforrást az alábbiak szerint:

  • Válassza az Ugrás az erőforrásra lehetőséget, vagy
  • Az AKS-fürt erőforráscsoportjának böngészése és az AKS-erőforrás kiválasztása. Ebben a példában megkeresi a myResourceGroup csoportot, és kiválasztja a myAKSCluster erőforrást.

Csatlakozás a fürthöz

Kubernetes-fürt kezeléséhez használja a Kubernetes parancssori ügyfelet, a kubectl-et. kubectl az Azure Cloud Shell használata esetén már telepítve van. Ha nem ismeri a Cloud Shellt, tekintse át az Azure Cloud Shell áttekintését.

Ha Cloud Shellt használ, nyissa meg az >_ Azure Portal tetején található gombbal. Ha helyileg használja a PowerShellt, csatlakozzon az Azure-hoz a Connect-AzAccount parancson keresztül. Ha helyileg használja az Azure CLI-t, csatlakozzon az Azure-hoz a az login parancson keresztül.

  1. Konfigurálja kubectl a Kubernetes-fürthöz való csatlakozást az az aks get-credentials paranccsal. 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 myResourceGroup --name myAKSCluster
    
  2. Ellenőrizze a fürthöz kubectl get való kapcsolatot a fürtcsomópontok listájának visszaadásához.

    kubectl get nodes
    

    A következő példakimenet az előző lépésekben létrehozott csomópontot mutatja be. Győződjön meg arról, hogy a csomópont állapota kész.

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31718369-0   Ready    agent   6m44s   v1.15.10
    

Az alkalmazás üzembe helyezése

Az alkalmazás üzembe helyezéséhez egy jegyzékfájl használatával hozza létre az AKS Store-alkalmazás futtatásához szükséges összes objektumot. A Kubernetes-jegyzékfájl meghatározza a fürt kívánt állapotát, például hogy mely tárolólemezképeket kell futtatni. A jegyzék a következő Kubernetes-üzemelő példányokat és szolgáltatásokat tartalmazza:

Képernyőkép az Azure Store mintaarchitektúrájáról.

  • Áruházi előtér: Webalkalmazás az ügyfelek számára termékek megtekintésére és megrendelések leadására.
  • Termékszolgáltatás: A termékinformációkat jeleníti meg.
  • Rendelési szolgáltatás: Rendeléseket rendel.
  • Nyúl MQ: Üzenetsor rendelési üzenetsorhoz.

Feljegyzés

Nem javasoljuk az állapotalapú tárolók( például a Rabbit MQ) futtatását az éles környezetben tartós tárolás nélkül. Ezeket itt az egyszerűség kedvéért használjuk, de olyan felügyelt szolgáltatások használatát javasoljuk, mint az Azure CosmosDB vagy az Azure Service Bus.

  1. A Cloud Shellben nyisson meg egy szerkesztőt, és hozzon létre egy fájlt.aks-store-quickstart.yaml

  2. Illessze be a következő jegyzékfájlt a szerkesztőbe:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rabbitmq
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: rabbitmq
      template:
        metadata:
          labels:
            app: rabbitmq
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: rabbitmq
            image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine
            ports:
            - containerPort: 5672
              name: rabbitmq-amqp
            - containerPort: 15672
              name: rabbitmq-http
            env:
            - name: RABBITMQ_DEFAULT_USER
              value: "username"
            - name: RABBITMQ_DEFAULT_PASS
              value: "password"
            resources:
              requests:
                cpu: 10m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            volumeMounts:
            - name: rabbitmq-enabled-plugins
              mountPath: /etc/rabbitmq/enabled_plugins
              subPath: enabled_plugins
          volumes:
          - name: rabbitmq-enabled-plugins
            configMap:
              name: rabbitmq-enabled-plugins
              items:
              - key: rabbitmq_enabled_plugins
                path: enabled_plugins
    ---
    apiVersion: v1
    data:
      rabbitmq_enabled_plugins: |
        [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0].
    kind: ConfigMap
    metadata:
      name: rabbitmq-enabled-plugins
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq
    spec:
      selector:
        app: rabbitmq
      ports:
        - name: rabbitmq-amqp
          port: 5672
          targetPort: 5672
        - name: rabbitmq-http
          port: 15672
          targetPort: 15672
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: ghcr.io/azure-samples/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "rabbitmq"
            - name: ORDER_QUEUE_PORT
              value: "5672"
            - name: ORDER_QUEUE_USERNAME
              value: "username"
            - name: ORDER_QUEUE_PASSWORD
              value: "password"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
          initContainers:
          - name: wait-for-rabbitmq
            image: busybox
            command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;']
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: order-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3000
        targetPort: 3000
      selector:
        app: order-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: product-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: product-service
      template:
        metadata:
          labels:
            app: product-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: product-service
            image: ghcr.io/azure-samples/aks-store-demo/product-service:latest
            ports:
            - containerPort: 3002
            resources:
              requests:
                cpu: 1m
                memory: 1Mi
              limits:
                cpu: 1m
                memory: 7Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: product-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3002
        targetPort: 3002
      selector:
        app: product-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: store-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: store-front
      template:
        metadata:
          labels:
            app: store-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: store-front
            image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
            ports:
            - containerPort: 8080
              name: store-front
            env:
            - name: VUE_APP_ORDER_SERVICE_URL
              value: "http://order-service:3000/"
            - name: VUE_APP_PRODUCT_SERVICE_URL
              value: "http://product-service:3002/"
            resources:
              requests:
                cpu: 1m
                memory: 200Mi
              limits:
                cpu: 1000m
                memory: 512Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: store-front
    spec:
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: store-front
      type: LoadBalancer
    

    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.

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

    kubectl apply -f aks-store-quickstart.yaml
    

    Az alábbi példakimenet az üzemelő példányokat és szolgáltatásokat mutatja be:

    deployment.apps/rabbitmq created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front 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.

  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 a folytatás előtt van Running .

    kubectl get pods
    
  2. Ellenőrizze, hogy van-e nyilvános IP-cím az áruházi előtéralkalmazáshoz. Figyelje a folyamatot a kubectl get service paranccsal az --watch argumentummal.

    kubectl get service store-front --watch
    

    A szolgáltatás KÜLSŐ-IP-kimenetestore-front kezdetben függőben lévőként jelenik meg:

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   <pending>     80:30025/TCP   4h4m
    

    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.

    Az alábbi példakimenet a szolgáltatáshoz rendelt érvényes nyilvános IP-címet jeleníti meg:

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   20.62.159.19   80:30025/TCP   4h5m
    
  3. Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére az Azure Store-alkalmazás működés közbeni megtekintéséhez.

    Képernyőkép az AKS Store mintaalkalmazásról.

A fürt törlése

Ha nem tervezi végigvezetni az AKS-oktatóanyagot, törölje a felesleges erőforrásokat az Azure-díjak elkerülése érdekében.

  1. Az Azure Portalon lépjen az AKS-fürt erőforráscsoportjához.

  2. Válassza az Erőforráscsoport törlése elemet.

  3. Adja meg a törölni kívánt erőforráscsoport nevét, majd válassza a Törlés törlése> lehetőséget.

    Feljegyzés

    Az AKS-fürt egy rendszer által hozzárendelt felügyelt identitással lett létrehozva. Ezt az identitást a platform kezeli, és nem igényel eltávolítást.

Következő lépések

Ebben a rövid útmutatóban üzembe helyezett egy Kubernetes-fürtöt, majd üzembe helyezett egy egyszerű többtárolós alkalmazást. 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 éles AKS-sel való teljes megoldások létrehozásáról az AKS-megoldásokkal kapcsolatos útmutatást talál.

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-fürt oktatóanyagával.