Freigeben über


Bereitstellen einer Linux-App

Gilt für: AKS auf Azure Stack HCI 22H2, AKS unter Windows Server

In diesem Handbuch wird beschrieben, wie Sie eine Multicontainer-App bereitstellen, die eine Web-Front-End- und eine Redis-Datenbankinstanz auf Ihrem Kubernetes-Cluster in AKS enthält, die von Azure Arc aktiviert sind. Außerdem erfahren Sie, wie Sie Ihre App testen und skalieren.

Für diese Schrittanleitung werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes Kernkonzepte.

Voraussetzungen

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt werden:

  • Ein AKS-Cluster mit mindestens einem Linux-Workerknoten, der ausgeführt wird.
  • Eine kubeconfig-Datei für den Zugriff auf den Cluster.
  • Das PowerShell-Modul AksHci wird installiert. Weitere Informationen finden Sie unter Install-AksHci.

Wenn Sie die Verfahren ausführen:

  • Führen Sie die Befehle in einem PowerShell-Fenster aus, das mit Administratorrechten geöffnet wurde.
  • Stellen Sie sicher, dass die betriebssystemspezifischen Workloads auf dem entsprechenden Containerhost verarbeitet werden. Wenn Ihr Kubernetes-Cluster eine Mischung aus Linux- und Windows-Workerknoten aufweist, können Sie entweder Knotenselektoren oder Taints und Tolerationen verwenden. Weitere Informationen finden Sie unter Verwenden von Knotenselektoren und Taints und Toleranzen.

Hinweis

Die Bereitstellung eines Zielclusters, der ein Netzwerk mit einem anderen Zielcluster gemeinsam verwendet, kann zu Lastenausgleichs-IP-Adresskonflikten führen. IP-Adresskonflikte können auftreten, wenn Sie zwei Workloads bereitstellen, die unterschiedliche Ports in Zielclustern verwenden, die dasselbe AksHciClusterNetwork Objekt verwenden. Aufgrund der Art und Weise, wie die IP-Adressen und Portzuordnungen innerhalb des HA-Proxys zugeordnet werden, kann dies zu einer Zuordnung doppelter IP-Adressen führen. Wenn dies geschieht, kann eine oder beide Workloads zufällige Netzwerkkonnektivitätsprobleme auftreten, bis Sie Ihre Workloads erneut bereitstellen. Wenn Sie Ihre Workloads erneut bereitstellen, können Sie entweder denselben Port verwenden, der jeder Workload eine Dienst-IP-Adresse zuweist, oder Sie können Ihre Workloads auf Zielclustern, die unterschiedliche AksHciClusterNetwork Objekte verwenden, erneut bereitstellen.

Bereitstellen der App

Eine Kubernetes-Manifestdatei definiert einen gewünschten Zustand (Desired State) für den Cluster – also beispielsweise, welche Containerimages ausgeführt werden sollen. In diesem Lernprogramm wird ein Manifest verwendet, um alle Objekte zu erstellen, die zum Ausführen der Azure-Abstimmungs-App erforderlich sind. Dieses Manifest enthält zwei Kubernetes-Bereitstellungen: eine für die Azure Vote Python-Beispiel-Apps und die andere für eine Redis-Instanz. Außerdem werden zwei Kubernetes-Dienste erstellt: ein interner Dienst für die Redis-Instanz und ein externer Dienst für den Zugriff auf die Azure Vote-App aus dem Internet.

Erstellen Sie eine Datei namens "azure-vote.yaml ", und kopieren/einfügen Sie die folgende YAML-Definition:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-back
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-back
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        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/v1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-front
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-front
        image: <path to image>/azure-vote-front:v1
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        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

Stellen Sie die App mithilfe des kubectl apply Befehls bereit, und geben Sie den Namen Ihres YAML-Manifests an:

kubectl apply -f azure-vote.yaml

Die folgende Beispielausgabe zeigt Bereitstellungen und Dienste, die erfolgreich erstellt wurden:

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

Testen der App

Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern.

Um den Fortschritt zu überwachen, verwenden Sie den kubectl get service Befehl mit dem --watch Argument:

kubectl get service azure-vote-front --watch

Zunächst wird die EXTERNE IP für den Azure-Abstimmungs-Front-Dienst als ausstehend angezeigt:

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27      <pending>     80:30572/TCP   22m

Wenn sich die EXTERNE-IP-Adresse von "Ausstehend" in eine tatsächliche öffentliche IP-Adresse ändert, verwenden Sie STRG-C, um den kubectl Überwachungsvorgang 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
azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   24m

Öffnen Sie die externe IP-Adresse Ihres Diensts in einem Webbrowser, um die Azure-Abstimmungs-App in Aktion zu sehen.

Screenshot der Startseite der Azure Voting App-Anwendung, die auf einem Kubernetes-Cluster in Azure bereitgestellt wird.

Skalieren von Anwendungspods

Wir haben ein einzelnes Replikat der Azure Voting-App-Front-End- und Redis-Instanz erstellt. Um die Anzahl und den Zustand von Pods in Ihrem Cluster anzuzeigen, verwenden Sie den Befehl kubectl get:

kubectl get pods -n default

Die folgende Beispielausgabe zeigt einen Front-End-Pod und einen Back-End-Pod:

NAME                                READY     STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1       Running   0          25m
azure-vote-front-84c8bf64fc-cdq86   1/1       Running   0          25m

Um die Anzahl von Pods in der azure-vote-front-Bereitstellung zu ändern, verwenden Sie den Befehl kubectl scale. Im folgenden Beispiel wird die Anzahl von Front-End-Pods auf 5 erhöht:

kubectl scale --replicas=5 deployment/azure-vote-front

Führen Sie den Vorgang kubectl get pods erneut aus, um zu überprüfen, ob zusätzliche Pods erstellt wurden. Nach ca. einer Minute sind die zusätzlichen Pods in Ihrem Cluster verfügbar:

kubectl get pods -n default
Name                                READY   STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1     Running   0          31m
azure-vote-front-84c8bf64fc-cdq86   1/1     Running   0          31m
azure-vote-front-84c8bf64fc-56h64   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-djkp8   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-jmmvs   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-znc6z   1/1     Running   0          80s

Nächste Schritte

Verwenden von Azure Monitor zum Überwachen Ihres Clusters und Ihrer Anwendung