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:
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.
Azure Kubernetes Service