Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet

Würfel auf Würfel, Metacluster, Waben, Ressourcenverteilung

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 1. Kubernetes-Ökosystem auf Alibaba Cloud

Seit 2015 ist Alibaba Cloud Container Service for Kubernetes (ACK) einer der am schnellsten wachsenden Cloud-Dienste in Alibaba Cloud. Es bedient zahlreiche Kunden und unterstützt auch die interne Infrastruktur von Alibaba und die anderen Cloud-Dienste des Unternehmens.

Wie bei ähnlichen Containerdiensten von erstklassigen Cloud-Anbietern sind Zuverlässigkeit und Verfügbarkeit für uns oberste Priorität. Dadurch wurde eine skalierbare und global zugängliche Plattform für Zehntausende Kubernetes-Cluster geschaffen.

In diesem Artikel teilen wir unsere Erfahrungen mit der Verwaltung einer großen Anzahl von Kubernetes-Clustern in der Cloud-Infrastruktur sowie die Architektur der zugrunde liegenden Plattform.

Eintrag

Kubernetes ist zum De-facto-Standard für eine Vielzahl von Workloads in der Cloud geworden. Wie in Abb. 1 oben: Immer mehr Alibaba Cloud-Anwendungen laufen jetzt auf Kubernetes-Clustern: zustandsbehaftete und zustandslose Anwendungen sowie Anwendungsmanager. Kubernetes-Management war schon immer ein interessantes und ernstes Diskussionsthema für Ingenieure, die Infrastruktur aufbauen und warten. Bei Cloud-Anbietern wie Alibaba Cloud steht das Thema Skalierung im Vordergrund. Wie verwaltet man Kubernetes-Cluster in dieser Größenordnung? Wir haben bereits Best Practices für die Verwaltung riesiger Kubernetes-Cluster mit 10 Knoten behandelt. Das ist natürlich ein interessantes Skalierungsproblem. Aber es gibt noch eine andere Skala: Quantität die Cluster selbst.

Wir haben dieses Thema mit vielen ACK-Benutzern diskutiert. Die meisten von ihnen entscheiden sich dafür, Dutzende, wenn nicht Hunderte kleiner oder mittlerer Kubernetes-Cluster zu betreiben. Dafür gibt es gute Gründe: potenzielle Schäden begrenzen, Cluster für verschiedene Teams trennen, virtuelle Cluster zum Testen erstellen. Wenn ACK mit diesem Nutzungsmodell ein globales Publikum bedienen möchte, muss es eine große Anzahl von Clustern in mehr als 20 Regionen zuverlässig und effizient verwalten.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 2. Probleme bei der Verwaltung einer großen Anzahl von Kubernetes-Clustern

Was sind die größten Herausforderungen bei der Verwaltung von Clustern dieser Größenordnung? Wie in der Abbildung dargestellt, gibt es vier Probleme, mit denen man sich befassen muss:

  • Heterogenität

ACK sollte verschiedene Arten von Clustern unterstützen, darunter Standard-, serverlose, Edge-, Windows- und mehrere andere. Unterschiedliche Cluster erfordern unterschiedliche Optionen, Komponenten und Hosting-Modelle. Einige Kunden benötigen Unterstützung bei der Anpassung an ihre spezifischen Fälle.

  • Verschiedene Clustergrößen

Die Größe der Cluster variiert von ein paar Knoten mit einigen Pods bis hin zu Zehntausenden von Knoten mit Tausenden von Pods. Auch der Ressourcenbedarf variiert stark. Eine unsachgemäße Ressourcenzuweisung kann die Leistung beeinträchtigen oder sogar zu Fehlern führen.

  • Verschiedene Versionen

Kubernetes entwickelt sich sehr schnell. Alle paar Monate werden neue Versionen veröffentlicht. Kunden sind immer bereit, neue Funktionen auszuprobieren. Daher wollen sie die Testlast auf die neuen Versionen von Kubernetes und die Produktionslast auf die stabilen Versionen legen. Um diese Anforderung zu erfüllen, muss ACK den Kunden kontinuierlich neue Versionen von Kubernetes liefern und gleichzeitig stabile Versionen aufrechterhalten.

  • Sicherheitskonformität

Cluster sind über verschiedene Regionen verteilt. Daher müssen sie verschiedene Sicherheitsanforderungen und behördliche Vorschriften einhalten. Beispielsweise muss ein Cluster in Europa DSGVO-konform sein, während eine Finanz-Cloud in China über zusätzliche Schutzebenen verfügen muss. Diese Anforderungen sind zwingend und es ist inakzeptabel, sie zu ignorieren, da dies große Risiken für Kunden der Cloud-Plattform mit sich bringt.

Die ACK-Plattform ist darauf ausgelegt, die meisten der oben genannten Probleme zu lösen. Derzeit verwaltet es zuverlässig und stabil mehr als 10 Kubernetes-Cluster auf der ganzen Welt. Schauen wir uns an, wie dies erreicht wurde, unter anderem durch mehrere wichtige Design-/Architekturprinzipien.

Design

Würfel auf Würfel und Wabe

Im Gegensatz zu einer zentralisierten Hierarchie wird eine zellenbasierte Architektur typischerweise verwendet, um eine Plattform über ein einzelnes Rechenzentrum hinaus zu skalieren oder den Umfang der Notfallwiederherstellung zu erweitern.

Jede Region in der Alibaba Cloud besteht aus mehreren Zonen (AZ) und entspricht in der Regel einem bestimmten Rechenzentrum. In einer großen Region (z. B. Huangzhou) gibt es oft Tausende von Kubernetes-Client-Clustern, auf denen ACK ausgeführt wird.

ACK verwaltet diese Kubernetes-Cluster mithilfe von Kubernetes selbst, was bedeutet, dass ein Kubernetes-Metacluster ausgeführt wird, um die Client-Kubernetes-Cluster zu verwalten. Diese Architektur wird auch „Kube-on-Kube“ (KoK) genannt. Die KoK-Architektur vereinfacht die Verwaltung von Client-Clustern, da die Cluster-Bereitstellung einfach und deterministisch ist. Noch wichtiger ist, dass wir native Kubernetes-Funktionen wiederverwenden können. Beispielsweise können Sie API-Server durch Bereitstellung verwalten und den etcd-Operator verwenden, um mehrere etcds zu verwalten. Eine solche Rekursion bereitet immer besondere Freude.

Abhängig von der Anzahl der Clients werden mehrere Kubernetes-Metacluster innerhalb einer Region bereitgestellt. Wir nennen diese Metacluster Zellen. Zum Schutz vor dem Ausfall einer gesamten Zone unterstützt ACK multiaktive Bereitstellungen in einer einzelnen Region: Der Metacluster verteilt Kubernetes-Client-Cluster-Master-Komponenten über mehrere Zonen und führt sie gleichzeitig, also im multiaktiven Modus, aus. Um die Zuverlässigkeit und Effizienz des Masters sicherzustellen, optimiert ACK die Platzierung der Komponenten und stellt sicher, dass der API-Server und etcd nahe beieinander liegen.

Mit diesem Modell können Sie Kubernetes effizient, flexibel und zuverlässig verwalten.

Metacluster-Ressourcenplanung

Wie bereits erwähnt, hängt die Anzahl der Metacluster in jeder Region von der Anzahl der Clients ab. Aber wann soll ein neuer Metacluster hinzugefügt werden? Dies ist ein typisches Ressourcenplanungsproblem. In der Regel ist es üblich, ein neues zu erstellen, wenn bestehende Metacluster alle Ressourcen erschöpft haben.

Nehmen wir zum Beispiel Netzwerkressourcen. In der KoK-Architektur werden Kubernetes-Komponenten aus Client-Clustern als Pods in einem Metacluster bereitgestellt. Wir gebrauchen Terway (Abb. 3) ist ein von Alibaba Cloud entwickeltes Hochleistungs-Plugin für das Container-Netzwerkmanagement. Es bietet umfangreiche Sicherheitsrichtlinien und ermöglicht Ihnen die Verbindung mit den Virtual Private Clouds (VPCs) der Kunden über das Alibaba Cloud Elastic Networking Interface (ENI). Um Netzwerkressourcen effektiv auf Knoten, Pods und Dienste in einem Metacluster zu verteilen, müssen wir ihre Nutzung innerhalb des Metaclusters der virtuellen privaten Clouds sorgfältig überwachen. Wenn die Netzwerkressourcen erschöpft sind, wird eine neue Zelle erstellt.

Um die optimale Anzahl an Client-Clustern in jedem Metacluster zu ermitteln, berücksichtigen wir auch unsere Kosten, Dichteanforderungen, Ressourcenquote, Zuverlässigkeitsanforderungen und Statistiken. Auf der Grundlage all dieser Informationen wird die Entscheidung getroffen, einen neuen Metacluster zu erstellen. Bitte beachten Sie, dass kleine Cluster in Zukunft stark wachsen können, sodass der Ressourcenverbrauch steigt, auch wenn die Anzahl der Cluster unverändert bleibt. Normalerweise lassen wir genügend freien Platz, damit jeder Cluster wachsen kann.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 3. Terway-Netzwerkarchitektur

Skalierung der Assistentenkomponenten über Client-Cluster hinweg

Wizard-Komponenten haben unterschiedliche Ressourcenanforderungen. Sie hängen von der Anzahl der Knoten und Pods im Cluster sowie der Anzahl der nicht standardmäßigen Controller/Operatoren ab, die mit APIServer interagieren.

In ACK unterscheidet sich jeder Kubernetes-Client-Cluster in Größe und Laufzeitanforderungen. Es gibt keine universelle Konfiguration zum Platzieren von Assistentenkomponenten. Wenn wir für einen großen Client versehentlich ein niedriges Ressourcenlimit festlegen, kann sein Cluster die Last nicht bewältigen. Wenn Sie für alle Cluster ein konservativ hohes Limit festlegen, werden Ressourcen verschwendet.

Um einen subtilen Kompromiss zwischen Zuverlässigkeit und Kosten zu finden, verwendet ACK ein Typensystem. Wir definieren nämlich drei Arten von Clustern: klein, mittel und groß. Jeder Typ verfügt über ein separates Ressourcenzuteilungsprofil. Der Typ wird anhand der Auslastung der Assistentenkomponenten, der Anzahl der Knoten und anderer Faktoren bestimmt. Der Clustertyp kann sich im Laufe der Zeit ändern. ACK überwacht diese Faktoren kontinuierlich und kann entsprechend nach oben/unten tippen. Sobald der Clustertyp geändert wird, wird die Ressourcenzuteilung automatisch mit minimalem Benutzereingriff aktualisiert.

Wir arbeiten daran, dieses System durch eine feinere Skalierung und eine präzisere Typaktualisierung zu verbessern, damit diese Änderungen reibungsloser ablaufen und wirtschaftlich sinnvoller sind.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 4. Intelligente mehrstufige Typenumschaltung

Entwicklung von Kundenclustern im großen Maßstab

In den vorherigen Abschnitten wurden einige Aspekte der Verwaltung einer großen Anzahl von Kubernetes-Clustern behandelt. Es gibt jedoch noch ein weiteres Problem, das gelöst werden muss: die Entwicklung von Clustern.

Kubernetes ist das „Linux“ der Cloud-Welt. Es wird kontinuierlich aktualisiert und modularer. Wir müssen unseren Kunden ständig neue Versionen liefern, Schwachstellen beheben und bestehende Cluster aktualisieren sowie eine große Anzahl verwandter Komponenten verwalten (CSI, CNI, Device Plugin, Scheduler Plugin und viele andere).

Nehmen wir als Beispiel die Kubernetes-Komponentenverwaltung. Zunächst haben wir ein zentrales System zur Registrierung und Verwaltung aller dieser verbundenen Komponenten entwickelt.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 5. Flexible und steckbare Komponenten

Bevor Sie fortfahren, müssen Sie sicherstellen, dass das Update erfolgreich war. Hierzu haben wir ein System zur Überprüfung der Funktionalität von Bauteilen entwickelt. Die Prüfung wird vor und nach dem Update durchgeführt.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 6. Vorprüfung der Clusterkomponenten

Um diese Komponenten schnell und zuverlässig zu aktualisieren, arbeitet ein Continuous-Deployment-System mit Unterstützung für Teilfortschritt (Graustufen), Pausen und andere Funktionen. Standard-Kubernetes-Controller sind für diesen Anwendungsfall nicht gut geeignet. Um Cluster-Komponenten zu verwalten, haben wir daher eine Reihe spezialisierter Controller entwickelt, darunter ein Plugin und ein Hilfssteuermodul (Sidecar-Management).

Beispielsweise ist der BroadcastJob-Controller darauf ausgelegt, Komponenten auf jedem Arbeitscomputer zu aktualisieren oder Knoten auf jedem Computer zu überprüfen. Der Broadcast-Job führt auf jedem Knoten im Cluster einen Pod aus, ähnlich einem DaemonSet. Allerdings hält DaemonSet den Pod immer lange am Laufen, während BroadcastJob ihn zusammenbricht. Der Broadcast-Controller startet außerdem Pods auf neu verbundenen Knoten und initialisiert die Knoten mit den erforderlichen Komponenten. Im Juni 2019 haben wir den Quellcode der OpenKruise-Automatisierungs-Engine geöffnet, die wir selbst im Unternehmen nutzen.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 7. OpenKurise organisiert die Ausführung der Broadcast-Aufgabe auf allen Knoten

Um Kunden bei der Auswahl der richtigen Clusterkonfigurationen zu unterstützen, stellen wir auch eine Reihe vordefinierter Profile bereit, darunter Serverless-, Edge-, Windows- und Bare-Metal-Profile. Wenn die Landschaft wächst und die Bedürfnisse unserer Kunden wachsen, werden wir weitere Profile hinzufügen, um den langwierigen Einrichtungsprozess zu vereinfachen.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 8. Erweiterte und flexible Clusterprofile für verschiedene Szenarien

Globale Beobachtbarkeit über Rechenzentren hinweg

Wie in der folgenden Abb. gezeigt. 9. Der Cloud-Service Alibaba Cloud Container wurde in zwanzig Regionen auf der ganzen Welt bereitgestellt. Angesichts dieser Größenordnung besteht eines der Hauptziele von ACK darin, den Status laufender Cluster einfach zu überwachen, damit wir schnell auf die Situation reagieren können, wenn ein Client-Cluster auf ein Problem stößt. Mit anderen Worten: Sie müssen eine Lösung finden, die es Ihnen ermöglicht, effizient und sicher Statistiken in Echtzeit von Kundenclustern in allen Regionen zu sammeln – und die Ergebnisse visuell darzustellen.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 9. Weltweiter Einsatz des Alibaba Cloud Container-Dienstes in zwanzig Regionen

Wie viele Kubernetes-Überwachungssysteme verwenden wir Prometheus als unser Hauptwerkzeug. Für jeden Metacluster erfassen Prometheus-Agenten die folgenden Metriken:

  • Betriebssystemmetriken wie Hostressourcen (CPU, Speicher, Festplatte usw.) und Netzwerkbandbreite.
  • Metriken für das Metacluster- und Client-Cluster-Verwaltungssystem, wie z. B. kube-apiserver, kube-controller-manager und kube-scheduler.
  • Metriken aus Kubernetes-State-Metrics und Cadvisor.
  • etcd-Metriken wie Festplattenschreibzeit, Datenbankgröße, Durchsatz von Verbindungen zwischen Knoten usw.

Globale Statistiken werden mithilfe eines typischen mehrschichtigen Aggregationsmodells erfasst. Überwachungsdaten von jedem Metacluster werden zunächst in jeder Region aggregiert und dann an einen zentralen Server gesendet, der das Gesamtbild zeigt. Alles funktioniert über den Föderationsmechanismus. Ein Prometheus-Server in jedem Rechenzentrum sammelt Metriken von diesem Rechenzentrum, und der zentrale Prometheus-Server ist für die Aggregation von Überwachungsdaten verantwortlich. AlertManager stellt eine Verbindung zum zentralen Prometheus her und sendet bei Bedarf Warnungen per DingTalk, E-Mail, SMS usw. Visualisierung – mit Grafana.

In Abbildung 10 lässt sich das Überwachungssystem in drei Ebenen unterteilen:

  • Grenzebene

Die Ebene, die am weitesten von der Mitte entfernt ist. Der Prometheus Edge Server läuft in jedem Metacluster und sammelt Metriken von Meta- und Client-Clustern innerhalb derselben Netzwerkdomäne.

  • Kaskadenebene

Die Funktion der Prometheus-Kaskadenschicht besteht darin, Überwachungsdaten aus mehreren Regionen zu sammeln. Diese Server arbeiten auf der Ebene größerer geografischer Einheiten wie China, Asien, Europa und Amerika. Wenn Cluster wachsen, kann die Region geteilt werden, und dann erscheint in jeder neuen großen Region ein Prometheus-Server auf Kaskadenebene. Mit dieser Strategie können Sie je nach Bedarf reibungslos skalieren.

  • Zentrale Ebene

Der zentrale Prometheus-Server stellt eine Verbindung zu allen Kaskadenservern her und führt die endgültige Datenaggregation durch. Aus Gründen der Zuverlässigkeit wurden zwei zentrale Prometheus-Instanzen in verschiedenen Zonen eingerichtet und mit denselben Kaskadenservern verbunden.

Wie Alibaba Cloud Zehntausende Kubernetes-Cluster mit ... Kubernetes verwaltet
Reis. 10. Globale mehrstufige Überwachungsarchitektur basierend auf dem Prometheus-Föderationsmechanismus

Zusammenfassung

Kubernetes-basierte Cloud-Lösungen verändern unsere Branche weiterhin. Der Alibaba Cloud-Containerdienst bietet sicheres, zuverlässiges und leistungsstarkes Hosting – es ist eines der besten Kubernetes-Cloud-Hosting. Das Alibaba Cloud-Team glaubt fest an die Prinzipien von Open Source und die Open-Source-Community. Wir werden auf jeden Fall weiterhin unser Wissen im Bereich Betrieb und Management von Cloud-Technologien teilen.

Source: habr.com

Kommentar hinzufügen