Bereitstellen einer Anwendung in Ihrem Azure Kubernetes Service-Cluster

Abgeschlossen

Ihr Unternehmen prüft Möglichkeiten, Ihren cloudbasierten Videorenderingdienst bereitzustellen. Sie haben Azure Kubernetes Service (AKS) als cloudnative Entwicklungsplattform ausgewählt. Nachdem der Cluster konfiguriert wurde, können Sie eine der Komponenten in Ihrer Videorenderinganwendung bereitstellen. Sie entscheiden sich für die Bereitstellung einer statischen Version der Website Ihres Unternehmens, um den Kubernetes-Bereitstellungsprozess zu untersuchen.

Bevor die Kubernetes-Bereitstellungsmethode erörtert wird, werden einige der Schritte genannt, die Sie ausführen müssen, um eine ähnliche Anwendung für eine Nicht-Kubernetes-Umgebung bereitzustellen.

Angenommen, Sie verwenden einen virtuellen Azure-Computer (VM) als Zielplattform. Der erste Schritt besteht in der Vorbereitung der Serversoftware zum Hosten der Anwendung. Dieses Modul umfasst Folgendes:

  • Installieren des Betriebssystems
  • Aktualisieren des Betriebssystems auf die neuesten Sicherheits- und Softwarepatches
  • Installieren und Konfigurieren der Webserversoftware
  • Bereitstellen der Webanwendungen

Wiederholen Sie diesen Vorgang für jede neue VM, wenn Sie sich entscheiden, die Website horizontal zu skalieren, um eine höhere Nachfrage von Kunden bewältigen zu können.

Eine alternative Vorgehensweise besteht darin, die Website auf einer containerbasierten Plattform wie Azure Container Instances auszuführen. Sie müssen sich keine Gedanken über die zugrunde liegende Servertechnologie machen, aber Sie müssen mehrere Container konfigurieren und verwalten, um diese Strategie manuell verwenden zu können.

Kubernetes und AKS helfen Ihnen beim Orchestrieren von Containern. Die Orchestrierungsfeatures der Kubernetes-Container vereinfachen die Verwaltung von Workloads im Cluster. Sie stellen Workloads mithilfe von Containern bereit, die aus Containerimages erstellt wurden, um Ihre Anwendungen in einem AKS-Cluster auszuführen.

Hier erfahren Sie, wie Sie Workloads in Ihrem AKS-Cluster erstellen können.

Was ist eine Containerregistrierung?

Mit einer Containerregistrierung können Sie Containerimages für eine spätere Bereitstellung sicher in der Cloud speichern. Sie können sich die Containerregistrierung als Archiv vorstellen, in dem mehrere Versionen Ihres Containerimages gespeichert werden. Jedem gespeicherten Image ist ein Tag zur Identifizierung zugewiesen.

Möglicherweise verfügen Sie über das Image contoso-website:latest, das eine andere Version des Images mit dem Tag contoso-website:v1.0.0 ist.

Abbildung zur Veranschaulichung des Herunterladens von Containerimages aus einer Containerregistrierung in einen Kubernetes-Cluster mithilfe einer Manifestdatei

Containerregistrierungen können öffentlich oder privat sein. Private Registrierungen erfordern Anmeldeinformationen für den Zugriff auf und das Herunterladen von Images und stellen die Strategie dar, die Sie beim Speichern von Containerimages verfolgen sollten.

Kubernetes ermöglicht nur das Bereitstellen von Images, die in einer Containerregistrierung gehostet werden. Das Erstellen einer privaten Containerregistrierung ist normalerweise Teil Ihrer AKS-Standardbereitstellungsstrategie.

Was ist ein Kubernetes-Pod?

Ein Kubernetes-Pod gruppiert Container und Anwendungen in eine logische Struktur. Diese Pods verfügen über keine Intelligenz und bestehen aus mindestens einem Anwendungscontainer. Jeder verfügt über eine IP-Adresse, Netzwerkregeln und verfügbar gemachte Ports.

Wenn Sie beispielsweise alle Workloads im Zusammenhang mit der contoso-website suchen möchten, fragen Sie den Cluster nach Pods mit der Bezeichnung app und dem Wert contoso-website ab.

Was ist eine Kubernetes-Bereitstellung?

Abbildung einer Kubernetes-Bereitstellung mit einer Bezeichnung und drei Pods

Eine Kubernetes-Bereitstellung ist eine Weiterentwicklung von Pods. Eine Bereitstellung umschließt die Pods in einem intelligenten Objekt, wodurch das horizontale Skalieren ermöglicht wird. Sie können Ihre Anwendung problemlos duplizieren und skalieren, um eine höhere Auslastung zu unterstützen, ohne dass Sie komplexe Netzwerkregeln konfigurieren müssen.

Mithilfe von Bereitstellungen können Benutzer Anwendungen aktualisieren, indem sie ohne Downtime lediglich das Imagetag ändern. Wenn Sie eine Bereitstellung aktualisieren, anstatt alle Apps zu löschen, deaktiviert die Bereitstellung die Online-Apps nacheinander. Anschließend werden sie durch die neueste Version ersetzt. Dies bedeutet, dass jede Bereitstellung die darin enthaltenen Pods ohne Auswirkungen auf die Verfügbarkeit aktualisieren kann.

Kubernetes-Manifestdatei

Mit einer Kubernetes-Manifestdatei können Sie Ihre Workloads im YAML-Format deklarativ beschreiben und die Kubernetes-Objektverwaltung vereinfachen.

Stellen Sie sich vor, Sie müssen eine Workload manuell bereitstellen. Sie müssen sich Gedanken über mehrere Aspekte einschließlich der Verwaltung machen. Sie müssen einen Container erstellen, einen bestimmten Knoten auswählen, diesen in einem Pod umschließen, den Pod ausführen, die Ausführung überwachen und vieles mehr.

Manifestdateien enthalten alle Informationen, die zum Erstellen und Verwalten der beschriebenen Workload erforderlich sind.

Was ist eine Kubernetes-Bezeichnung?

Eine Kubernetes-Bezeichnung ermöglicht das logische Gruppieren von Kubernetes-Objekten. Diese Bezeichnungen ermöglichen es dem System, den Cluster nach Objekten abzufragen, die mit einer Bezeichnung mit einem bestimmten Namen übereinstimmen.

Struktur einer Manifestdatei

Die Struktur der Manifestdateien hängt vom Typ der Ressource ab, die Sie erstellen. Für Manifestdateien gibt es jedoch gemeinsame Anweisungen. Diese Anweisungen definieren verschiedene Aspekte wie beispielsweise die zu verwendenden APIs und den Typ der zu erstellenden Workload.

Die ersten beiden Einträge in allen Manifestdateien enthalten die wichtigen Schlüssel apiVersion und kind. Hier finden Sie ein Beispiel für eine Bereitstellungsdatei.

apiVersion: apps/v1 # Where in the API it resides
kind: Deployment # The kind of workload we're creating

Der Schlüssel apiVersion definiert den API-Serverendpunkt, der das Objekt verwaltet, das Sie bereitstellen.

Der Schlüssel kind definiert die Workload, die von dieser Bereitstellung erstellt wird.

Die Schlüssel metadata und name sind weitere allgemeine Schlüssel für alle Dateien. Alle Kubernetes-Ressourcen müssen einen Namen haben. Dieser Name ist im metadata-Schlüssel enthalten.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website # This will be the name of the deployment

Gruppieren von Objekten in einer Bereitstellung

Bei Bereitstellungen wird eine label verwendet, um nach Pods zu suchen und diese zu gruppieren. Sie definieren die Bezeichnung als Teil der Manifestdatei Ihrer Bereitstellung.

Hier sehen Sie ein Beispiel. Beachten Sie den Wert matchLabels, der in der selector-Definition definiert ist, die der spec-Definition hinzugefügt wurde.

# deployment.yaml
# ...
spec:
  selector:
    matchLabels:
      app: contoso-website
# ...

Ab diesem Zeitpunkt verfügen alle Dateien über unterschiedliche Strukturen, je nachdem, welche Art von Ressource Kubernetes erstellen soll.

Anwenden einer Bereitstellungsdatei

Sie stellen mithilfe von kubectl eine Kubernetes-Bereitstellungsmanifestdatei bereit. Das folgende Beispiel zeigt den Befehl.

kubectl apply -f ./deployment.yaml

Überprüfen Sie Ihr Wissen

1.

Was ist eine Containerregistrierung?

2.

Was ist eine Manifestdatei?