Szybki start: wdrażanie klastra usługi Azure Kubernetes Service (AKS) przy użyciu witryny Azure Portal

Azure Kubernetes Service (AKS) to zarządzana usługa platformy Kubernetes, która umożliwia szybkie wdrażanie klastrów i zarządzanie nimi. W ramach tego przewodnika Szybki start wykonasz następujące czynności:

  • Wdrażaj klaster AKS za pomocą witryny Azure Portal.
  • Uruchom przykładową aplikację z wieloma kontenerami z grupą mikrousług i frontonów internetowych symulujących scenariusz sprzedaży detalicznej.

Uwaga

Aby rozpocząć szybkie aprowizowanie klastra usługi AKS, ten artykuł zawiera kroki wdrażania klastra z ustawieniami domyślnymi tylko do celów ewaluacyjnych. Przed wdrożeniem klastra gotowego do produkcji zalecamy zapoznanie się z naszą architekturą referencyjną punktu odniesienia, aby wziąć pod uwagę, jak jest ona zgodna z wymaganiami biznesowymi.

Zanim rozpoczniesz

W tym przewodniku Szybki start założono, że masz podstawową wiedzę na temat pojęć związanych z rozwiązaniem Kubernetes. Aby uzyskać więcej informacji, zobacz temat Kubernetes core concepts for Azure Kubernetes Service (AKS) (Kubernetes — podstawowe pojęcia dotyczące usługi Azure Kubernetes Service (AKS)).

Uwaga

Pula węzłów systemu Linux platformy Azure jest teraz ogólnie dostępna . Aby dowiedzieć się więcej o korzyściach i krokach wdrażania, zobacz Wprowadzenie do hosta kontenera systemu Linux platformy Azure dla usługi AKS.

Tworzenie klastra AKS

  1. Zaloguj się w witrynie Azure Portal.

  2. Na stronie głównej witryny Azure Portal wybierz pozycję Utwórz zasób.

  3. W sekcji Kategorie wybierz pozycję Kontenery>usługi Azure Kubernetes Service (AKS).

  4. Na karcie Podstawowe skonfiguruj następujące opcje:

    • W obszarze Szczegóły projektu:
      • Wybierz subskrypcję platformy Azure.
      • Utwórz grupę zasobów platformy Azure, taką jak myResourceGroup. Chociaż możesz wybrać istniejącą grupę zasobów, na potrzeby testowania lub oceny, zalecamy utworzenie grupy zasobów w celu tymczasowego hostowania tych zasobów i uniknięcia wpływu na obciążenia produkcyjne lub programistyczne.
    • W obszarze Szczegóły klastra:
      • Ustaw wstępnie ustawioną konfigurację klastra na Tworzenie i testowanie. Aby uzyskać więcej informacji na temat wstępnych konfiguracji, zobacz Ustawienia wstępne konfiguracji klastra w witrynie Azure Portal.

        Uwaga

        Konfigurację ustawień wstępnych można zmienić podczas tworzenia klastra, wybierając pozycję Porównaj ustawienia wstępne i wybierając inną opcję. Zrzut ekranu przedstawiający opcje tworzenia klastra usługi AKS — ustawienia wstępne portalu.

      • Wprowadź nazwę klastra Kubernetes, taką jak myAKSCluster.

      • Wybierz region dla klastra usługi AKS.

      • Ustaw ustawienie Strefy dostępności na Wartość Brak.

      • Ustaw warstwę cenową usługi AKS na Bezpłatna.

      • Pozostaw wartość domyślną wybraną dla wersji platformy Kubernetes.

      • Pozostaw ustawienie Automatyczne uaktualnianie ustawione na zalecaną wartość, która jest włączona z poprawką.

      • Pozostaw ustawienie Uwierzytelnianie i autoryzacja ustawione na Konta lokalne przy użyciu kontroli dostępu opartej na rolach platformy Kubernetes.

        Zrzut ekranu przedstawiający sposób konfigurowania klastra usługi AKS w witrynie Azure Portal.

  5. Wybierz Dalej. Na karcie Pule węzłów dodaj nową pulę węzłów:

    • Wybierz pozycję Dodaj pulę węzłów.

    • Wprowadź nazwę puli węzłów, taką jak nplinux.

    • W obszarze Tryb wybierz pozycję Użytkownik.

    • W polu Jednostka SKU systemu operacyjnego wybierz pozycję Ubuntu Linux.

    • Ustaw ustawienie Strefy dostępności na Wartość Brak.

    • Pozostaw pole wyboru Włącz wystąpienia usługi Azure Spot niezaznaczone.

    • W obszarze Rozmiar węzła wybierz pozycję Wybierz rozmiar. Na stronie Wybieranie rozmiaru maszyny wirtualnej wybierz pozycję D2s_v3, a następnie wybierz przycisk Wybierz.

    • Pozostaw ustawienie Metoda skalowania ustawione na Autoskaluj.

    • Pozostaw pola Minimalna liczba węzłów i Maksymalna liczba węzłów ustawione na ustawienia domyślne.

      Zrzut ekranu przedstawiający sposób tworzenia puli węzłów z systemem Ubuntu Linux.

  6. Pozostaw wartości domyślne wszystkich ustawień na innych kartach, z wyjątkiem ustawień na karcie Monitorowanie. Domyślnie funkcje usługi Azure Monitor Container Insights, usługa zarządzana usługi Azure Monitor dla rozwiązania Prometheus i azure Managed Grafana są włączone. Możesz zaoszczędzić koszty, wyłączając je.

  7. Wybierz pozycję Przejrzyj i utwórz , aby uruchomić walidację w konfiguracji klastra. Po zakończeniu walidacji wybierz pozycję Utwórz , aby utworzyć klaster usługi AKS.

Utworzenie klastra AKS może potrwać kilka minut. Po zakończeniu wdrażania przejdź do zasobu, wykonując jedną z następujących czynności:

  • Wybieranie pozycji Przejdź do zasobu lub
  • Przejdź do grupy zasobów klastra usługi AKS i wybierz zasób usługi AKS. W tym przykładzie przeglądasz grupę myResourceGroup i wybierasz zasób myAKSCluster.

Łączenie z klastrem

Aby zarządzać klastrem Kubernetes, użyj klienta wiersza polecenia kubernetes kubectl. kubectl program jest już zainstalowany, jeśli używasz usługi Azure Cloud Shell. Jeśli nie znasz usługi Cloud Shell, zapoznaj się z omówieniem usługi Azure Cloud Shell.

Jeśli używasz usługi Cloud Shell, otwórz ją za pomocą >_ przycisku w górnej części witryny Azure Portal. Jeśli używasz programu PowerShell lokalnie, połącz się z platformą Connect-AzAccount Azure za pomocą polecenia . Jeśli używasz interfejsu wiersza polecenia platformy Azure lokalnie, połącz się z platformą az login Azure za pomocą polecenia .

  1. Skonfiguruj, kubectl aby nawiązać połączenie z klastrem Kubernetes przy użyciu polecenia az aks get-credentials . To polecenie powoduje pobranie poświadczeń i zastosowanie ich w konfiguracji interfejsu wiersza polecenia Kubernetes.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Sprawdź połączenie z klastrem przy użyciu polecenia kubectl get , aby zwrócić listę węzłów klastra.

    kubectl get nodes
    

    Poniższe przykładowe dane wyjściowe zawierają jeden węzeł utworzony w poprzednich krokach. Upewnij się, że stan węzła to Gotowe.

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

Wdrażanie aplikacji

Aby wdrożyć aplikację, należy użyć pliku manifestu, aby utworzyć wszystkie obiekty wymagane do uruchomienia aplikacji sklepu AKS. Plik manifestu kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia. Manifest obejmuje następujące wdrożenia i usługi Kubernetes:

Zrzut ekranu przedstawiający przykładową architekturę sklepu Azure Store.

  • Front sklepu: aplikacja internetowa dla klientów do wyświetlania produktów i składania zamówień.
  • Usługa produktu: wyświetla informacje o produkcie.
  • Usługa zamawiania: umieszcza zamówienia.
  • Rabbit MQ: kolejka komunikatów dla kolejki zamówień.

Uwaga

Nie zalecamy uruchamiania kontenerów stanowych, takich jak Rabbit MQ, bez trwałego przechowywania w środowisku produkcyjnym. Są one używane tutaj dla uproszczenia, ale zalecamy korzystanie z usług zarządzanych, takich jak Azure CosmosDB lub Azure Service Bus.

  1. W usłudze Cloud Shell otwórz edytor i utwórz plik o nazwie aks-store-quickstart.yaml.

  2. Wklej następujący manifest do edytora:

    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
    

    Aby uzyskać podział plików manifestu YAML, zobacz Wdrożenia i manifesty YAML.

    Jeśli tworzysz i zapisujesz plik YAML lokalnie, możesz przekazać plik manifestu do katalogu domyślnego w programie CloudShell, wybierając przycisk Przekaż/Pobierz pliki i wybierając plik z lokalnego systemu plików.

  3. Wdróż aplikację przy użyciu kubectl apply polecenia i określ nazwę manifestu YAML:

    kubectl apply -f aks-store-quickstart.yaml
    

    W poniższych przykładowych danych wyjściowych przedstawiono wdrożenia i usługi:

    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
    

Testowanie aplikacji

Podczas uruchamiania aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut.

  1. Sprawdź stan wdrożonych zasobników przy użyciu polecenia kubectl get pods . Przed kontynuowaniem upewnij się, że wszystkie zasobniki są Running gotowe.

    kubectl get pods
    
  2. Sprawdź publiczny adres IP aplikacji frontonu sklepu. Monitoruj postęp przy użyciu polecenia kubectl get service za pomocą argumentu --watch .

    kubectl get service store-front --watch
    

    Dane wyjściowe EXTERNAL-IP dla store-front usługi początkowo są wyświetlane jako oczekujące:

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

    Gdy adres EXTERNAL-IP zmieni się z oczekujące na rzeczywisty publiczny adres IP, użyj polecenia CTRL-C , aby zatrzymać proces obserwacjikubectl.

    Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:

    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. Otwórz przeglądarkę internetową na zewnętrzny adres IP usługi, aby zobaczyć działanie aplikacji ze Sklepu Azure.

    Zrzut ekranu przedstawiający przykładową aplikację sklepu AKS Store.

Usuwanie klastra

Jeśli nie planujesz przechodzenia przez samouczek usługi AKS, wyczyść niepotrzebne zasoby, aby uniknąć opłat za platformę Azure.

  1. W witrynie Azure Portal przejdź do grupy zasobów klastra usługi AKS.

  2. Wybierz pozycję Usuń grupę zasobów.

  3. Wprowadź nazwę grupy zasobów do usunięcia, a następnie wybierz pozycję Usuń>usuń.

    Uwaga

    Klaster usługi AKS został utworzony przy użyciu tożsamości zarządzanej przypisanej przez system. Ta tożsamość jest zarządzana przez platformę i nie wymaga usunięcia.

Następne kroki

W tym przewodniku Szybki start wdrożono klaster Kubernetes, a następnie wdrożono w nim prostą aplikację z wieloma kontenerami. Ta przykładowa aplikacja służy tylko do celów demonstracyjnych i nie reprezentuje wszystkich najlepszych rozwiązań dla aplikacji Kubernetes. Aby uzyskać wskazówki dotyczące tworzenia pełnych rozwiązań za pomocą usługi AKS dla środowiska produkcyjnego, zobacz Wskazówki dotyczące rozwiązania AKS.

Aby dowiedzieć się więcej na temat usługi AKS i zapoznać się z kompletnym przykładem kodu do wdrożenia, przejdź do samouczka dotyczącego klastra Kubernetes.