Schnellstart: Bereitstellen eines Azure Kubernetes Service-Clusters (AKS) mit dem Azure-Portal
Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst, mit dem Sie schnell Cluster bereitstellen und verwalten können. In dieser Schnellstartanleitung führen Sie die folgenden Schritte aus:
- Bereitstellen eines AKS-Clusters mithilfe des Azure-Portals
- Führen Sie eine Beispielanwendung mit mehreren Containern mit einer Gruppe von Microservices und Web-Front-Ends aus, die ein Einzelhandelsszenario simulieren.
Hinweis
Um schnell mit der Bereitstellung eines AKS-Clusters zu beginnen, enthält dieser Artikel Schritte zum Bereitstellen eines Clusters mit Standardeinstellungen nur zu Evaluierungszwecken. Bevor Sie einen produktionsbereiten Cluster bereitstellen, empfehlen wir Ihnen, sich mit unserer Baselinereferenzarchitektur vertraut zu machen, um zu prüfen, inwiefern sie Ihren Geschäftsanforderungen entspricht.
Voraussetzungen
Für diese Schnellstartanleitung werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Grundlegende Kubernetes-Konzepte für Azure Kubernetes Service (AKS).
- Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
- Wenn Sie mit der Cloud Shell nicht vertraut sind, arbeiten Sie die Übersicht zu Azure Cloud Shell durch.
- Stellen Sie sicher, dass die Identität, die Sie zum Erstellen Ihres Clusters verwenden, über die erforderlichen Mindestberechtigungen verfügt. Weitere Informationen zu Zugriff und Identität für AKS finden Sie unter Zugriffs- und Identitätsoptionen für Azure Kubernetes Service (AKS).
Hinweis
Der Azure Linux-Knotenpool ist jetzt allgemein verfügbar (GA). Informationen zu den Vorteilen und Bereitstellungsschritten finden Sie in der Einführung in den Azure Linux-Containerhost für AKS.
Erstellen eines AKS-Clusters
Melden Sie sich beim Azure-Portal an.
Wählen Sie auf der Startseite des Azure-Portals Ressource erstellen aus.
Wählen Sie im Abschnitt Kategorien die Option Container>Azure Kubernetes Service (AKS) aus.
Konfigurieren Sie auf der Registerkarte Grundlegende Einstellungen die folgenden Einstellungen:
- Gehen Sie unter Projektdetails wie folgt vor:
- Abonnement: Wählen Sie das Azure-Abonnement aus, das Sie für diesen AKS-Cluster verwenden möchten.
- Ressourcengruppe: Wählen Sie Neu erstellen aus, geben Sie einen Ressourcengruppennamen ein (z. B. myResourceGroup), und wählen Sie dann OK aus. Sie können zwar eine vorhandene Ressourcengruppe zu Test- oder Evaluierungszwecken auswählen, es wird jedoch empfohlen, eine Ressourcengruppe zu erstellen, um diese Ressourcen vorübergehend zu hosten und Auswirkungen auf Ihre Produktions- oder Entwicklungsworkloads zu vermeiden.
- Unter Clusterdetails:
Voreingestellte Clusterkonfiguration: Wählen Sie Dev/Test aus. Weitere Informationen zu Voreinstellungskonfigurationen finden Sie unter Voreingestellte Clusterkonfigurationen im Azure-Portal.
Kubernetes-Clustername: Geben Sie einen Clusternamen ein, z. B. myAKSCluster.
Region: Wählen Sie eine Region aus, z. B. USA, Osten 2.
Verfügbarkeitszonen: Wählen Sie die Option Keine aus.
AKS-Tarif: Wählen Sie Free aus.
Übernehmen Sie für die übrigen Einstellungen die Standardwerte, und wählen Sie Weiter aus.
- Gehen Sie unter Projektdetails wie folgt vor:
Konfigurieren Sie auf der Registerkarte Knotenpools die folgenden Einstellungen:
Wählen Sie Knotenpool hinzufügen aus, und geben Sie einen Knotenpoolnamen ein, z. B. nplinux.
Modus: Wählen Sie die Option Benutzer aus.
Betriebssystem-SKU: Wählen Sie Ubuntu Linux aus.
Verfügbarkeitszonen: Wählen Sie die Option Keine aus.
Lassen Sie das Kontrollkästchen Aktivieren von Azure Spot-Instanzen deaktiviert.
Knotengröße: Wählen Sie Größe auswählen aus. Wählen Sie auf der Seite VM-Größe auswählen die Option D2s_v3 und dann Auswählen aus.
Übernehmen Sie für die übrigen Einstellungen die Standardwerte, und wählen Sie Hinzufügen aus.
Wählen Sie Überprüfen und Erstellen aus, um die Überprüfung für die Clusterkonfiguration auszuführen. Wenn die Überprüfung abgeschlossen ist, wählen Sie Erstellen aus.
Die Erstellung des AKS-Clusters dauert einige Minuten. Wenn die Bereitstellung abgeschlossen ist, navigieren Sie zu Ihrer Ressource, indem Sie Zur Ressource wechseln auswählen oder zur Ressourcengruppe des AKS-Clusters navigieren und die AKS-Ressource direkt auswählen.
Herstellen einer Verbindung mit dem Cluster
Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. kubectl
ist bei Verwendung von Azure Cloud Shell bereits installiert. Wenn Sie mit der Cloud Shell nicht vertraut sind, arbeiten Sie die Übersicht zu Azure Cloud Shell durch.
Wenn Sie Cloud Shell verwenden, öffnen Sie es mit der Schaltfläche >_
oben im Azure-Portal. Wenn Sie PowerShell lokal verwenden, stellen Sie über den Befehl Connect-AzAccount
eine Verbindung mit Azure her. Wenn Sie die Azure CLI lokal verwenden, stellen Sie über den Befehl az login
eine Verbindung mit Azure her.
Mit dem Befehl
az aks get-credentials
können Siekubectl
für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen und die Kubernetes-CLI für ihre Verwendung konfiguriert.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Überprüfen Sie die Verbindung mit Ihrem Cluster mithilfe des Befehls
kubectl get
, um eine Liste der Clusterknoten zurückzugeben.kubectl get nodes
Die folgende Beispielausgabe zeigt den in den vorherigen Schritten erstellten Knoten. Stellen Sie sicher, dass der Knotenstatus Bereit lautet.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Bereitstellen der Anwendung
Verwenden Sie eine Manifestdatei, um alle Objekte zu erstellen, die für die Ausführung der AKS Store-Anwendung erforderlich sind. Eine Kubernetes-Manifestdatei definiert den gewünschten Zustand (Desired State) eines Clusters – also beispielsweise, welche Containerimages ausgeführt werden sollen. Das Manifest umfasst die folgenden Kubernetes-Bereitstellungen und -Dienste:
- Store Front: Webanwendung für Kund*innen zum Anzeigen von Produkten und Aufgeben von Bestellungen
- Product Service: zeigt Produktinformationen an.
- Order Service: dient der Aufgabe von Bestellungen.
- Rabbit MQ: Nachrichtenwarteschlange für eine Bestellwarteschlange
Hinweis
Zustandsbehaftete Container wie Rabbit MQ sollten nicht ohne permanenten Speicher für die Produktion ausgeführt werden. Sie werden hier der Einfachheit halber verwendet, jedoch sollten verwaltete Dienste wie Azure CosmosDB oder Azure Service Bus verwendet werden.
Öffnen Sie in Cloud Shell einen Editor, und erstellen Sie eine Datei mit dem Namen
aks-store-quickstart.yaml
.Fügen Sie das folgende Manifest in den Editor ein:
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
Eine Aufschlüsselung der YAML-Manifestdateien finden Sie unter Bereitstellungen und YAML-Manifeste.
Wenn Sie die YAML-Datei lokal erstellen und speichern, können Sie die Manifestdatei in Ihr Standardverzeichnis in CloudShell hochladen, indem Sie die Schaltfläche Dateien hochladen/herunterladen auswählen und die Datei aus Ihrem lokalen Dateisystem auswählen.
Stellen Sie die Anwendung über den Befehl
kubectl apply
bereit, und geben Sie den Namen Ihres YAML-Manifests an:kubectl apply -f aks-store-quickstart.yaml
Die folgende Beispielausgabe zeigt die Bereitstellungen und Dienste:
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
Testen der Anwendung
Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern.
Überprüfen Sie den Status der bereitgestellten Pods mithilfe des Befehls
kubectl get pods
. Stellen Sie sicher, dass alle Pods den StatusRunning
haben, bevor Sie fortfahren.kubectl get pods
Suchen Sie nach einer öffentlichen IP-Adresse für die
store-front
-Anwendung. Verwenden Sie zum Überwachen des Fortschritts den Befehlkubectl get service
mit dem Argument--watch
:kubectl get service store-front --watch
Die Ausgabe von EXTERNAL-IP für den
store-front
-Dienst lautet anfangs pending (ausstehend):NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Nachdem die externe IP-Adresse (EXTERNAL-IP) von ausstehend in eine tatsächliche öffentliche IP-Adresse geändert wurde, verwenden Sie
CTRL-C
, um diekubectl
-Überwachung zu beenden.Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Öffnen Sie einen Webbrowser mit der externen IP-Adresse Ihres Dienstes, um die Azure Store-App in Aktion zu sehen.
Löschen des Clusters
Wenn Sie nicht planen, die AKS-Tutorialreihe zu durchlaufen, bereinigen Sie unnötige Ressourcen, um Azure-Gebühren zu vermeiden.
Navigieren Sie im Azure-Portal zur AKS-Clusterressourcengruppe.
Wählen Sie die Option Ressourcengruppe löschen.
Geben Sie den Namen der Ressourcengruppe ein, die Sie löschen möchten, und wählen Sie dann Löschen>Löschen aus.
Hinweis
Der AKS-Cluster wurde mit einem systemseitig zugewiesenen verwalteten Identitätssystem erstellt. Diese Identität wird von der Plattform verwaltet und erfordert keine Entfernung.
Nächste Schritte
In diesem Schnellstart haben Sie einen Kubernetes-Cluster und darin eine einfache Anwendung mit mehreren Containern bereitgestellt. Diese Beispielanwendung dient nur zu Demozwecken und stellt nicht alle bewährten Methoden für Kubernetes-Anwendungen dar. Anleitungen zum Erstellen vollständiger Lösungen mit AKS für die Produktion finden Sie unter AKS-Lösungsleitfaden.
Weitere Informationen zu AKS sowie ein vollständiges Beispiel vom Code bis zur Bereitstellung finden Sie in der Tutorialreihe zu Kubernetes-Clustern.
Azure Kubernetes Service