Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Ist Kubernetes bereit für stateful Workloads?

Das könnte die Frage sein, die dich dazu gebracht hat, dieses Buch aufzuschlagen. Seit dem Aufkommen des Cloud Computing haben sich die Dateninfrastruktur (NoSQL/NewSQL, Streaming, Analytik) und die Anwendungsinfrastruktur (Docker, Kubernetes) rasant weiterentwickelt, allerdings auf getrennten Wegen. Unserer Meinung nach ist es an der Zeit, diese beiden Bereiche formal zusammenzuführen. Das ist kein Wunsch für die Zukunft, sondern geschieht bereits in Zusammenarbeit mit verschiedenen Communities. Unternehmen, die versuchen, zwei verschiedene Stacks für Anwendungen und Daten zu verwalten, werden sich bald in einem Wettbewerbsnachteil wiederfinden.

In den ersten Jahren nach dem öffentlichen Start von Kubernetes im Jahr 2014 wurde die Maxime, dass Kubernetes nicht für Daten und zustandsabhängige Workloads geeignet sei, kaum in Frage gestellt. Ein Beispiel für die vorherrschende Weisheit findest du in diesem Tweet von Kelsey Hightower aus dem Jahr 2018:

Kubernetes hat enorme Verbesserungen bei der Ausführung von zustandsabhängigen Workloads wie Datenbanken und Message Queues gemacht, aber ich ziehe es immer noch vor, sie nicht in Kubernetes auszuführen .

In den letzten paar Jahren hat sich das Blatt gewendet. Problemlösende Ingenieure haben diese Herausforderung von Kelsey angenommen und in die Tat umgesetzt. In gewisser Weise war die Entwicklung von Kubernetes für zustandsbehaftete Workloads unvermeidlich, da die Nachfrage so groß war. Diejenigen unter uns, die sich an Diskussionen darüber erinnern, warum eine Datenbank auf einem Bare-Metal-Rechner laufen muss oder warum man Dateninfrastrukturen niemals in Containern bereitstellen sollte, können dieses Anliegen nachvollziehen.

Wir haben auch gelernt, dass es einen großen Unterschied zwischen "nie" und "noch nicht" gibt. Rechenleistung, Speicherung und Netzwerke gelten heute als Massenware, warum nicht auch die Datenverwaltung? Das Wertversprechen von Kubernetes, Kosten zu senken und die Anwendungsentwicklung zu vereinfachen, bedeutet, dass die Migration der Dateninfrastruktur auf Kubernetes unvermeidlich war. Die Veränderungen finden nicht nur in Kubernetes statt. Wie du sehen wirst, haben sich auch die Projekte in der Dateninfrastruktur verändert.

Warum wir dieses Buch geschrieben haben

Der Trend, zustandsbehaftete Workloads in Kubernetes zu verlagern, hat uns eingeholt, als wir uns in unserem "Tagesgeschäft" bei DataStax mit der Frage beschäftigten, wie wir Apache Cassandra in Kubernetes effektiv einsetzen und betreiben können. Im Geiste der Open-Source-Entwicklung suchten wir nach anderen Praktikern, die ähnliche Versuche mit Datenbanken und anderen zustandsabhängigen Workloads unternahmen (und erfolgreich waren). Wir fanden eine Gruppe Gleichgesinnter und halfen dabei, die Data on Kubernetes Community (DoKC) im Jahr 2020 zu gründen. Die DoKC ist jetzt eine unabhängige Organisation und hat bereits weit über 100 Meetups und mehrere persönliche Veranstaltungen veranstaltet. Die Vielfalt der Themen und Vortragenden bei den DoKC-Meetups zeugt von einer lebendigen Gemeinschaft, die gemeinsam an der Festlegung von Standards und bewährten Methoden arbeitet. Das Wichtigste ist, dass wir gemeinsam lernen, Lektionen aus der Vergangenheit anwenden und uns gegenseitig unterstützen, während wir etwas Neues aufbauen.

Als wir an diesen Treffen teilnahmen, kristallisierte sich eine Reihe von gemeinsamen Themen heraus. Wir hörten immer wieder von den Vorzügen des PersistentVolume-Subsystems, den Vor- und Nachteilen von StatefulSets, dem Versprechen des Operator-Patterns, Datenbankoperationen einfacher zu gestalten, und den ersten Andeutungen von Ideen für neue Arten der Datenverwaltung. Mit der Zeit kamen wir zu der Überzeugung, dass diese junge Gemeinschaft von Praktikern einen Ort braucht, an dem all das Wissen, das in zahlreichen Präsentationen und Blogbeiträgen verstreut ist, gesammelt und in eine verdauliche Form gebracht werden kann. Dieses Buch ist das Ergebnis dieses Prozesses.

Im Bereich der Cloud Native Data bleibt noch viel zu tun, und viele Bereiche müssen weiter erforscht werden, darunter Operatoren, maschinelles Lernen, Daten-APIs, deklarative Verwaltung von Datensätzen und vieles mehr. Wir hoffen, dass dieses Buch die Tore für eine Flut von weiteren Büchern, Blogs, Präsentationen und Lernressourcen öffnet.

Für wen ist dieses Buch?

Dieses Buch richtet sich in erster Linie an Entwickler und Architekten, die Anwendungen in der Cloud entwerfen, bauen und betreiben. Wenn das auf dich zutrifft und du dieses Buch in die Hand nimmst, hast du wahrscheinlich schon von den vielen Unternehmen gehört, die Kubernetes einsetzen, und hast dich diesem Trend angeschlossen oder ziehst es zumindest in Erwägung. Vielleicht hast du aber auch von den Vorbehalten gegenüber zustandsbehafteten Workloads auf Kubernetes gehört und suchst nach Hilfe, wie du vorgehen kannst. Dann bist du hier genau richtig! Durch die Lektüre dieses Buches wirst du Folgendes lernen:

  • Ein Verständnis der grundlegenden Kubernetes-Ressourcen und wie sie zum Aufbau der Dateninfrastruktur verwendet werden

  • Ein Verständnis dafür, wie Tools wie Helm und Operator die Bereitstellung und den Betrieb der Dateninfrastruktur auf Kubernetes automatisieren können

  • Die Fähigkeit, Dateninfrastrukturtechnologien für den Einsatz in deinen Anwendungen zu bewerten und auszuwählen

  • Das Wissen, wie du diese Dateninfrastrukturtechnologien in dein Gesamtpaket integrieren kannst

  • Ein Blick auf neue Technologien, die deine Kubernetes basierten Anwendungen in den nächsten Jahren verbessern werden

Eine kleinere, aber nicht minder wichtige Zielgruppe sind Kubernetes-Kernentwickler und Entwickler von Dateninfrastrukturen, von denen wir viele durch das DoKC kennengelernt haben. Wir hoffen, eine Reihe gemeinsamer Prinzipien und bewährter Methoden zu entwickeln, die wir als Rahmen nutzen können, um Verbesserungen im Kubernetes-Kern und in der Dateninfrastruktur für Kubernetes voranzutreiben. Gemeinsam können wir die Praxis der Datenverarbeitung in Kubernetes vorantreiben.

Für alle gilt: Unser Ziel in diesem Buch ist es, geradeaus zu schießen. Wo die Technologie ausgereift und solide ist, lassen wir dich wissen, aber es gibt auch viele Bereiche, in denen die Technologie noch in der Entwicklung ist. Wir werden darauf achten, dass wir die Bereiche hervorheben, in denen Verbesserungen notwendig sind.

Wie man dieses Buch liest

Dieses Buch ist so konzipiert, dass es von Anfang bis Ende gelesen werden kann, insbesondere von Lesern, die weniger Erfahrung mit Kubernetes haben. Die ersten Kapitel führen in die Kubernetes-Terminologie und -Konzepte ein, auf die im weiteren Verlauf des Buches Bezug genommen wird, wenn wir fortgeschrittenere Themen besprechen. Das Buch ist folgendermaßen aufgebaut:

Kapitel 1, "Einführung in die Cloud Native Data Infrastructure: Persistenz, Streaming und Batch-Analytik"
In diesem Kapitel geht es um die Modernisierung deiner Cloud Native-Anwendungen, indem du nicht nur zustandslose, sondern auch zustandsbehaftete Workloads auf Kubernetes setzt. Wir definieren die wichtigsten Ziele und Begriffe, um allen Lesern die gleichen Voraussetzungen zu bieten. Insbesondere schlagen wir eine Definition für den Begriff " Cloud Native Data" vor und legen Grundsätze für die Cloud Native Data-Infrastruktur fest, die wir im weiteren Verlauf des Buches zur Bewertung von Technologien verwenden werden.
Kapitel 2, "Datenspeicherung in Kubernetes verwalten"
In diesem Kapitel befassen wir uns mit einem der grundlegenden Bereiche der Dateninfrastruktur von Kubernetes: der Speicherung. Wir beginnen damit, wie die Speicherung in Containersystemen funktioniert, beginnend mit Docker und gehen dann zu Kubernetes und seinem PersistentVolume-Subsystem über. Wir besprechen die verschiedenen Arten der Speicherung, darunter Datei-, Block- und Objektspeicher, und die Kompromisse zwischen lokalen und dezentralen Speicherlösungen.
Kapitel 3, "Datenbanken in Kubernetes auf die harte Tour"
In diesem Kapitel werden Kubernetes Rechenressourcen wie Pods, Deployments und StatefulSets vorgestellt und du lernst Schritt für Schritt, wie du Datenbanken wie MySQL und Apache Cassandra mit diesen Ressourcen bereitstellst. Du lernst einige der Stärken und Schwächen von StatefulSets für die Verwaltung verteilter Datenbanken kennen.
Kapitel 4, "Automatisierte Datenbankbereitstellung auf Kubernetes mit Helm"
In Fortsetzung der Themen aus dem vorigen Kapitel greifen wir die Bereitstellung von MySQL und Cassandra auf Kubernetes wieder auf, dieses Mal auf automatisierte Weise mit dem Helm-Paketmanager. Außerdem lernst du Kubernetes-Ressourcen kennen, die dir bei der Konfiguration helfen, darunter ConfigMaps und Secrets. Wir besprechen die Rolle von Helm in deinem DevOps-Prozess und in deinem CI/CD-Toolset sowie einige seiner Unzulänglichkeiten in Bezug auf die Verwaltung von Datenbankoperationen.
Kapitel 5, "Automatisierte Datenbankverwaltung in Kubernetes mit Operatoren"
Dieses Kapitel schließt unsere Reihe zum Datenbankeinsatz ab, indem wir das Operator-Pattern vorstellen und zeigen, wie Operatoren bei der Verwaltung von "Day-Two"-Datenbankoperationen helfen können. Am Beispiel von Vitess (MySQL) und Cass Operator (Apache Cassandra) wird gezeigt, wie Operatoren die Kubernetes-Kontrollebene erweitern, um Datenbanken zu verwalten. Nebenbei lernst du, wie du den Reifegrad von Operatoren einschätzen kannst und wie du mit Frameworks wie dem Operator SDK deine eigenen Operatoren erstellen kannst.
Kapitel 6, "Integration der Dateninfrastruktur in einen Kubernetes-Stack"
In diesem Kapitel geht es nicht mehr nur um den Einsatz und den Betrieb von Datenbanken, sondern auch darum, wie Datenbanken und andere Dateninfrastrukturen in den gesamten Anwendungsstack integriert werden können. Wir schauen uns das Projekt K8ssandra an, das Apache Cassandra zusammen mit Tools für die Verwaltung von Überwachung, Sicherheit und Datenbank-Backups sowie einer API-Schicht für einen einfacheren Datenzugriff integriert.
Kapitel 7, "Die Kubernetes Native Database"
An dieser Stelle treten wir einen Schritt zurück und fassen zusammen, was du in der ersten Hälfte des Buches über das Cloud-native Datenmanagement gelernt hast, und nutzen dieses Wissen, um die Frage zu beantworten: "Was ist eine Kubernetes-native Datenbank?" Diese Diskussion ist mehr als nur eine Debatte über Buzzwords der Branche. Sie ist wichtig für alle, die an der Auswahl der Dateninfrastruktur beteiligt sind und für diejenigen, die diese Infrastruktur entwickeln.
Kapitel 8, "Daten-Streaming in Kubernetes"
Nach der Persistenz werden wir uns mit dem Rest der Dateninfrastruktur befassen und mit Streaming-Technologien beginnen. Das Verschieben und Verarbeiten von Daten in nativen Cloud-Anwendungen ist genauso verbreitet wie die Persistenz von Datenbanken, erfordert aber andere Strategien bei der Bereitstellung: die sichere Verbindung von Endpunkten und das Einbauen von Standardausfallsicherheit und Elastizität. In diesem Kapitel werden Apache Pulsar und Apache Flink verwendet, um diese wichtigen Praktiken zu demonstrieren.
Kapitel 9, "Datenanalyse auf Kubernetes"
Ironischerweise ist der Bedarf an groß angelegten Analysen ein Teil der Entstehungsgeschichte vieler Methoden, die heute in Kubernetes verwendet werden - nämlich Orchestrierung und Ressourcenmanagement. Damit schließt sich der Kreis: Die Durchführung von Analysen in Kubernetes hat heute in vielen Unternehmen höchste Priorität. Wir stellen die Änderungen in Apache Spark vor, um dir einen Vorsprung für deinen Anwendungsfall zu verschaffen, und werfen mit den Projekten Dask und Ray einen Blick auf die führenden Kanten der Analytik in Kubernetes.
Kapitel 10, "Maschinelles Lernen und andere aufkommende Anwendungsfälle"
Die Themen KI und maschinelles Lernen sind in der Infrastruktur bereits auf der Höhe der Zeit. Projekte, die in den letzten Jahren begonnen haben, könnten zuerst in Kubernetes starten, und das ist eine interessante Sache. Es gibt auch andere Projekte, die zuerst in Richtung Cloud-Native denken und der Zukunft der Daten eine gewisse Richtung geben. Dieses Kapitel soll einen Überblick über diese Projekte geben und Ideen und Methoden aufzeigen, die du bei deiner Arbeit mit Cloud Native Data berücksichtigen solltest.
Kapitel 11, "Migration von Daten-Workloads zu Kubernetes"
All das Wissen, das du beim Lesen des Buches erworben hast, ist umsonst, wenn du es nicht in die Praxis umsetzt. In diesem Kapitel heben wir die wichtigsten Erkenntnisse aus den vorangegangenen Kapiteln hervor und schlagen ein Rahmenwerk von Änderungen vor, die du vornehmen kannst, um deine zustandsbehafteten Workloads erfolgreich auf Kubernetes zu migrieren. Wir schließen mit einer Vision, wie die Dateninfrastruktur deines Unternehmens in naher Zukunft aussehen könnte.

Die Disziplin der Datenverwaltung in Kubernetes ist ein aufstrebendes Gebiet, in dem sich in bestimmten Bereichen viel verändert. Wir sind uns bewusst, dass dieses Buch, wie jedes technische Buch, eine Momentaufnahme des verfügbaren Wissens zu einem bestimmten Zeitpunkt darstellt - in diesem Fall Ende 2022. Die wirkliche Gefahr beim Schreiben eines Buches über ein schnelllebiges Thema ist, wie schnell die Informationen irrelevant werden können.

Um dieser Realität am besten gerecht zu werden, wird in diesem Buch eine gemeinsame Formel angewandt: Wir liefern viele Beispiele, betonen aber die Grundlagen. Im Laufe des Buches wird die Technologie, die wir untersuchen, immer weniger ausgereift. Anstatt nach der "copy-and-paste"-Antwort oder der "One-size-fits-all"-Architektur zu suchen, möchten wir dich ermutigen, die Kernpunkte herauszufiltern, die du auf deine eigenen Anwendungsfälle anwenden kannst.

Da in den Kapiteln 2-5 bereits etablierte Themen behandelt werden, findest du in diesen Kapiteln ausführlichere Erklärungen und praktische Beispiele. In den Kapiteln 8-10 geht es um Dateninfrastrukturen, die sich noch im Umbruch befinden, zumindest was den Einsatz von Kubernetes angeht. In diesen Fällen verweisen wir häufiger auf Lernressourcen von Dritten, damit du sicher sein kannst, dass du auf dem neuesten Stand bist. Im Sinne der Entstehung dieses Buches möchten wir dich ermutigen, neue Ressourcen, die du findest, mit anderen zu teilen, damit wir gemeinsam vorankommen können.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/data-on-k8s-book/examples zum Download bereit .

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Managing Cloud Native Data on Kubernetes von Jeff Carpenter und Patrick McFadin (O'Reilly). Copyright 2023 Jeffrey Carpenter und Patrick McFadin, 978-1-098-11139-7."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/cloud-native-data-Kubernetes aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Du findest uns auf LinkedIn: https://linkedin.com/company/oreilly-media.

Folge uns auf Twitter: https://twitter.com/oreillymedia.

Sieh uns auf YouTube: https://youtube.com/oreillymedia.

Danksagungen

Unser Dank geht vor allem an Jess Haberman, der von unserem ersten Gespräch an an das Konzept dieses Buches geglaubt und dafür gekämpft hat, dass es zustande kommt, und an unsere Redakteurin Jill Leonard für ihre ständige Ermutigung und ihren weisen Rat.

Eines der wichtigsten Merkmale dieses Buches sind die Seitenleisten, die auf unseren Gesprächen mit erfahrenen Technologen und Praktikern basieren. Wir haben versucht, ihre Worte für sich selbst sprechen zu lassen und so wenig wie möglich zu bearbeiten. An dieser Stelle möchten wir uns ganz herzlich bei denjenigen bedanken, die ihre Zeit und ihr Wissen mit uns geteilt haben: Rick Vasquez, Kiran Mova, Maciej Szulik, John Sanda, Deepthi Sigireddi, Umair Mufti, Irfan Ur Rehman, Dongxu (Ed) Huang, Jake Luciani, Jesse Anderson, Josh van Leeuwen, Holden Karau, Dean Wampler, Theofilos Papapanagiotou, Willem Pienaar, Xiaofan Luan, Josh Patterson, Adi Polak, und Craig McLuckie.

Diese Experten haben sich nicht nur zu Wort gemeldet, sondern auch die Richtung unserer Forschung und die Auswahl der Technologien, die wir hier besprechen, beeinflusst. Deepthi, Jesse, Umair und Rick waren auch als technische Gutachter für dieses Buch tätig. Wir schätzen auch die Einsichten unserer anderen technischen Prüfer: Wei Deng, Ali Ok, Aaron Morton und Noah Gift.

Die Data on Kubernetes Community (DoKC) hat uns sehr inspiriert und wir sind besonders Bart Farrell, Demitrios Brinkmann und Melissa Logan dankbar, dass sie uns mit vielen anderen Community-Mitgliedern in Kontakt gebracht und uns ermutigt und unterstützt haben. Unsere besondere Anerkennung gilt Evan Powell, der das DoKC ins Leben gerufen hat, indem er Demetrios gefunden und die ersten Treffen finanziert hat. Das war der Funke, der die Schmiede für so viele gute Dinge entzündet hat, die noch kommen werden.

Sam Ramji hatte einen großen Einfluss auf dieses Buch, nicht nur, indem er das Vorwort schrieb, sondern auch, indem er unsere Denkprozesse herausforderte, indem er uns daran erinnerte: "Du musst die Arbeit machen, um eine Meinung zu haben." Sam war immer bereit, uns anzurufen, uns vorzustellen oder bei einem Bier Ideen auszutauschen.

Dieses Buch entstand in den ersten Tagen einer weltweiten Pandemie und wurde in Zeiten der Ungewissheit, der Herausforderung und der Erneuerung sowohl auf globaler als auch auf persönlicher Ebene entwickelt. Wir sind sehr dankbar für die Unterstützung vieler Freunde und Familienmitglieder, die uns in diesen Zeiten begleitet und uns daran erinnert haben, wie wichtig Fragen wie "Wie läuft es mit dem Buch?" oder auch nur ein einfaches "Wie geht es euch?" sind.

Get Cloud Native Daten auf Kubernetes verwalten now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.