4 Gründe, warum Sie Kubernetes verwenden sollten

Sirish Raghuram ist Mitbegründer und CEO von Platform9 Systems.

Wie die meisten modernen Softwareentwickler bestätigen können, haben Container uns erheblich mehr Flexibilität bei der Ausführung von Cloud-nativen Anwendungen auf einer physischen und virtuellen Infrastruktur geboten. Container packen die Dienste einer Anwendung zusammen und machen sie für verschiedene Entwicklungsumgebungen sowohl für Entwickler / Tests als auch für die Produktion portabel. Mit Containern ist es einfach, Anwendungsinstanzen schnell hochzufahren, um den Nachfragespitzen zu entsprechen. Und da Container auf Ressourcen des Host-Betriebssystems zurückgreifen, sind sie viel leichter als virtuelle Maschinen. Dies bedeutet, dass Container die zugrunde liegende Serverinfrastruktur hocheffizient nutzen.

So weit, ist es gut. Obwohl die Container-Laufzeit-APIs für die Verwaltung einzelner Container gut geeignet sind, sind sie für die Verwaltung von Anwendungen, die Hunderte von Containern umfassen können, die auf mehrere Hosts verteilt sind, absolut unzureichend. Container müssen für Aufgaben wie Planung, Lastausgleich und Verteilung verwaltet und mit der Außenwelt verbunden werden. Hier kommt ein Container-Orchestrierungs-Tool wie Kubernetes voll zur Geltung.

Kubernetes ist ein Open Source-System zum Bereitstellen, Skalieren und Verwalten von Containeranwendungen. Es übernimmt die Planung von Containern in einem Computercluster und verwaltet die Workloads, um sicherzustellen, dass sie wie vom Benutzer beabsichtigt ausgeführt werden. Anstatt den Betrieb nachträglich einzuschränken, bringt Kubernetes Softwareentwicklung und -betrieb durch Design zusammen. Durch die Verwendung deklarativer, infrastrukturunabhängiger Konstrukte zur Beschreibung der Zusammensetzung von Anwendungen, ihrer Interaktion und ihrer Verwaltung ermöglicht Kubernetes eine Steigerung der Funktionsfähigkeit moderner Softwaresysteme um eine Größenordnung.

Kubernetes wurde von Google auf der Grundlage seiner eigenen Erfahrung beim Ausführen von Containern in der Produktion entwickelt und verdankt seinen Erfolg sicherlich dem Engagement von Google. Google hat einige der talentiertesten Softwareentwickler der Welt und betreibt einige der größten Softwaredienste nach Skalierung. Diese Kombination stellte sicher, dass Kubernetes zu einer soliden Plattform wurde, die die Skalierungsanforderungen praktisch aller Unternehmen erfüllen kann. Dieser Artikel erklärt, warum Kubernetes wichtig ist und warum es für Entwickler-Teams einen bedeutenden Fortschritt darstellt.

In Verbindung stehendes Video: Was ist Kubernetes?

In diesem 90-Sekunden-Video erfahren Sie mehr über Kubernetes, das Open-Source-System zur Automatisierung von Containeranwendungen, von einem der Erfinder der Technologie, Joe Beda, Gründer und CTO bei Heptio.

Ein Infrastrukturrahmen für heute

Heutzutage müssen Entwickler Anwendungen schreiben, die in mehreren Betriebsumgebungen ausgeführt werden, einschließlich dedizierter On-Prem-Server, virtualisierter privater Clouds und öffentlicher Clouds wie AWS und Azure. Traditionell waren Anwendungen und die Tools, die sie unterstützen, eng mit der zugrunde liegenden Infrastruktur verbunden, sodass die Verwendung anderer Bereitstellungsmodelle trotz ihrer potenziellen Vorteile kostspielig war. Dies bedeutete, dass Anwendungen in mehrfacher Hinsicht von einer bestimmten Umgebung abhängig wurden, einschließlich Leistungsproblemen im Zusammenhang mit einer bestimmten Netzwerkarchitektur. Einhaltung von Cloud-Provider-spezifischen Konstrukten wie proprietären Orchestrierungstechniken; und Abhängigkeiten von einem bestimmten Back-End-Speichersystem.

PaaS versucht, diese Probleme zu umgehen, jedoch häufig auf Kosten strenger Anforderungen in Bereichen wie Programmiersprachen und Anwendungsframeworks. Daher ist PaaS für viele Entwicklungsteams nicht zulässig.

Kubernetes beseitigt die Sperrung der Infrastruktur, indem Kernfunktionen für Container bereitgestellt werden, ohne Einschränkungen aufzuerlegen. Dies wird durch eine Kombination von Funktionen innerhalb der Kubernetes-Plattform erreicht, einschließlich Pods und Services.

Besseres Management durch Modularität

Container ermöglichen die Zerlegung von Anwendungen in kleinere Teile mit klarer Trennung von Bedenken. Die Abstraktionsschicht für ein einzelnes Container-Image ermöglicht es uns, die Erstellung verteilter Anwendungen grundlegend zu überdenken. Dieser modulare Ansatz ermöglicht eine schnellere Entwicklung durch kleinere, fokussiertere Teams, die jeweils für bestimmte Container verantwortlich sind. Es ermöglicht uns auch, Abhängigkeiten zu isolieren und besser abgestimmte, kleinere Komponenten in größerem Umfang zu verwenden.

Dies kann jedoch nicht allein durch Container erreicht werden. Es erfordert ein System zur Integration und Orchestrierung dieser modularen Teile. Kubernetes erreicht dies teilweise mithilfe von Pods - normalerweise einer Sammlung von Containern, die als einzelne Anwendung gesteuert werden. Die Container teilen Ressourcen wie Dateisysteme, Kernel-Namespaces und eine IP-Adresse. Indem die Zuordnung von Containern auf diese Weise ermöglicht wird, beseitigt Kubernetes die Versuchung, zu viele Funktionen in ein einzelnes Container-Image zu packen.

Das Konzept eines Dienstes in Kubernetes wird verwendet, um eine Sammlung von Pods zusammenzufassen, die eine ähnliche Funktion ausführen. Services können einfach für Erkennbarkeit, Beobachtbarkeit, horizontale Skalierung und Lastausgleich konfiguriert werden.

Bereitstellung und Aktualisierung von Software in großem Maßstab

Devops wurde als Methode entwickelt, um das Erstellen, Testen und Freigeben von Software zu beschleunigen. Die Folge war eine Verlagerung des Schwerpunkts von der Verwaltung der Infrastruktur auf die Verwaltung der Bereitstellung und Aktualisierung von Software in großem Maßstab. Die meisten Infrastruktur-Frameworks unterstützen dieses Modell nicht, Kubernetes jedoch teilweise über Kubernetes Controller. Dank Controllern ist es einfach, die Infrastruktur zum Verwalten des Anwendungslebenszyklus zu verwenden.

Der Deployment Controller vereinfacht eine Reihe komplexer Verwaltungsaufgaben. Zum Beispiel:

  • Skalierbarkeit. Software kann zum ersten Mal skalierbar über Pods hinweg bereitgestellt werden, und Bereitstellungen können jederzeit vergrößert oder verkleinert werden.
  • Sichtweite. Identifizieren Sie abgeschlossene, in Bearbeitung befindliche und fehlgeschlagene Bereitstellungen mit Funktionen zur Statusabfrage.
  • Zeitersparnis. Unterbrechen Sie eine Bereitstellung jederzeit und setzen Sie sie später fort.
  • Versionskontrolle. Aktualisieren Sie bereitgestellte Pods mit neueren Versionen von Anwendungsimages und führen Sie ein Rollback auf eine frühere Bereitstellung durch, wenn die aktuelle Version nicht stabil ist.

Kubernetes vereinfacht unter anderem einige spezifische Bereitstellungsvorgänge, die für Entwickler moderner Anwendungen besonders wertvoll sind. Dazu gehören die folgenden:

  • Horizontale automatische Skalierung. Die automatischen Skalierer von Kubernetes passen die Anzahl der Pods einer Bereitstellung automatisch an die Verwendung der angegebenen Ressourcen an (innerhalb definierter Grenzen).
  • Rollende Updates. Aktualisierungen einer Kubernetes-Bereitstellung werden in den Pods der Bereitstellung „fortlaufend“ koordiniert. Diese fortlaufenden Updates werden orchestriert, während mit optionalen vordefinierten Beschränkungen für die Anzahl der Pods gearbeitet wird, die möglicherweise nicht verfügbar sind, und für die Anzahl der Ersatz-Pods, die möglicherweise vorübergehend vorhanden sind.
  • Kanarische Einsätze. Ein nützliches Muster beim Bereitstellen einer neuen Version einer Bereitstellung besteht darin, zuerst die neue Bereitstellung in der Produktion parallel zur vorherigen Version zu testen und die neue Bereitstellung zu skalieren, während gleichzeitig die vorherige Bereitstellung verkleinert wird.

Im Gegensatz zu herkömmlichen All-Inclusive-PaaS-Angeboten bietet Kubernetes einen großen Spielraum für die unterstützten Anwendungstypen. Es schreibt keine Anwendungsframeworks (wie Wildfly) vor, schränkt die unterstützten Sprachlaufzeiten (Java, Python, Ruby) nicht ein, berücksichtigt nur 12-Faktor-Anwendungen oder unterscheidet "Apps" von "Diensten". Kubernetes unterstützt eine Vielzahl von Workloads, einschließlich zustandsloser, statusbehafteter und datenverarbeitender Workloads. Wenn eine Anwendung in einem Container ausgeführt werden kann, sollte sie auf Kubernetes gut ausgeführt werden können.

Grundsteinlegung für Cloud-native Apps

Angesichts des Interesses an Containern ist es nicht überraschend, dass andere Management- und Orchestrierungswerkzeuge entstanden sind. Beliebte Alternativen sind Apache Mesos mit Marathon, Docker Swarm, AWS EC2 Container Service (ECS) und HashiCorp's Nomad.

Jeder hat seine Vorzüge. Docker Swarm ist eng mit der Docker-Laufzeit verbunden, sodass Benutzer problemlos von Docker zu Swarm wechseln können. Mesos mit Marathon ist nicht auf Container beschränkt, sondern kann jede Art von Anwendung bereitstellen. Auf AWS ECS können aktuelle AWS-Benutzer leichter zugreifen. Kubernetes-Cluster können jedoch auf EC2 ausgeführt und in Dienste wie Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups usw. integriert werden.

Diese Frameworks beginnen sich in Bezug auf Features und Funktionen zu duplizieren, aber Kubernetes ist aufgrund seiner Architektur, Innovation und der großen Open-Source-Community in der Umgebung nach wie vor äußerst beliebt.

Kubernetes markiert einen Durchbruch für Entwickler, da es Teams ermöglicht, mit den Anforderungen der modernen Softwareentwicklung Schritt zu halten. In Abwesenheit von Kubernetes waren Teams häufig gezwungen, ihre eigenen Softwarebereitstellungs-, Skalierungs- und Aktualisierungsworkflows zu skripten. Einige Organisationen beschäftigen große Teams, um diese Aufgaben alleine zu erledigen. Mit Kubernetes können wir den maximalen Nutzen aus Containern ziehen und Cloud-native Anwendungen erstellen, die unabhängig von Cloud-spezifischen Anforderungen überall ausgeführt werden können. Dies ist eindeutig das effiziente Modell für die Anwendungsentwicklung und den Betrieb, auf das wir gewartet haben.

Das New Tech Forum bietet einen Ort, an dem Sie neue Unternehmenstechnologien in beispielloser Tiefe und Breite erkunden und diskutieren können. Die Auswahl ist subjektiv, basierend auf unserer Auswahl der Technologien, die wir für wichtig und für die Leser von größtem Interesse halten. akzeptiert keine Marketingmaterialien zur Veröffentlichung und behält sich das Recht vor, alle eingebrachten Inhalte zu bearbeiten. Senden Sie alle Anfragen an [email protected]