(VERALTET) Bereitstellen eines Kubernetes-Clusters für Linux-Container

Tipp

Für die aktualisierte Version dieses Schnellstarts, der Azure Kubernetes Service verwendet, finden Sie unter Schnellstart: Bereitstellen eines Azure Kubernetes Service (AKS)-Clusters.

Warnung

Azure Container Service (ACS) wird ausgemustert. Für ACS werden keine neuen Features oder Funktionen mehr hinzugefügt. Sämtliche APIs, Portalfunktionen, CLI-Befehle und Dokumentationen werden als veraltet gekennzeichnet.

2017 wurde Azure Kubernetes Service (AKS) eingeführt, um die Verwaltung, die Bereitstellung und den Betrieb von Kubernetes zu vereinfachen. Falls Sie den Kubernetes-Orchestrator verwenden, migrieren Sie bitte bis spätestens 31. Januar 2020 zu Azure Kubernetes Service. Informationen zu den ersten Schritten finden Sie unter Migration von Azure Container Service (ACS) zu Azure Kubernetes Service (AKS).

Weitere Informationen finden Sie unter Einstellung von Azure Container Service am 31. Januar 2020.

In diesem Schnellstart wird ein Kubernetes-Cluster mithilfe der Azure CLI bereitgestellt. Anschließend wird in dem Cluster eine Anwendung mit mehreren Containern bereitgestellt und ausgeführt, die ein Web-Front-End und eine Redis-Instanz umfasst. Nach Abschluss des Vorgangs kann auf die Anwendung über das Internet zugegriffen werden.

Die in diesem Dokument verwendete Beispielanwendung ist in Python geschrieben. Die hier beschriebenen Konzepte und Schritte können zum Bereitstellen eines Containerimages in einem Kubernetes-Cluster verwendet werden. Der Code, die Dockerfile-Datei und die vorab erstellte Kubernetes-Manifestdatei für dieses Projekt stehen auf GitHub zur Verfügung.

Abbildung der Navigation zu Azure Vote

In dieser Schnellstartanleitung wird davon ausgegangen, dass Sie grundlegend mit den Konzepten von Kubernetes vertraut sind. Ausführliche Informationen zu Kubernetes finden Sie in der Kubernetes-Dokumentation.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Verwenden von Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.

Starten von Azure Cloud Shell:

Option Beispiel/Link
Klicken Sie in der rechten oberen Ecke eines Codeblocks auf Ausprobieren. Durch die Auswahl von Ausprobieren wird der Code nicht automatisch in Cloud Shell kopiert. Beispiel für „Testen Sie es.“ für Azure Cloud Shell
Rufen Sie https://shell.azure.com auf, oder klicken Sie auf die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen. Starten von Cloud Shell in einem neuen Fenster
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus. Cloud Shell-Schaltfläche im Azure-Portal

Ausführen des Codes in diesem Artikel in Azure Cloud Shell:

  1. Starten Sie Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock, um den Code zu kopieren.

  3. Fügen Sie den Code mit STRGUMSCHALTV unter Windows und Linux oder CmdUMSCHALTV unter macOS in die Cloud Shell-Sitzung ein.

  4. Drücken Sie die EINGABETASTE, um den Code auszuführen.

Wenn Sie die CLI lokal installieren und verwenden möchten, müssen Sie für diesen Schnellstart die Azure CLI-Version 2.0.4 oder höher ausführen. Führen Sie az --version aus, um die Version zu ermitteln. Installations- und Upgradeinformationen finden Sie bei Bedarf unter Installieren von Azure CLI.

Erstellen einer Ressourcengruppe

Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe. Eine Azure-Ressourcengruppe ist eine logische Gruppe, in der Azure-Ressourcen bereitgestellt und verwaltet werden.

Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort westeurope.

az group create --name myResourceGroup --location westeurope

Ausgabe:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Erstellen eines Kubernetes-Clusters

Erstellen Sie mit dem Befehl az acs create einen Kubernetes-Cluster in Azure Container Service. Im folgenden Beispiel wird ein Cluster namens myK8sCluster mit einem Linux-Masterknoten und drei Linux-Agent-Knoten erstellt.

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

Manchmal hat ein Azure-Abonnement eingeschränkten Zugriff auf Azure-Ressourcen. Dies ist beispielsweise bei einem eingeschränkten Testabonnement der Fall. Tritt bei der Bereitstellung ein Fehler aufgrund von begrenzt verfügbaren Kernen auf, verringern Sie die Anzahl der Standard-Agents, indem Sie --agent-count 1 zum Befehl az acs create hinzufügen.

Nach einigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben.

Herstellen einer Verbindung mit dem Cluster

Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl.

Wenn Sie Azure Cloud Shell verwenden, ist „kubectl“ bereits installiert. Wenn Sie ihn lokal installieren möchten, verwenden Sie den Befehl az acs kubernetes install-cli.

Führen Sie den Befehl az acs kubernetes get-credentials aus, um „kubectl“ für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster zu konfigurieren. Dieser Schritt dient dazu, Anmeldeinformationen herunterzuladen und die Kubernetes-Befehlszeilenschnittstelle für ihre Verwendung zu konfigurieren.

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

Überprüfen Sie die Verbindung mit Ihrem Cluster mithilfe des Befehls kubectl get, um eine Liste der Clusterknoten zurückzugeben.

kubectl get nodes

Ausgabe:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

Ausführen der Anwendung

Eine Kubernetes-Manifestdatei definiert einen gewünschten Zustand (Desired State) – also beispielsweise, welche Containerimages ausgeführt werden sollen. In diesem Beispiel wird ein Manifest verwendet, um alle Objekte zu erstellen, die zum Ausführen der Azure Vote-Anwendung benötigt werden.

Erstellen Sie eine Datei mit dem Namen azure-vote.yml, und fügen Sie den folgenden YAML-Code ein: Wenn Sie in Azure Cloud Shell arbeiten, kann diese Datei mit vi oder Nano wie bei Verwendung eines virtuellen oder physischen Systems erstellt werden.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

Führen Sie die Anwendung mithilfe des Befehls kubectl create aus.

kubectl create -f azure-vote.yml

Ausgabe:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Testen der Anwendung

Im Zuge der Anwendungsausführung wird ein Kubernetes-Dienst erstellt, der das Anwendungs-Front-End über das Internet verfügbar macht. Dieser Vorgang kann einige Minuten dauern.

Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument --watch.

kubectl get service azure-vote-front --watch

Die externe IP-Adresse für den Dienst azure-vote-front wird zunächst als ausstehend angezeigt. Sobald die externe IP-Adresse nicht mehr ausstehend ist, sondern eine IP-Adresse angezeigt wird, verwenden Sie CTRL-C, um die kubectl-Überwachung zu beenden.

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

Nun können Sie zu der externen IP-Adresse navigieren und die Azure Vote-App anzeigen.

Abbildung der Navigation zu Azure Vote

Löschen von Clustern

Wenn der Cluster nicht mehr benötigt wird, können Sie mit dem Befehl az group delete die Ressourcengruppe, den Containerdienst und alle zugehörigen Ressourcen entfernen.

az group delete --name myResourceGroup --yes --no-wait

Abrufen des Codes

In dieser Schnellstartanleitung wurden vorab erstellte Containerimages verwendet, um eine Kubernetes-Bereitstellung zu erstellen. Der dazugehörige Anwendungscode, die Dockerfile-Datei und die Kubernetes-Manifestdatei sind auf GitHub verfügbar.

https://github.com/Azure-Samples/azure-voting-app-redis

Nächste Schritte

In dieser Schnellstartanleitung haben Sie einen Kubernetes-Cluster und eine Anwendung mit mehreren Containern dafür bereitgestellt.

Weitere Informationen zu Azure Container Service sowie ein vollständiges Beispiel vom Code bis zur Bereitstellung finden Sie im Kubernetes-Clustertutorial.