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)).
- Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
- Jeśli nie znasz usługi Azure Cloud Shell, zapoznaj się z artykułem Omówienie usługi Azure Cloud Shell.
- Upewnij się, że tożsamość używana do utworzenia klastra ma odpowiednie minimalne uprawnienia. Aby uzyskać więcej informacji na temat dostępu i tożsamości dla usługi AKS, zobacz Opcje dostępu i tożsamości dla 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
Zaloguj się w witrynie Azure Portal.
Na stronie głównej witryny Azure Portal wybierz pozycję Utwórz zasób.
W sekcji Kategorie wybierz pozycję Kontenery>usługi Azure Kubernetes Service (AKS).
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.
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.
- W obszarze Szczegóły projektu:
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.
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.
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 .
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
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:
- 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.
W usłudze Cloud Shell otwórz edytor i utwórz plik o nazwie
aks-store-quickstart.yaml
.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.
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.
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
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
Otwórz przeglądarkę internetową na zewnętrzny adres IP usługi, aby zobaczyć działanie aplikacji ze Sklepu Azure.
Usuwanie klastra
Jeśli nie planujesz przechodzenia przez samouczek usługi AKS, wyczyść niepotrzebne zasoby, aby uniknąć opłat za platformę Azure.
W witrynie Azure Portal przejdź do grupy zasobów klastra usługi AKS.
Wybierz pozycję Usuń grupę zasobów.
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.