Bewährte Anwendungsentwicklermethoden zum Verwalten von Ressourcen in Azure Kubernetes Service (AKS)

Beim Entwickeln und Ausführen von Anwendungen in Azure Kubernetes Service (AKS) sind jedoch einige wichtige Aspekte zu berücksichtigen. Die Art, in der Sie Ihre Anwendungsbereitstellungen verwalten, kann die Benutzerfreundlichkeit der Dienste beeinträchtigen, die Sie bereitstellen.

Dieser Artikel konzentriert sich auf das Ausführen Ihrer Cluster und Workloads aus der Perspektive des Anwendungsentwicklers. Weitere Informationen zu bewährten Verwaltungsmethoden finden Sie unter Bewährte Methoden der Clusterisolierung in Azure Kubernetes Service (AKS).

In diesem Artikel werden die folgenden Themen behandelt:

  • Podressourcenanforderungen und -grenzwerte
  • Methoden zum Entwickeln, Debuggen und Bereitstellen von Anwendungen mit Bridge to Kubernetes und Visual Studio Code.

Definieren von Podressourcenanforderungen und -grenzwerten

Best Practices-Leitfaden

Legen Sie Podanforderungen und -grenzwerte für alle Pods in Ihren YAML-Manifesten fest. Wenn der AKS-Cluster Ressourcenkontingente verwendet und Sie diese Werte nicht definieren, wird Ihre Bereitstellung möglicherweise abgelehnt.

Verwenden Sie Podanforderungen und -grenzwerte, um Computeressourcen in einem AKS-Cluster zu verwalten. Podanforderungen und -grenzwerte informieren den Kubernetes-Scheduler darüber, welche Computeressourcen einem Pod zugewiesen werden sollen.

Podanforderungen für CPU/Arbeitsspeicher

Podanforderungen definieren eine vom Pod regelmäßig benötigte festgelegte CPU-Leistung und Arbeitsspeichermenge.

Es ist wichtig, dass Sie diese Anforderungen und Grenzwerte in Ihren Podspezifikationen basierend auf den oben genannten Informationen definieren. Wenn Sie diese Werte nicht angeben, kann der Kubernetes-Planer die Ressourcen, die Ihre Anwendungen benötigen, nicht berücksichtigen, um die Planungsentscheidungen zu unterstützen.

Überwachen Sie die Leistung Ihrer Anwendung, um Podanforderungen anzupassen. Wenn Sie Podanforderungen unterschätzen, kann die Leistung der Anwendung aufgrund der Überplanung eines Knotens beeinträchtigt werden. Wenn Anforderungen überschätzt werden, kann es zu größeren Schwierigkeiten bei der Planung kommen.

Podgrenzwerte für CPU/Arbeitsspeicher

Podgrenzwerte legen das Maximum an CPU-Leistung und Arbeitsspeichermenge fest, das ein Pod verwenden kann. Speichergrenzwerte definieren, welche Pods bei instabilen Knoten aufgrund unzureichender Ressourcen entfernt werden sollen. Ohne geeignete Grenzwerte werden Pods entfernt, bis der Ressourcendruck gelockert wird. Obwohl ein Pod den CPU-Grenzwert von Zeit zu Zeit überschreiten kann, wird er nicht wegen Überschreitung des CPU-Grenzwerts entfernt.

Mit Podgrenzwerten wird definiert, wann ein Pod die Kontrolle über den Ressourcenverbrauch verliert. Beim Überschreiten des Grenzwerts wird der Pod zum Entfernen markiert. Durch dieses Verhalten werden die Knotenintegrität bewahrt und die Auswirkungen auf Pods minimiert, die den Knoten gemeinsam nutzen. Wenn Sie keinen Podgrenzwert festlegen, wird standardmäßig der höchste verfügbare Wert auf einem bestimmten Knoten festgelegt.

Vermeiden Sie es, einen höheren Podgrenzwert festzulegen, als Ihre Knoten unterstützen können. Jeder AKS-Knoten reserviert eine bestimmte Menge von CPU-Leistung und Arbeitsspeichermenge für die Kubernetes-Kernkomponenten. Ihre Anwendung versucht möglicherweise, zu viele Ressourcen auf dem Knoten für die erfolgreiche Ausführung anderer Pods zu beanspruchen.

Überwachen Sie die Leistung Ihrer Anwendung zu verschiedenen Zeitpunkten während des Tags oder der Woche. Bestimmen Sie die Spitzenzeiten der Nachfrage, und passen Sie die Podgrenzwerte den Ressourcen an, die zur Deckung des maximalen Bedarfs erforderlich sind.

Wichtig

Definieren Sie diese Anforderungen und Grenzwerte in Ihren Podspezifikationen basierend auf den oben genannten Informationen. Wenn diese Werte nicht angegeben werden, kann der Kubernetes-Planer nicht die Ressourcen berücksichtigen, die Ihre Anwendungen benötigen, um die Planungsentscheidungen zu unterstützen.

Wenn der Planer einen Pod auf einem Knoten mit unzureichenden Ressourcen platziert, wird die Anwendungsleistung beeinträchtigt. Clusteradministratoren müssen Ressourcenkontingente für einen Namespace festlegen, zu dem Sie Ressourcenanforderungen und -grenzwerte festlegen müssen. Weitere Informationen finden Sie unter Ressourcenkontingente auf AKS-Clustern.

Beim Definieren einer CPU-Anforderung oder eines Grenzwerts wird der Wert in CPU-Einheiten gemessen.

  • 1.0 Die CPU entspricht einem zugrunde liegenden virtuellen CPU-Kern auf dem Knoten.
    • Dieselbe Maßeinheit wird für GPUs verwendet.
  • Sie können Anteile, gemessen in Millicore, definieren. Beispiel: 100 m ist 0,1 eines zugrunde liegenden vCPU-Kerns.

Im folgenden grundlegenden Beispiel für einen einzelnen NGINX-Pod fordert der Pod 100 m der CPU-Zeit und 128Mi des Arbeitsspeichers an. Die Ressourcengrenzwerte für den Pod sind auf 250 m CPU und 256Mi Arbeitsspeicher festgelegt.

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi

Weitere Informationen zu Ressourcenverwaltung und Zuweisungen finden Sie unter Verwalten von Computeressourcen für Container.

Entwickeln und Debuggen von Anwendungen für einen AKS-Cluster

Best Practices-Leitfaden

Entwicklungsteams sollten einen AKS-Cluster mithilfe von Bridge to Kubernetes bereitstellen und debuggen.

Mit Bridge to Kubernetes können Sie Anwendungen direkt für einen AKS-Cluster entwickeln, debuggen und testen. Entwickler in einem Team arbeiten zusammen, um während des gesamten Anwendungslebenszyklus diese zu erstellen und zu testen. Vorhandene Tools wie Visual Studio oder Visual Studio Code können mit der Bridge to Kubernetes-Erweiterung weiterhin verwendet werden.

Durch Verwendung des integrierten Entwicklungs- und Testprozesses mit Bridge to Kubernetes wird der Bedarf an lokalen Testumgebungen wie minikube reduziert. Stattdessen entwickeln und testen Sie anhand eines AKS-Clusters, auch anhand gesicherter und isolierter Cluster.

Hinweis

Bridge to Kubernetes ist für die Verwendung mit auf Linux-Pods und -Knoten ausgeführten Anwendungen vorgesehen.

Verwenden der Visual Studio Code-Erweiterung (VS Code) für Kubernetes

Best Practices-Leitfaden

Installieren und verwenden Sie die VS Code-Erweiterung für Kubernetes beim Schreiben von YAML-Manifesten. Sie können die Erweiterung auch für integrierte Bereitstellungslösungen verwenden, was Besitzern von Anwendungen helfen kann, die nur selten mit dem AKS-Cluster interagieren.

Die Visual Studio Code-Erweiterung für Kubernetes hilft Ihnen, Anwendungen in AKS zu entwickeln und bereitzustellen. Die Erweiterung stellt die folgenden Funktionen bereit:

  • Intellisense für Kubernetes-Ressourcen, Helm-Diagramme und Vorlagen

  • Die Fähigkeit zum Durchsuchen, Bereitstellen und Bearbeiten von Kubernetes-Ressourcen in VS Code.

  • Intellisense-Überprüfung für Ressourcenanforderungen oder -grenzwerte, die in den Podspezifikationen festgelegt werden:

    VS Code extension for Kubernetes warning about missing memory limits

Nächste Schritte

Dieser Artikel konzentriert sich darauf, wie Sie Ihre Cluster und Workloads aus der Perspektive des Clusteroperators ausführen. Weitere Informationen zu bewährten Verwaltungsmethoden finden Sie unter Bewährte Methoden der Clusterisolierung in Azure Kubernetes Service (AKS).

Informationen zum Implementieren einiger dieser bewährten Methoden finden Sie unter Entwickeln mit Bridge to Kubernetes.