Optimieren von Kosten in Azure Kubernetes Service (AKS)

Bei der Kostenoptimierung geht es darum, den Wert von Ressourcen zu maximieren und gleichzeitig unnötige Ausgaben in Ihrer Cloudumgebung zu minimieren. Dieser Prozess umfasst die Ermittlung kostengünstiger Konfigurationsoptionen und die Implementierung bewährter Methoden zum Verbessern der betrieblichen Effizienz. Eine AKS-Umgebung (Azure Kubernetes Service) kann optimiert werden, um die Kosten unter Berücksichtigung der Leistungs- und Zuverlässigkeitsanforderungen zu minimieren.

In diesem Artikel lernen Sie Folgendes:

  • Strategische Infrastrukturauswahl
  • Dynamische Dimensionierung und automatische Skalierung
  • Nutzen von Azure-Rabatten, um erhebliche Einsparungen zu erzielen
  • Ganzheitliche Überwachung und FinOps-Methoden

Vorbereiten der Anwendungsumgebung

Bewerten der SKU-Familie

Es ist wichtig, die Ressourcenanforderungen Ihrer Anwendung vor der Bereitstellung zu bewerten. Kleine Entwicklungsworkloads haben andere Infrastrukturanforderungen als große produktionsbereite Workloads. Obwohl die Kombination von CPU-, Arbeitsspeicher- und Netzwerkkapazitätskonfigurationen großen Einfluss auf die Kosteneffizienz einer SKU hat, sollten Sie die folgenden VM-Typen prüfen und in Erwägung ziehen:

  • Azure Spot Virtual Machines - Spot-Knotenpools werden von Azure Spot-VM-Skalierungsgruppen unterstützt und in einer einzelnen Fehlerdomäne ohne Hochverfügbarkeit oder SLA-Garantien (Service Level Agreement, Vereinbarung zum Servicelevel) bereitgestellt. Spot-VMs ermöglichen es Ihnen, nicht genutzte Azure-Kapazität mit erheblichen Rabatten (bis zu 90 % im Vergleich zu den Preisen für die nutzungsbasierte Bezahlung) zu nutzen. Wenn Azure die Kapazität wieder benötigt, entfernt die Azure-Infrastruktur die Spot-Knoten. Am besten geeignet für Dev/Test-Umgebungen, Workloads, die Unterbrechungen behandeln können (z. B. Batchverarbeitungsaufträge), und Workloads mit flexibler Ausführungszeit.
  • Ampere Altra Arm-basierte Prozessoren (ARM64): ARM64-VMs sind energieeffizient und kostengünstig, ohne Kompromisse bei der Leistung zu machen. Mit der Unterstützung für ARM64-Knotenpools in AKS können Sie ARM64-Ubuntu-Agent-Knoten erstellen und sogar Knoten mit Intel- und ARM-Architektur in einem Cluster kombinieren. Diese ARM-VMs sind dafür konzipiert, dynamische, skalierbare Workloads effizient auszuführen, und können für Workloads mit horizontaler Skalierung eine um bis zu 50 % bessere Preisleistung bieten als vergleichbare x86-basierte VMs. Am besten geeignet für Web- oder Anwendungsserver, Open-Source-Datenbanken, cloudnative Anwendungen, Gamingserver und vieles mehr.
  • GPU-optimierte SKUs: Je nach Art der Workload sollten Sie die Verwendung von für Compute optimierten, arbeitsspeicheroptimierten, datenspeicheroptimierten oder sogar GPU-optimierten (Graphical Processing Unit) VM-SKUs in Betracht ziehen. Bei den GPU-optimierten VM-Größen handelt es sich um spezialisierte VMs, die mit einzelnen, mehreren oder Teil-GPUs verfügbar sind. GPU-fähige Linux-Knotenpools in AKS eignen sich am besten für rechenintensive Workloads wie das Grafikrendering, Trainieren großer Modelle und Rückschließen.

Hinweis

Die Computekosten variieren je nach Region. Achten Sie bei der Auswahl einer kostengünstigeren Region zum Ausführen von Workloads auf die potenziellen Auswirkungen der Wartezeit sowie die Datenübertragungskosten. Weitere Informationen zu VM-SKUs und ihren Merkmalen finden Sie unter Größen für virtuelle Computer in Azure.

Verwenden voreingestellter Clusterkonfigurationen

Die Auswahl der richtigen VM-SKU, Regionen und Knotenanzahl sowie anderer Konfigurationsoptionen im Vorfeld kann schwierig sein. Durch die Option Voreingestellte Clusterkonfigurationen im Azure-Portal entfällt diese erste Herausforderung. Sie stellt empfohlene Konfigurationen für unterschiedliche Anwendungsumgebungen bereit, die kostensparend und leistungsfähig sind. Die voreingestellte Konfiguration Dev/Test ist am besten geeignet für die Entwicklung neuer Workloads oder das Testen vorhandener Workloads. Die voreingestellte Konfiguration Produktionswirtschaft ist am besten geeignet für die kostenbewusste Verarbeitung von Produktionsdatenverkehr, wenn Ihre Workloads Unterbrechungen tolerieren können. Nicht kritische Features sind standardmäßig deaktiviert, und die voreingestellten Werte können jederzeit geändert werden.

Erwägen der Mehrinstanzenfähigkeit

AKS bietet Flexibilität beim Ausführen von mehrinstanzenfähigen Clustern und Isolieren von Ressourcen. Für eine benutzerfreundliche Mehrinstanzenfähigkeit können Cluster und die Infrastruktur über die logische Isolation zwischen Teams und Geschäftseinheiten geteilt werden. Kubernetes-Namespaces bilden die logische Isolationsgrenze für Workloads und Ressourcen. Die gemeinsame Nutzung der Infrastruktur reduziert den Verwaltungsaufwand für Cluster und verbessert gleichzeitig die Ressourcenverwendung und die Poddichte innerhalb des Clusters. Weitere Informationen zur Mehrinstanzenfähigkeit in AKS und zum Prüfen der Eignung dieser Option für Ihre Organisationsanforderungen finden Sie unter Überlegungen zur Mehrinstanzenfähigkeit mit Azure Kubernetes Service (AKS) und Entwerfen von Clustern für die Mehrinstanzenfähigkeit.

Warnung

Kubernetes-Umgebungen sind nicht vollständig vor feindseliger Mehrinstanzenfähigkeit geschützt. Wenn ein Mandant in der freigegebenen Infrastruktur nicht vertrauenswürdig ist, ist eine zusätzliche Planung erforderlich, um zu verhindern, dass Mandanten die Sicherheit anderer Dienste beeinträchtigen.

Erwägen Sie die Verwendung physischer Isolationsgrenzen. In diesem Modell werden Teams oder Workloads ihrem eigenen Cluster zugewiesen. Der zusätzliche Verwaltungs- und Finanzaufwand ist ein Nachteil.

Erstellen cloudnativer Anwendungen

Verwenden eines schlanken Containerentwurfs

Der Begriff „schlanker Container“ bezieht sich auf die Optimierung der Größe und des Ressourcenbedarfs der containerisierten Anwendung. Überprüfen Sie, ob Ihr Basisimage minimal ist und nur die erforderlichen Abhängigkeiten enthält. Entfernen Sie nicht benötigte Bibliotheken und Pakete. Ein kleineres Containerimage beschleunigt die Bereitstellung und erhöht die Effizienz des Skalierungsvorgangs. Falls Sie noch einen Schritt weiter gehen möchten, ermöglicht Ihnen das Artefaktstreaming auf AKS das Streamen von Containerimages aus Azure Container Registry (ACR). Beim Artefaktstreaming wird nur die erforderliche Ebene für den anfänglichen Podstart gepullt, wodurch die Pullzeit für größere Images von Minuten auf Sekunden reduziert wird.

Durchsetzen von Ressourcenkontingenten

Ressourcenkontingente sind eine Möglichkeit, um Ressourcen in einem Entwicklungsteam oder -projekt zu reservieren und einzuschränken. Kontingente werden für einen Namespace definiert und können für Computeressourcen, Speicherressourcen und die Objektanzahl festgelegt werden. Wenn Sie Ressourcenkontingente definieren, können einzelne Namespaces nicht mehr Ressourcen verbrauchen als ihnen zugeordnet sind. Dies ist besonders bei mehrinstanzenfähigen Clustern wichtig, bei denen Teams die Infrastruktur gemeinsam nutzen.

Verwenden des Features zum Starten/Beenden von Clustern

Kleine Entwicklungs- und Testcluster können erhebliche unnötige Ausgaben verursachen, wenn sie nicht beaufsichtigt werden. Deaktivieren Sie Cluster, die nicht durchgängig aktiv sein müssen, mit dem Feature zum Starten und Beenden von Clustern. Dadurch werden alle System- und Benutzerknotenpools heruntergefahren, sodass keine Kosten für zusätzliche Computeressourcen anfallen. Alle Objekte und der Clusterstatus werden beibehalten, wenn Sie den Cluster wieder starten.

Verwenden von Kapazitätsreservierungen

Mit Kapazitätsreservierungen können Sie für einen beliebigen Zeitraum Computekapazität in einer Azure-Region oder -Verfügbarkeitszone reservieren. Reservierte Kapazität ist zur sofortigen Nutzung verfügbar, bis die Reservierung gelöscht wird. Das Zuordnen einer vorhandenen Kapazitätsreservierungsgruppe zu einem Knotenpool garantiert die zugeordnete Kapazität für Ihren Knotenpool und hilft Ihnen, potenzielle Spitzen in den Preisen für die Nutzung bei Bedarf während Zeiträumen mit hohen Computeanforderungen zu vermeiden.

Überwachen der Umgebung und der Ausgaben

Verbessern der Transparenz mit Microsoft Cost Management

Microsoft Cost Management bietet eine breite Palette von Funktionen, die Sie bei der Cloudbudgetierung und -planung unterstützen und sowohl innerhalb als auch außerhalb des Clusters Kostentransparenz bieten. Transparenz ist zum Entschlüsseln von Ausgabentrends, Ermitteln von Optimierungsmöglichkeiten und Verbessern der Verantwortlichkeit zwischen Anwendungsentwicklern und Plattformteams unerlässlich. Aktivieren Sie das Add-On für die AKS-Kostenanalyse, um zusammen mit den Kategorien „Azure Compute“, „Netzwerk“ und „Speicher“ eine detaillierte Aufschlüsselung der Clusterkosten nach Kubernetes-Konstrukten zu erhalten.

Azure Monitor

Wenn Sie Metrikdaten über Container Insights erfassen, wird empfohlen, zu verwalteten Prometheus-Metriken zu migrieren, da dies eine erhebliche Senkung der Kosten ermöglicht. Sie können Container Insights-Metriken mithilfe der Datensammlungsregel (Data Collection Rule, DCR) deaktivieren und das Managed Prometheus-Add-On bereitstellen, das die Konfiguration über Azure Resource Manager, die Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI), das Azure-Portal und Terraform unterstützt.

Wenn Sie auf die Protokollerfassung angewiesen sind, empfehlen wir, die API für Basisprotokolle zu verwenden, um die Log Analytics-Kosten zu reduzieren. Weitere Informationen finden Sie unter Best Practices für Azure Monitor und Informationen zur Kostenüberwachung für Container Insights.

Optimieren von Workloads durch automatische Skalierung

Aktivieren der automatischen Anwendungsskalierung

Vertikale automatische Podskalierung

Anforderungen und Grenzwerte, die deutlich höher als die tatsächliche Nutzung sind, können zu überdimensionierten Workloads und zur Verschwendung von Ressourcen führen. Zu niedrige Anforderungen und Grenzwerte können dagegen durch unzureichenden Arbeitsspeicher zu Drosselungs- und Workloadproblemen führen. Die vertikale automatische Podskalierung (Vertical Pod Autoscaler, VPA) ermöglicht es Ihnen, die von Ihren Pods benötigten CPU- und Arbeitsspeicherressourcen zu optimieren. Die VPA stellt basierend auf der historischen Containerverwendung empfohlene Werte für CPU- und Arbeitsspeicheranforderungen sowie Grenzwerte bereit, die Sie manuell festlegen oder automatisch aktualisieren können. Am besten geeignet für Anwendungen mit schwankenden Ressourcenanforderungen.

Horizontale automatische Podskalierung

Die horizontale automatische Podskalierung (Horizontal Pod Autoscaler, HPA) skaliert die Anzahl von Podreplikaten dynamisch auf der Grundlage einer beobachteten Metrik (z. B. CPU- oder Arbeitsspeicherauslastung). In Zeiten mit hohem Bedarf skaliert die HPA auf, indem sie weitere Podreplikate zum Verteilen der Arbeitsauslastung hinzufügt. In Zeiten mit geringem Bedarf skaliert die HPA ab, indem sie die Anzahl von Replikaten reduziert, um Ressourcen zu sparen. Am besten geeignet für Anwendungen mit vorhersagbaren Ressourcenanforderungen.

Warnung

Verwenden Sie die vertikale automatische Podskalierung nicht in Kombination mit der horizontalen automatischen Podskalierung für die gleichen CPU- oder Speichermetriken. Diese Kombination kann zu Konflikten führen, da beide Autoskalierungen anhand der gleichen Metriken versuchen, auf Bedarfsänderungen zu reagieren. Sie können allerdings die vertikale automatische Podskalierung für CPU oder Arbeitsspeicher und die horizontale automatische Podskalierung für benutzerdefinierte Metriken verwenden, um Überschneidungen zu vermeiden und sicherzustellen, dass sich die Autoskalierungen jeweils auf unterschiedliche Aspekte der Workloadskalierung konzentrieren.

Ereignisgesteuerte automatische Kubernetes-Skalierung

Das Kubernetes Event-Driven Autoscaler (KEDA)-Add-On- bietet zusätzliche Flexibilität und ermöglicht Ihnen die Skalierung auf Grundlage verschiedener ereignisgesteuerter Metriken, die dem Verhalten Ihrer Anwendung entsprechen. Für eine Webanwendung kann KEDA beispielsweise den eingehenden HTTP-Anforderungsdatenverkehr überwachen und die Anzahl der Podreplikate anpassen, um sicherzustellen, dass die Anwendung reaktionsfähig bleibt. Bei Verarbeitungsaufträgen kann KEDA die Anwendung basierend auf der Länge der Nachrichtenwarteschlange skalieren. Verwaltete Unterstützung wird für alle Azure-Skalierungsfunktionen bereitgestellt.

Aktivieren der automatischen Infrastrukturskalierung

Automatische Skalierung von Clustern

Um die Anwendungsanforderungen zu erfüllen, überwacht Automatische Clusterskalierung, ob Pods vorhanden sind, die aufgrund von Ressourceneinschränkungen nicht geplant werden können, und skaliert die Anzahl der Knoten im Knotenpool entsprechend. Wenn Knoten keine ausgeführten Pods aufweisen, skaliert die automatische Clusterskalierung die Anzahl der Knoten herunter. Die Profileinstellungen für die automatische Clusterskalierung gelten für alle Knotenpools im Cluster, für die die automatische Skalierung aktiviert ist. Weitere Informationen finden Sie in den bewährten Methoden und Überlegungen zur automatischen Clusterskalierung.

Automatische Bereitstellung von Knoten

Komplizierte Workloads erfordern möglicherweise mehrere Knotenpools mit unterschiedlichen Konfigurationen der VM-Größe, um die CPU- und Arbeitsspeicheranforderungen zu erfüllen. Die genaue Auswahl und Verwaltung mehrerer Knotenpoolkonfigurationen erhöht die Komplexität und den operativen Mehraufwand. Die automatische Bereitstellung von Knoten (Node Autoprovision, NAP) vereinfacht die SKU-Auswahl und bestimmt basierend auf den anstehenden Podressourcenanforderungen die optimale VM-Konfiguration, um Workloads auf die effizienteste und kostengünstigste Weise auszuführen.

Sparen mit Azure-Rabatten

Azure-Reservierungen

Wenn Ihre Workload vorhersagbar und für einen längeren Zeitraum vorhanden ist, sollten Sie den Kauf einer Azure-Reservierung erwägen, um Ihre Ressourcenkosten weiter zu senken. Azure-Reservierungen sind mit einer Laufzeit von einem oder drei Jahren erhältlich und bieten für Compute einen Rabatt von bis zu 72 % im Vergleich zu den Preisen für die nutzungsbasierte Bezahlung. Reservierungen werden automatisch auf die entsprechenden Ressourcen angewendet. Am besten geeignet für Workloads, die dafür vorgesehen sind, über einen längeren Zeitraum in den gleichen SKUs und Regionen ausgeführt zu werden.

Azure-Sparplan

Wenn Sie konstante Ausgaben haben, durch die Verwendung unterschiedlicher Ressourcen zwischen den SKUs und Regionen aber keine Azure-Reservierungen nutzen können, sollten Sie den Kauf eines Azure-Sparplans in Erwägung ziehen. Wie bei Azure-Reservierungen gilt für Azure-Sparpläne eine Laufzeit von einem oder drei Jahren, und sie werden automatisch auf alle Ressourcen innerhalb des Gültigkeitsbereichs angewendet. Sie verpflichten sich, einen festen Stundenbetrag für Computeressourcen auszugeben, unabhängig von der SKU oder Region. Am besten geeignet für Workloads, die unterschiedliche Ressourcen und/oder Rechenzentrumsregionen nutzen.

Azure-Hybridvorteil

Der Azure-Hybridvorteil für Azure Kubernetes Service (AKS) ermöglicht es Ihnen, den Wert Ihrer lokalen Lizenzen ohne zusätzliche Kosten zu maximieren. Verwenden Sie beliebige qualifizierte lokale Lizenzen, die zudem über aktive Software Assurance (SA) oder ein berechtigtes Abonnement verfügen, um Windows-VMs in Azure zu reduzierten Kosten zu erhalten.

Schaffen einer Kultur der Kosteneinsparung mit FinOps

FinOps (Financial Operations, Finanzgeschäft) ist eine Fachrichtung, die finanzielle Rechenschaftspflicht mit Cloudverwaltung und -optimierung kombiniert. Ihr Schwerpunkt ist die Abstimmung zwischen Finanz-, Betriebs- und Entwicklungsteams, um die Cloudkosten zu verstehen und zu kontrollieren. Die FinOps Foundation hat mehrere wichtige Projekte veröffentlicht:

  • FinOps Framework: Ein Betriebsmodell zum Anwenden und Implementieren von FinOps.
  • FOCUS-Spezifikation: Eine technische Spezifikation und ein offener Standard für Cloudnutzung, -kosten und -abrechnungsdaten für alle wichtigen Cloudanbieterdienste.

Nächste Schritte

Die Kostenoptimierung ist ein fortlaufender und iterativer Prozess. In den folgenden Empfehlungen und Architekturleitfäden erfahren Sie mehr zu diesem Thema: