Udostępnij za pośrednictwem


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 ustawienia:

    • W obszarze Szczegóły projektu:
      • Subskrypcja: wybierz subskrypcję platformy Azure, której chcesz użyć dla tego klastra usługi AKS.
      • Grupa zasobów: wybierz pozycję Utwórz nową, wprowadź nazwę grupy zasobów, taką jak myResourceGroup, a następnie wybierz przycisk OK. 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:
      • Konfiguracja ustawień wstępnych klastra: wybierz pozycję 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.

      • Nazwa klastra Kubernetes: wprowadź nazwę klastra, taką jak myAKSCluster.

      • Region: wybierz region, taki jak Wschodnie stany USA 2.

      • Strefy dostępności: wybierz pozycję Brak.

      • Warstwa cenowa usługi AKS: wybierz pozycję Bezpłatna.

      • Pozostaw wartości domyślne pozostałych ustawień, a następnie wybierz pozycję Dalej.

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

  5. Na karcie Pule węzłów skonfiguruj następujące ustawienia:

    • Wybierz pozycję Dodaj pulę węzłów i wprowadź nazwę puli węzłów, taką jak nplinux.

    • Tryb: wybierz pozycję Użytkownik.

    • Jednostka SKU systemu operacyjnego: wybierz pozycję Ubuntu Linux.

    • Strefy dostępności: wybierz pozycję Brak.

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

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

    • Pozostaw wartości domyślne pozostałych ustawień, a następnie wybierz pozycję Dodaj.

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

  6. Wybierz pozycję Przejrzyj i utwórz , aby uruchomić walidację w konfiguracji klastra. Po zakończeniu walidacji wybierz pozycję Utwórz.

    Utworzenie klastra AKS może potrwać kilka minut. Po zakończeniu wdrażania przejdź do zasobu, wybierając pozycję Przejdź do zasobu lub przechodząc do grupy zasobów klastra usługi AKS i wybierając zasób usługi AKS.

Łączenie z klastrem

Do zarządzania klastrami Kubernetes służy klient wiersza polecenia 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 az aks get-credentials Kubernetes przy użyciu polecenia . 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

Plik manifestu służy do tworzenia wszystkich obiektów wymaganych 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 kubectl get pods polecenia . Przed kontynuowaniem upewnij się, że wszystkie zasobniki są Running gotowe.

    kubectl get pods
    
  2. Sprawdź publiczny adres IP aplikacji store-front . Monitoruj postęp za pomocą kubectl get service polecenia z argumentem --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 serię samouczków 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 serii samouczków dotyczących klastra Kubernetes.