Transkripte
1. EINFÜHRUNG: Okay, hallo und willkommen in Kubernetes Warner. Das wird gut sein. Und dann ja, wir werden ein paar Sachen lernen, aber absolut werden wir Spaß haben, es zu tun. Und jetzt, gleich von der Fledermaus. Okay, lasst uns in diesem Kurs ein Ziel auf diejenigen von euch setzen, die Kubernetes neu sind. In der Tat müssen Sie Docker
jetzt nicht einmal wirklich in der IT verwenden , oder ein Entwicklerhintergrund könnte hilfreich sein, aber Sie wissen was, es ist keine Voraussetzung. Also keine Vorerfahrung notwendig. Auch, wie der Titel sagt, ist
es ein 1.0.1 Kurs. Das bedeutet, wenn du es nicht tust, wirst du nicht als Kubernetes-Guru weggehen, tut mir leid. Aber Sie werden weggehen und wissen, was Kubernetes ist und wie es funktioniert. Und Sie werden eine Vorstellung von einigen der Dinge haben, die es für Sie tun kann,
damit Sie hoffentlich Ihre ersten Schritte mit Kubernetes prüfen werden. Nun, wer bin ich? Ich bin Nigel, und wenn du es noch nicht weißt, verbringe
ich mein Leben damit, die Welt zu unterrichten, Docker und Kubernetes. Er ist, als wäre all das Zeug hier meins. Und außerdem bin ich unterwegs auf dem Lautsprecherkreis und gebe
Workshops und Events wie Docker Con und was hast du. Jetzt. Offensichtlich sehr empfehlen meine anderen Sachen für die nächsten Schritte. Aber dann wieder, würde ich nicht meine, es ist meins haben Recht. Aber ich sage Ihnen, was Sie der Richter sind, und
sehen, wie Sie sich nach diesem Kurs fühlen. Und wenn dir das gefällt, lass mich dir sagen, dass
du die lieben wirst. Wie auch immer, das bin ich auf Twitter und ich bin daran interessiert, mich zu verbinden und über Technologie zu sprechen. Aber ich muss das sagen, richtig? Ich bin beschäftigt wie der Rest von Ihnen, also kann ich kein kostenloser technischer Support sein. Ich meine, ich freue mich, über Technologie zu sprechen, aber komplexe Fehlerbehebung. Ja, es tut mir wirklich Leid. Ich habe einfach nicht die Zeit. Jedenfalls. Sieh mal, ich mache diese Art von Sache schon seit langer Zeit. Also bin ich zuversichtlich, wenn ich sage, ich denke, es wird dir gefallen. Und ich bin ebenso zuversichtlich, dass du das Gefühl weggehen wirst, dass du viel gelernt hast. Aber sieh mal, ich waffle. So machen wir die Dinge. Scheibe in den Kurs so ziemlich in der Mitte, in der ersten Hälfte. Also vielleicht eine Stunde oder so. Wir werden die Theorie wie das Kubernetes-Architektur-Zeug hier festhalten. Dann in der zweiten Hälfte wird Hands-on bekommen. Nun, sieh mal, es ist ein Videokurs, oder? Es ist dein Anruf, ob du mit
dem praktischen Zeug folgst oder ob du nur ganz deinen Kern beobachtest. Aber was ich nicht will, dass du machst OK. Und vertrau mir dabei, überspringe die Theorie
nicht, weil es wirklich wichtig ist, wie ich es benutzen werde, um die Szene zu setzen und dich auf die praktischen Sachen vorzubereiten. Weil du was weißt? Ich habe 0 Interesse daran, dass du mitverfolgen und brillant bist oder
Befehle eintippen kannst, wenn du nicht wirklich verstehst, was los ist, glaub mir, richtig? Ich war selbst dort. Sie ebnen Umschulungskurs. Du befolgst alle Übungen. Manchmal macht man nicht einmal einen einzigen Tippfehler am Ende, wenn man es nicht tut, man ist eigentlich keiner der klüger. Du hast nicht wirklich etwas gelernt. Also, wenn jemand dich gefragt hat, was die Befehle in dem Zeug tatsächlich tot sind. Ich meine, wer weiß, oder? Also will ich nicht, dass du der Theorie folgst. Nun, wenn wir von der Theorie sprechen, werden wir ja, wir werden beschreiben, was eine Cloud-native Microservices-Anwendung tatsächlich ist. Dann finden wir heraus, was Kubernetes ist. Wir werden sehen, wie es ein Cluster ist, und dann werden wir sehen, wie es ein Anwendungsorchestrator ist, h2. Und ich weiß, richtig, das sind viele Schlagwörter,
aber es ist alles gut, weil wir jeden von
ihnen erklären werden , während wir gehen und auch
Dinge mit einem Blick auf einen typischen Workflow kontextualisieren , wie Sie die Anwendung von Code auf dem Laptop eines Entwicklers, um sich tatsächlich in einer laufenden Anwendung zu befinden. Wie auch immer, wenn wir mit der Theorie fertig sind, dann wird es die praktische Sache sein. Wir werden einen schnellen Test durchführen. Kubernetes-Umgebung wird eine App bereitstellen, Verbindung herstellen, einen Fehler testen und einige der Selbstheilung sagen, die weiter geht. Wir skalieren nach oben und unten, stellen eine Verbindung zu einem Load Balancer her und führen ein rollendes Update durch. Jetzt. Ich weiß, das klingt nach einer Menge Zeug, aber wir werden es einfach halten und wir werden alles erklären, während wir gehen. Hört sich gut an. Lass es uns tun.
2. Cloud-native microservices: Okay, also lassen Sie uns darüber reden, was zum Teufel, ein Cloud-nativer Microservices oben, wie jetzt, es gibt eine Menge Definitionen da draußen, also werde ich es für Sie aufkochen. Legen Sie die ersten Dinge an erster Stelle. Wickeln wir die Uhr ein bisschen zurück. Sie sagen, damals bauen
wir unsere Anwendungen auf, in denen wir alle Funktionen und
Logik und die verschiedenen Bits in ein einziges Programm wie eine einzelne Binärdatei zusammengefasst haben. Nun, ich bin hier auf hohem Niveau. Aber wir nehmen vielleicht die User-Interface-Bits, all die Middleware-Sachen, das Datenbank-Back-End-Zeug und die Reporting-Systeme und alles, was die App jemals geträumt hat. Und wir hatten in ein einziges riesiges Programm geworfen und wir haben es
installiert und es gesichert und den ganzen Jazz ausgeführt, Yeah. Und das war die Art, wie wir immer Dinge gemacht haben. Und es war schrecklich. Und wenn ich schrecklich sage, spreche
ich davon, ganze Wochenenden deines Lebens daran zu verlieren, aber nicht gewöhnliche Wochenenden. Dies waren meist die langen Feiertagswochenenden. Ein häufiges Problem war also, das Ding zu aktualisieren. Ich meine, es war so komplex, dass kein einziger Mensch oder Ting wirklich neu war oder dafür verantwortlich war. Was ein bisschen ein Problem ist, wenn man bedenkt dass
das Ganze als eine Einheit zusammengelegt und gebündelt wurde. Jedenfalls. Also lassen Sie uns sagen, wenn wir brauchen, um Patch kann die Berichtskomponenten sein. - Ja. Nun, kein Witz. Es waren alle Hände an Deck für die langen Wochenenden, Sie wären wie Vorwärmung Lieferanten und Kunden und jeder, der das System verwendet und
ihnen sagte , dass es von fünf Uhr am
Freitag nach unten sein würde und nicht bis 22.00 Uhr am Sonntag. Und die Chefs haben die CIOs Handynummer auf Kurzwahl und die
Hälfte der IT-Abteilung wird das ganze Wochenende im Büro sein und auf Pizza und Kaffee leben. Und es war kostbares Zeug. Jedenfalls. Die Probleme, die gezwungen, die architektonisch waren, richtig? Alles war eng gekoppelt. Als könnten wir nicht einfach die Reporting-Bits abnehmen und diese unabhängig vom Rest des Systems
patchen. Nun, wenn wir das Berichtssystem patchen wollten, mussten
wir die ganze Sache runter nehmen. Jedenfalls. Schau, so benutzen wir die Reihe. Und wir haben Worte für solche Anwendungen, richtig? Wir nennen sie Monolithen. Und in der modernen IT ist das wie ein Cuss Wort, ja, wenn Sie Monolithen in Ihrer Organisation betreiben, sind
Sie ziemlich peinlich darüber. Du sagst es den Leuten definitiv nicht. - Ja. Jedenfalls, Glück. Ich mache Witze, richtig? Und jetzt haben die meisten von uns immer noch Monolithen herumtreten und das ist in Ordnung, oder? Wie auch immer, die Dinge ändern sich
heutzutage sehr viel anders , denn jetzt haben wir Cloud-native Microservices. In Ordnung, lassen Sie uns das zusammenbrechen. Das Microservices-Bit bedeutet also, dass wir all die Logik nehmen, die wir gesagt haben, ja, war es wie Web-Frontend und Middleware und Backend und Reporting Bits hier. Und wir programmieren sie, und wir haben sie unabhängig ausgeliefert. Also haben wir hier das gleiche App-Erlebnis oder die gleichen Bits, aber die Rolle unabhängig, wie vielleicht gibt es ein spezielles Team, das die Web-Wette codiert und
kümmert , und ein anderes Team für den Datastore und ein anderes für die Meldesystem. Also sind sie alle kodiert und unabhängig ausgeliefert, aber sie reden miteinander und sie bilden ein nützliches. Ich habe die Linie
absichtlich um sie herum gezeichnet , weil sie diesmal alle locker gekoppelt sind. Das bedeutet also, dass wir jede Komponente unabhängig voneinander rev können. Wie es ein Bit hat einen Fehler oder eine Sicherheitslücke und nein, sagen
wir die Berichterstattung, aber wieder, ja. Nun, wir können das runter nehmen und aktualisieren ohne die anderen Wetten zu berühren oder zu beeinflussen. Doch, wie gesagt, funktioniert
alles noch zusammen, um die gleiche nützliche Geschäftsanwendung zu erstellen. Nun, das ist der Microservice-Bit, richtig? Viele verschiedene kleine oder Mikrodienste , die miteinander sprechen und eine größere App bilden. Nun, die Wolke nativen Bit. Dies bedeutet, dass es für Cloud-ähnliche Anforderungen konzipiert ist. So kann es schnell nach oben und unten skaliert werden. Und ich spreche, dass jeder Mikrodienst hier unabhängig skaliert werden kann. Nun, genauso gut, dass es sich selbst hageln kann und wir rollende Updates und Versions-Rollbacks und all das irgendwie Zeug hier machen können. Aber ich kenne viele Schlagwörter und werde sie alle zu gegebener Zeit erklären. Lassen Sie sich also nicht von den Schlagwörtern hier überwältigen. Nun, etwas Interessantes, das vielleicht nicht so intuitiv ist. Cloud nativ bedeutet absolut nicht, dass es nur in der Public Cloud läuft. Im Gegenteil, in der Tat, und ich würde sogar so weit gehen, dass eine Anforderung
einer Cloud-nativen App ist, dass es überall am Abend Ihres On-Premise-Rechenzentrums laufen wird. Das sind also cloudnative Microservices. Ja, wir bauen uns aus kleinen spezialisierten Komponenten auf. Wir nennen diese Microservices, und diese alle sprechen in der Regel über APIs miteinander, und sie bilden eine nützliche oder eine sinnvolle Anwendung. Und die Vorteile, jedes einzelne Teil oder Micro-Service kann unabhängig voneinander skaliert und unabhängig aktualisiert werden. Und sie können sich selbst hageln und rennen so ziemlich überall. Gutes Zeug.
3. Kubernetes: Okay, Zeit, sich auf Kubernetes zu konzentrieren. Jetzt werden wir Kubernetes als zwei Dinge betrachten. Einer als Cluster und zwei ist ein Anwendungsorchestrator. Also auf der Cluster-Front, wissen
Sie was, ein Cluster ist. Ein Cluster, richtig? Es sind ein Haufen Maschinen. Und solange das Linux, weißt
du was, ist Kubernetes nicht wirklich wichtig. Also hättest du sie gestohlen haben können. Ich meine, nicht, dass ich mich natürlich stabil empfehle, aber nur um klar zu sein, dass es Gemeinschaften egal ist. Sie können Instanzen in der Cloud, VMs in Ihrem Rechenzentrum oder wissen Sie was? Es könnte sogar Verbotsmetalle in Ihrem eigenen Rechenzentrum geben, solange sie Linux laufen, Kubernetes ist wie, ja, was auch immer. Nun, ich sage Linux, aber eigentlich ist Windows eine Sache mit Kubernetes heutzutage. In der Tat, Windows-Unterstützung in Kubernetes ging GA, so allgemein verfügbar und vollständig in
Kubernetes unterstützt 1.So 14 im Sommer 2019. Also ja, jedenfalls, sperren Sie einen Kubernetes-Cluster ist ein Cluster von Knoten. Und wie bei den meisten Clustern gelten immer noch
die gleichen alten Regeln. So können wir auf dem Bild sehen, dass wir den Cluster in zwei Teile geteilt haben. - Hier. Auf der linken Seite haben wir die Knoten der Steuerungsebene, und auf der rechten Seite haben wir die Arbeiterknoten oder nehmen Worte an. Ok, also die Steuerungsebene, denken Sie daran, als wo die Kubernetes Gehirne oder die Kubernetes Smarts existieren. - Ja. Dann ist die Arbeit hier. Hier laufen wir unsere Benutzeranwendungen und Kolumnisten wie die Cluster-Muschel, ja, auf die ich in einer Minute kommen werde. Wenn wir sagen, Steuerflugzeug und Kubernetes ist schlau, reden
wir über die Dinge, die Kubernetes machen. Kubernetes. Jetzt werden wir in einer Sekunde etwas tiefer eingraben. Aber jetzt wollen wir klarstellen, dass dies ein typischer Clustertyp ist,
was bedeutet, dass alle üblichen Regeln immer noch gelten, wie es keine versteckte Magie gibt,
das bedeutet, dass Sie sich nicht mehr um Dinge wie Leistung und Verfügbarkeit kümmern müssen . Nein, sie gelten immer noch. Ich will klar sein. Du bist altehrwürdig. Battle getestete Produktionscluster-Regeln gelten weiterhin. Also, wie auf dem Bild hier, haben
wir drei Noten in der Steuerungsebene. Verfügbarkeit, drei oder fünf wird wahrscheinlich empfohlen und eins ist besser, als Split Brains zu vermeiden. - Ja. Lassen Sie sich nicht von dem Techno plappern. Der Startpunkt ist, dass Sie sicherstellen müssen, dass Ihre Clusterknoten leistungsstark genug sind. Und Sie müssen sicherstellen, dass, wenn einer von ihnen fehlschlägt, die Dinge weiterlaufen. Jedenfalls. Das sind die Bits der Steuerungsebene. Und die Knoten, aus denen diese Steuerungsebene besteht, werden im Allgemeinen als Master- oder manchmal Kopf-Knoten bezeichnet. Aber es ist alles nur Jargon, auf die Arbeiter. Nun, der Grund, warum ich diese als
Cluster-Muskel beziehe , ist, wo wir unsere Benutzeranwendungen ausführen. So, wie schnell Ihre Apps laufen und wie gut sie skalieren können. Das hängt sehr davon ab, wie wir diese Arbeiter versorgen. Abhängig von Ihren speziellen App-Anforderungen können
einige dieser Arbeiter große beefy Maschinen sein und einige kleinere Maschinen sein. Aber denken Sie daran, wenn ich Maschinen sage, spreche
ich Linux- und Windows-Maschinen in der Cloud oder auf Prime, und sie können VMs oder BAM-Metalle sein. Jetzt erinnert mich das Erwähnen von Windows daran, dass Windows-Maschinen nur als Worker-Knoten unterstützt werden. Also die Steuerungsebene Knoten hier, sie müssen immer Linux sein, aber die Arbeiterknoten hier, diese können eine Mischung aus Linux und Windows sein, was ich denke, ist die super hohe Ebene. Werfen wir ein bisschen einen genaueren Blick auf H wird Meister zuerst tun.
4. Kubernetes: Na gut, dann Meister. Dies ist also ein explodierte das Öl wie ein Zoomed im Hinblick auf eine Master-Note. Also eigentlich einer von denen hier, ja. Ok, nun, von oben angefangen, eine Erinnerung an Terminologie. Normalerweise nennen wir diese Knoten den Master-Knoten. Aber weißt du was, manchmal hörst du andere Namen wie Headnotes oder was auch immer. Es bedeutet alles dasselbe,
ein Cluster-Knoten, der die Steuerungsebenen-Bits ausführt, das ist das Gehirn des Clusters. - Ja. Wenn Sie nun einen hochverfügbaren Cluster mit drei oder fünf Mastern ausführen, wird für
jeden ein Cluster denselben Satz replizierter Dienste ausgeführt. Auf diese Weise, wenn einer von ihnen fehlschlägt, die anderen halten den Cluster am Laufen. Jetzt gibt es mehr Dienste als diese, aber für 101 Kosten sind das die wichtigsten. Also gewöhnt sich der API-Server an diesen, richtig? Es ist wie das Gateway in den Cluster. Jedesmal, wenn wir den Cluster abfragen oder
eine Konfigurationsänderung vornehmen oder sogar eine App bereitstellen und sie dann und all das Jazz mit aktualisieren möchten, machen Sie das alles über den API-Server. Also o Senden von Befehlen an den API-Server. Jetzt, ohne zu tief für diesen Kurs zu werden, richtig, es stellt eine RESTful HTTP-Schnittstelle bereit und jeder Befehl, den er erhält, wird authentifiziert oder autorisiert und so ziemlich Vernunft überprüft. Aber wenn ich über die Ausgabe von Befehlen spreche, muss
ich für eine Sekunde einen Schritt zurück machen. Also sagten wir, wenn wir Befehle ausgeben, Kubernetes sie kommen hier zum API-Server, richtig? Okay, aber wie senden wir eigentlich diese Befehle? Nun, zum größten Teil,
richtig, sicherlich auf einer 101 Ebene, verwenden
wir das Kubernetes Kommandozeilentool namens Cube CTL. Nun, in wahrer Kubernetes Tradition auf Ihre wahrscheinlich daran gewöhnen. Es gibt wie eine Million Möglichkeiten, es auszusprechen und Sie werden alle hören, wie ich Cube CTL sage. Aber viele Leute sagen Würfelkontrollgesetz, Cube Cut Locke, die kuscheln ich würde, und wie man es nennt, richtig? Alles geht. Das Wichtigste, richtig, ist das Kubernetes Kommandozeilentool. Es sind also Befehle wie Cube CTL erstellen dies und Cube CTL beschreiben das. Und Cube CTL löscht etwas. Und lasst uns nicht selbst voraus gehen, oder? Wird es später alles in einem praktischen Zeug sehen. Ich wollte dort nur eine mögliche Lücke füllen, oder? Wie auch immer, wir sagten ja Cube CTL-Befehle gehen an den API-Server und sie werden authentifiziert oder autorisiert und validiert. Also als Beispiel, richtig, vielleicht geben wir einen Befehl aus, um, ich weiß nicht, vielleicht eine App bereitzustellen oder eine App zu aktualisieren. Ja, nun, was auch immer der Befehl Kubernetes sagt
, das wird im Clusterspeicher als Aufzeichnung der Absicht aufgezeichnet. Nun ist der Clusterspeicher eine verteilte Datenbank , die normalerweise auf dem Open-Source-Produkt namens Etsy Day basiert. Und es ist die einzige statusbehaftete Komponente der Steuerungsebene,
was bedeutet, dass Konfigurationsdaten lokal auf der Festplatte gespeichert werden. Sobald die Absicht des Befehls im Speicher beibehalten wird, fordert
Kubernetes dann den Scheduler auf, die Arbeit zuzuweisen. Ich denke also, der Einfachheit halber, gehen
wir davon aus, dass wir eine Web-App bereitstellen. Ja, und sagen wir, wir wollen fünf laufende Instanzen davon. Nun, die Aufgabe des Schedulers ist es,
die beste Arbeit in Notizen zu finden , um diese fünf Webserver zu betreiben. Nun, dieser Zeitplan sucht nach Dingen wie, gut, gesunde Knoten ist ein guter Anfang. Ja, es sucht nach Knoten mit den richtigen Ressourcen und genug von diesen Ressourcen. Sobald es einige Knoten gefunden hat, gibt
es die Arbeitsaufgaben an diese aus und die App wird bereitgestellt. Und das ist brillant, oder? Setzen. Und das ist der Zauberwürfel, der dort nicht aufhört. Es implementiert dann Hintergrundsteuerungsschleifen , die ständig den Status des Clusters beobachteten. Und sie sorgen dafür, dass das, was wir gefragt haben, das ist, was wir haben. Nun, wir kommen in einer Minute richtig darauf zurück, richtig? Aber in diesem Beispiel, ich denke, wir sagten, wir fragten nach fünf Webservern. Nun, Kubernetes hat Kontrollschleife implementiert. Das stellt sicher, dass wir sowieso immer fünf haben, oder? Ich denke für uns, das ist das Steuerflugzeug. Es ist das Gehirn des Clusters und Sie werden wollen, dass es hochverfügbar ist. Wir senden unsere Anfragen oder Befehle an die API-Serverkomponente davon. Diese werden im Clusterspeicher aufgezeichnet ist unser gewünschter Zustand. Also, was wir wollen, findet
der Scheduler die Knoten, um die Arbeit auszuführen. Und dann im Hintergrund gibt es beobachtete Schleifen, die sicherstellen, dass die Dinge nicht brechen. Und wenn sie das tun, sollte ich sagen, wenn sie es tun, dass Kubernetes es repariert. Brilliant Nun, das reicht vorerst für die Steuerungsebene. Wechseln wir jetzt zu den Arbeiterknoten.
5. Kubernetes: Okay, so wie die Explosionsansicht des Masters, ist
dies ein Zoomed im Blick auf einen Arbeiter. Und auf jedem Workerknoten im Cluster werden dieselben drei Hauptkomponenten ausgeführt. Aus Terminologieperspektive können
Sie diese Arbeiter definitiv anrufen und die Leute wissen, was Sie meinen. Aber zum größten Teil nennen wir sie nur Knoten. Also Meister für die Steuerungsebene, ja, äh, Knoten, wo wir unsere Anwendungen ausführen. In der Tat, manchmal nennen wir die Noten Cubelets. So wichtig ist dieser Cubelets-Bit hier. Betrachten Sie die Kubelets als Hauptagent von Kubernetes. Jeder Knoten, der als Teil des Clusters verwendet werden soll, muss einen Cube ausführen. Aber jetzt, ich nehme an, zunächst sprechen die Cubelets der Steuerungsebene und es macht den Knoten CPU und RAM und die Likes für den Cluster verfügbar. Damit die Arbeit auf den Knoten geplant werden kann, ja. Aber es beobachtet auch die Steuerungsebene und es spricht damit. Die Cubelets überwachen also die Steuerungsebene auf neue Arbeitsaufgaben, die sie ausführen muss, und berichten dann über den Status dieser Arbeit. Und interessanterweise ist das alles, was mit der Steuerungsebene gesprochen wird, über den API-Server. Ich möchte mir das wirklich klar machen. gesamte Kommunikation mit der Steuerungsebene erfolgt über den API-Server. Es ist wie die Grand Central Station. - Ja. Assads Menschen reden also über Cube, CTL oder was auch immer. Aber auch
alle Kubernetes, Bits and Stücken, buchstäblich,
alles, was mit allem auf der Steuerungsebene spricht, muss über den API-Server gehen. Wie auch immer, die Cubelets, es ist der Hauptagent von Kubernetes. Es wird auf jedem Knoten ausgeführt, der Mitglied des Clusters sein möchte. Wenn es aufhört, wie fehlschlägt oder was auch immer, ja, wird es versuchen, sich neu zu starten. Perfekt, Kontinente tot im Wasser, als der Knoten fällt aus dem Cluster und seine Fehlerbehebungszeit. Ok, schauen Sie in der Mitte des Diagramms, wir haben die Container Runtime. Jetzt ist kubanische Einstellungen ein Applikations-Orchestrator. Ja, es kann Dinge wie VMs und serverlose Workloads orchestrieren. Aber in den meisten Fällen, auf einer Eins-zu-Eins-Ebene, Ordnung, es orchestriert containerisierte Apps. Das sind Apps, die als Container wie Docker-Container ausgeführt werden. - Ja. Nun, dann schauen wir uns eine Arbeit und Notiz hier, und wir wissen, dass hier Kubernetes diejenigen Apps sind. Und wir haben gerade gesagt, zum größten Teil, diese afrikanischen Läufer Container. Daher ist es sinnvoll, dass jeder Knoten eine Software benötigt, um Container auszuführen und zu verwalten. Ich spreche über grundlegende Dinge, wie man ein Containerabbild aus
einer Registrierung zieht und dann wie man Container startet und stoppt und aktualisiert. Nun, das Stück Software, das ist die Container-Runtime hier. Nun, zu Beginn von Kubernetes, war
diese Container Runtime immer Docker. Also würden wir sagen, wie noch, Kubernetes spielt laufen unsere App. Der Scheduler würde den Knoten finden, der ihn ausführen könnte. Der auf diesem Knoten beleuchtete Cube würde die Arbeit akzeptieren und dann würde Docker als Container Runtime gewählt werden. Ziehen Sie das Bild und starten Sie den Behälter. Aber das war damals, und das ist jetzt. Und anstatt die Container Runtime immer Docker ist, haben
wir dieses Ding namens Container Runtime Interface oder CRI. Wenn du so bist wie Akronyme. Schneiden Sie direkt auf die Jagd, aber dies ist eine Plugin-Schicht. Der Brief besagt, hey, vielleicht wollen wir Docker nicht auf diesem Knoten, wir brauchen möglicherweise eine andere Container Runtime. Nun, die CI macht das möglich. So ist es jetzt wirklich einfach zu sagen, hey, auf diesem Knoten, lassen Sie uns laufen kann g Visier sein und hier kann Cutter sein, und hier kann ein Tag enthalten sein. Nun, ja, sieh mal, wir sind ein 101 Kurs, also werde ich das so einfach wie möglich in diesem Fall halten, richtig, zwischen all diesen verschiedenen Container-Laufzeiten wie Katherine, Container d, und was schwerere Wahl ist eine gute Sache. Jede Container-Runtime bietet möglicherweise unterschiedliche Leistungsmerkmale sowie Dinge wie verschiedene Arten von Workload-Isolation. So könnte beispielsweise auf der Isolation von rechts etwas wie Gee, Visier oder Cata eine isoliertere Laufzeitumgebung bieten als etwas wie Docker. Also, wenn Sie zwei Arbeitslasten nebeneinander ausführen, richtig? Manchmal ist die Isolierung dieser Arbeitslasten wichtig. Wir wissen was? Das heißt, ein ganzes Thema für sich und wir werden in diesem Kurs nicht dorthin gehen. Es genügt zu sagen, dass die Container-Runtime hier das Bit ist, das Container hochdreht und sie verwaltet. Na ja. Last but definitiv nicht zuletzt der Cube-Proxy. Dies stellt sicher, dass die Kubernetes-Vernetzung funktioniert. Jetzt ein kleiner Schritt zur Seite, richtig? Beim Erstellen eines Kubernetes-Clusters besteht ein
Teil dieses Vorgangs darin, ein POD-Netzwerk zu erstellen. Und du weißt, nun, es ist ganz einfach, oder? Das POD-Netzwerk ist ein großes flaches Netzwerk, das sich über jeden Knoten erstreckt. So wie Sie völlig einen Cluster haben können, in dem alle Knoten in verschiedenen Netzwerken in den Likes befinden. Aber dann überlagert Kubernetes dieses große flache Netzwerk über alle Knoten. Jetzt sage ich „Overlay“, richtig? Es ist normalerweise ein VX-Land-Overlay, aber es kann auch BGP sein. Wir wissen was, was wichtig ist, ist dieses POD-Netzwerk, auf dem alle unsere Anwendungen sitzen. Und es ist schön und einfach und flach, oder? So sitzen alle unsere App-Komponenten darauf und können miteinander reden. Brilliant Jedenfalls, schau hinter die Kulissen, oder? Q-Proxy führt hier die ganze Magie aus, um dieses POD-Netzwerk geschehen zu lassen. Dinge wie IP-Tabellen und IPBES-Regeln, wenn Sie interessiert. Aber das sind Knoten. Jetzt sind wir dabei, als Orchestrator nach Kubernetes zu ziehen. Ok. Aber sehr schnell, bevor sie das tun, möchte
ich nur einen kurzen Blick auf etwas, das heutzutage wirklich beliebt ist. Gastgeberte Kubernetes.
6. Gehostete K8s: Also haben wir dieses Bild, ja, unser Kubernetes-Cluster und es ist hier als Steuerungsebene und
eine Art Datenebene wie die Kubernetes-Gehirne leben in diesem Bit und dann Anwendungen nur hier. Weißt du, was Kühler ist? Kubernetes Tech ist ein Ich liebe es, richtig? Ich bin ein Realist und weiß, dass Technologie nur wirklich existiert, um Anwendungen zu betreiben und Unternehmen aufzubauen, und natürlich auch Gesundheitswesen und humanitäre Dinge. - Ja. Aber mein Punkt ist, dass niemand Kubernetes einsetzt, nur damit sie sagen können, hey, wir haben Kubernetes ist zumindest eine Hoffnung, die niemand tut. Sie sagen, Sie stellen es bereit, damit Ihre Anwendungen
im Maßstab ausgeführt werden können , und Healon-Update und all das, richtig? Es geht also um die Anwendung. Aber in dieser Anwendungsfokuswelt kümmern
wir uns wirklich nur um diese Bits hier. Ich meine, das ganze Steuerflugzeug-Zeug so cool wie es ist, richtig? Einfach in die Quere kommt,
wie einfach Zeit und Mühe zu verbringen, all die Hochverfügbarkeits-Sachen und vielleicht einige der Performance-Sachen zu planen und zu
implementieren. - Ja. Ich meine, alles, was es tut, ist, uns vom Erstellen von Anwendungen abzulenken
, genau dort, wo gehostete Kubernetes ins Spiel kommt. Also nimmt ein gehosteter Kubernetes-Service die Steuerungsebenen Bits hier, getrennt, zeichnet eine Art Abgrenzungslinie und sagt: Ich sage dir was. Wir werden all das Kontrollflugzeug-Zeug für Sie verwalten. Und wir werden nur die Arbeiter-Bits enthüllen. Also auf einem hohen Niveau, ohne ins Detail zu gehen, müssen
Sie nicht einen einzigen Gedanken an die Steuerungsebene geben. Es ist alles für dich erledigt. Upgrades, Verfügbarkeit, Leistung, all das, alles, was von Ihrem Cloud-Anbieter erledigt wird. Apropos, die alle großen Anbieter haben einen gehosteten Kubernetes-Service. Die echten großen oder Amazon IQ AS elastische Kubernetes Service, Azure Kubernetes Service, aka S und G k0, die Google Kubernetes Engine. Aber auch, digitaler Ozean, IBM Cloud, diese Jungs haben sie alle auch. Jetzt muss ich sagen, es ist die Wolke. Es fallen also Kosten an. Nichts ist umsonst, oder? Und genauso gut wie die Vorteile sind, wie Sie einen verwalteten Kubernetes-Cluster in
kürzester Zeit aufbauen können und Sie nicht die ganze Sorge über die Steuerungsebene haben. - Ja. Nun, auf der Kehrseite, geben
Sie auf, um die Kontrolle. So zum Beispiel, Sie sind beschränkt auf die Versionen von Kubernetes wird von einem Cloud-Anbieter unterstützt. Und sagen wir, wenn Sie irgendwelche flippigen Einstellungen auf der Steuerungsebene einstellen müssen, Sie höchstwahrscheinlich aus der Sperre. Also ist es großartig, oder? Legen Sie es auf zweischneidiges Schwert. Die Einfachheit kommt auf Kosten der Konfigurierbarkeit. Nun, und es ist schwer, nicht ins Detail zu kommen, weil ich dir viel sagen will, aber ich will nicht überwältigen, dass du 101 natürlich willst. Wie auch immer, Sie könnten die Frage stellen,
vor allem, wenn Sie ein Entwickler sind. Warum muss ich mich überhaupt um die Worker Node Wetten kümmern? Warum kann ich meine Bewerbung nicht einfach an Kubernetes geben? Und dass Kubernetes kümmert sich um alles für mich. Und das ist eine tolle Frage. Und das, etwas, das die virtuellen Kubelets genannt wird, die in diese Richtung gehen. Also keine echten Knoten in deinem Cluster, wie wirklich coole Sachen und eines Tages potenziell keine gottlosen Kubernetes. Aber ich denke für uns, richtig, das ist möglicherweise wirklich etwas aus dem Sprengstoff. Wenn Sie jedoch interessiert sind. Virtuelle Cubelets von Google. Bullock, ich waffle. Kubernetes ist ein Cluster von Maschinen, hauptsächlich Linux, und sie können überall laufen. Diese einzelnen Maschinen arbeiten entweder als Meister oder Arbeiter Meister implementieren alle Kubernetes Klugheit und müssen
hoch verfügbar sein und alle üblichen Kosten für Güte. Aber wir führen unsere Anwendungen nicht dort auf den Arbeitsknoten des Masters aus. Dort führen wir unsere Apps aus. Gut gehostete Kubernetes-Dienste existieren auf den meisten Cloud-Plattformen und sie verbergen vor allem die Steuerungsebene vor uns. Obwohl andere gehostete Optionen vorhanden sind. Richtig? Magie. Schauen wir uns jetzt an, wie Kubernetes ein Anwendungsorchestrator ist.
7. Kubernetes als Orchester, Kubernetes: Okay, Kubernetes als Applikations-Orchestrator. Also zuerst, Orchestrator, das vermute Wort, also was bedeutet es? Ok, tragen Sie eine Minute mit mir drauf. Es ist ein bisschen kitschig, aber ich denke, es treibt wirklich den Punkt nach Hause. Das hier ist also ein Sinfonieorchester, weißt du, ein Haufen verschiedener Instrumente, die zusammenkommen und hoffentlich erstaunliche Musik machen. Nur im Moment sind sie überall und haben keine Musik zu spielen. Also ja, vielleicht Cool, nutze nicht viel. Nun, lasst uns den Dirigenten mitbringen. Also kommt sie rein, setzt jedes Instrument an seinen
Platz, gibt die Musik aus und organisiert generell alles. Wie wenn der Start, wenn Sie Ihre besondere Rolle spielen, ging ein Tacho, ging laut oder leise alle Jazz, Yeah, Jazz. Oh, mein Lieber. Kein Wortspiel beabsichtigt dort. Jedenfalls. Mit nur ein paar Dingen, dem Dirigenten und etwas Musik wie Noten. Nun, wir sind vom Chaos zu jedem gegangen, der
seine Rolle spielt und potenziell ein bewegendes Musikstück erschaffen kann. Und es ist nicht allzu schwer, den Sprung zu Kubernetes zu machen, wo wir hier eine Reihe von verschiedenen Anwendungsdiensten haben, alle nur chillen,
in Medellin und wirklich keine Ahnung haben, was zu tun ist, wann wir laufen und wo man laufen soll. Also vielleicht Engine X im Radius und einige OAuth und einige benutzerdefinierte Bits hier, alle legit code und micro services, richtig? Aber keine Ahnung, wie sie alle zusammen kommen und was ihre besonderen Parteien. So werfen wir Kubernetes ist in die Mischung, wie das Verhalten der Luft. Und dann einige Anwendungskonfigurationen, denken Sie Notenblätter. Und plötzlich haben wir diese richtige Arbeit, die etwas tut, hoffentlich etwas Nützliches. Nun, im Fall des Orchesters, es brauchte die dirigierten kommen und organisieren sie, ihnen
sagen, wo sie es sagen sollen, wer zu folgen ging in, wie man das ganze Jahr spielen. Und es ist irgendwie dasselbe in Kubernetes mit unserer App. So ist Kubernetes zum Beispiel jede Komponente geplant. So wie sagt ihnen, auf welchen Knoten ausgeführt werden sollen, welche Netzwerke an Ports angehängt werden sollen, um all diese Güte offenzulegen. Und im Orchesterbeispiel brauchte
jeder eine Kopie der Musik. Nun, in der Anwendung hier benötigt
jedes Stück seine eigene Konfiguration. Also, was es tun soll, und das kann Dinge sein, wie Webseiten servieren, Authentifizierung
machen, vielleicht Suchvorgänge gegen die Datenbank durchführen. - Ja. Was auf eigene Faust, diese einzelnen Jobs vielleicht nicht viel scheinen. Aber wenn sie alle zusammen laufen, würden
wir eine nützliche Anwendung bekommen. Gut. Ja, ich hoffe es, weil es definitiv kitschig war. Aber weißt du was? Wenn ich das getan habe, in Workshops und Likes lebe, hat mir
jeder immer gesagt, dass es gut ist. Also hoffentlich war es nützlich für Sie. Jedenfalls. Als Nächstes werden wir einen Blick darauf werfen, Code vom Laptop
eines Entwicklers auf Kubernetes laufen zu lassen.
8. Entwicklungsworkflow: Okay, also ein Anwendungs-Workflow. Also dieser Prozess, Code vom Laptop
eines Entwicklers bis hin zum Laufen auf einem Live-System zu erhalten . Nun, es sieht so ähnlich aus. Sie schreiben Code von der Rückseite einer Anforderung oder einer Idee. - Ja. Jetzt ist Kubernetes egal, wie Sie Ihren Code schreiben oder in welchen Sprachen er ist. Solange es unter Linux oder Windows ausgeführt wurde, sollten
wir gut sein. Nun, sobald der Code fertig ist, packen
wir ihn als Container-Image-Post-Doc in eine Registrierung, und dann sind wir bereit, ihn auszuführen, weshalb Kubernetes kommt. Jetzt, sperren Sie wie weit über vereinfacht. Also lassen Sie uns ein bisschen Detail hinzufügen. Wie gesagt, du schreibst deinen Code in welchen Sprachen du wolltest, das ändert sich nicht. Aber dann dieses Bit hier, Verpacken Sie es als Containerbild. Ja, das könnte neu für dich sein. Ein typischer Workflow wäre also ein Entwickler mit Docker-Desktop auf ihrem Mac- oder Windows-Laptop. Sie schreiben diesen Code, als sie die Docker-Tools verwenden, um ihn in ein Bild zu bauen, was schick klingen könnte, aber es ist so ziemlich einfach,
Ihren Anwendungscode und alle Abhängigkeiten in einen Ordner auf Ihrem Laptop zu legen , Führen Sie einen Docker-Image-Build-Befehl dagegen aus. Felder und Docker erledigt die harte Arbeit, ein Bild zu erstellen. Wenn der Build abgeschlossen ist, haben
Sie dieses Ding, das wir ein Bild nennen, oder? Wie wir angedeutet haben, dass die Magie des Bildes darin besteht, dass es alles darin hat, was Ihre App benötigt. Also dein Oper-Code, natürlich, ja. Setzen Sie seine gut, es hat alle Abhängigkeiten wie Bibliotheken und OS-Dateisystem-Konstrukte. Das bedeutet, dass alles, was Ihre App benötigt, um ausgeführt werden zu können, innerhalb dieses Bildes ist. Das heißt wieder, Sie können es so ziemlich überall ausführen und es wird einfach funktionieren. Also schreiben Sie Ihren Code, verwenden Sie die Docker-Werkzeuge, um ihn als Bild zu verpacken, verwenden Sie
dann Docker Image Push, um ihn irgendwo in einer Registrierung zu speichern. Jetzt ist eine Registrierung nur ein Ort, um Ihre Container-Bilder zu speichern und zu schauen. Sie können Sie auf prem oder in Ihrer eigenen virtuellen privaten Cloud laufen, oder Sie können eine internetbasierte Registrierung wie Docker Hub verwenden. Der Takeaway-Punkt ist jedoch, sobald Ihre Bilder in einer Registrierung, es ist bereit, gezogen und in der Produktion ausgeführt werden. Jetzt. Produktion, ja, natürlich, richtig. In diesem Prozess verpassen wir also eine lächerliche Anzahl von Schritten. Sagen Sie Yeah, wie all die Dinge, die wir in der realen Welt mit einer kontinuierlichen Integration oder einer Continuous Delivery Pipeline tun. Also das sind Dinge wie automatisierte Builds, Tests, Schwachstellen-Scans, all das, Güte, ja, wir ignorieren es nur, um das Beispiel einfach zu halten. Aber ja, nehmen Sie an, dass all das Zeug nicht alle Builds und Tests und Scans durchführt, als Ihr Image in ein Produktions-Repository
und Ihre Registrierung geht, und Sie sind bereit zu implementieren
, wo Kubernetes ins Spiel kommt. Also an diesem Punkt ist Ihr Entwicklungsworkflow erledigt und hier übernehmen die Operationen Bits. Jetzt schauen Sie, es gibt viel zu Kubernetes und es gibt kein Weg von der Tatsache, dass es eine ziemlich steile Lernkurve ist. Aber ich möchte eine Sekunde nehmen, nur um Ihnen einen Vorgeschmack auf die Dinge zu geben , die Kubernetes Ihnen bei der Ausführung Ihrer Apps zu helfen. Im Bild hier betrachten wir drei Kubernetes Ressourcen bei Daymond Set, bei der Bereitstellung und einem stateful Set. Ich will nicht, dass du dich hier auf irgendein Detail konzentrierst. Nehmen Sie einfach das große Ganze weg. Ok? Ein Daemon-Set stellt also sicher, dass eine Instanz eines bestimmten Mikrodienstes
immer auf jedem Knoten im Cluster ausgeführt wird , sind wirklich gängige Beispiele wie Protokollierungs- oder Überwachungsdienste. Ja, du brauchst es, um auf jedem Knoten zu laufen. Nun, rate mal was? Verwenden Sie dazu einen Daemon-Satz. Du hättest also deinen Logging- oder Überwachungsdienst, richtig? Du würdest es in ein Kubernetes Damon Set einwickeln. Geben Sie es Kubernetes zum Einsatz. Und Kubernetes wird sicherstellen, dass eine Instanz davon auf jedem Knoten im Cluster ausgeführt wird. Brilliant Aber wenn Sie mehr Knoten in der Zukunft hinzufügen, keine Sorge. Kubernetes sieht das und stellt sicher, dass die neuen Knoten eine Instanz erhalten. Gutes Zeug. Nun, eine Bereitstellung ist anders. Dabei geht es darum, skalieren, selbst hageln und rollende Updates durchführen zu können. Und das werden wir später in der praktischen Sektion sagen. Also werde ich jetzt nur Einsätze parken, richtig? Dann ist der letzte, den wir zeigen und denken Sie daran, dass es noch viel mehr gibt. Ok? Put-Stateful Sets handelt es sich um die Bereitstellung und Verwaltung der statusbehafteten Teile unserer Anwendungen. Diese geben uns also Dinge wie zuverlässige Pod-Namen und geordnete Startups und Likes. - Ja. Aber schauen Sie, wo auf hohem Niveau oder wollen nicht
im Detail verloren gehen , indem Sie nur darauf hinweisen, richtig, Kubernetes bietet viele Möglichkeiten, um die verschiedenen Bits unserer Apps bereitzustellen und zu verwalten. Cool, wir werden in der Zusammenfassung aussehen, wir haben drei Hauptteile für den Workflow. Sie codieren Ihre App. Sie verwenden Docker, um alles als Containerabbild zu verpacken und in eine Registrierung zu verschieben. Anschließend verwenden Sie Kubernetes, um es bereitzustellen und zu verwalten. Einfach. Nun, einer war, dass sie Lektion waren und dann kommen wir in die Beispiele.
9. Gewünschter Zustand: Genau dann eine Sache, die wir unbedingt wissen müssen, ist, dass die Atomeinheit der Bereitstellung oder Skalierung und Kubernetes etwas ist, das ein Pod genannt wird. Und Passwörter können atomare Einheit der Planung schreiben. Ja, richtig? Nun auf dem Bildschirm hier, können
wir sagen, dass vollständige VMware, die atomare Einheit der Planung, die virtuelle Maschine für Docker
ist, es ist ein Container und für Kubernetes besucht den Pod. Brilliant Nun, was das bedeutet, ist, wenn wir eine Anwendung auf VMware vSphere bereitstellen, wir stempeln sie als virtuelle Maschinen aus. Wenn wir eine Anwendung in Docker bereitstellen, stempeln
wir sie als Container auf erraten was? Wenn wir die Gemeinschaften entsandt haben? Wir stempeln es als Schoten aus. Jetzt stumpfe es raus. - Ja. Was ich sage, ist, dass all die verschiedenen Teile
unserer Apps auf Kubernetes als Pods laufen werden. Also ich weiß nicht, ob wir wie ein Web-Front-End zu unserer Anwendung haben. Ja, wir müssen es skalieren. Wir skalieren es, indem wir mehr Teile hinzufügen oder wenn wir nach unten skalieren, nehmen
wir Teile weg. Brilliant Nun, ja, Kubernetes ist ein Orchestrator von containerisierten Apps. Ich meine, es kann auch virtuelle Maschinen und serverlose Arbeitslasten orchestrieren. Aber größtenteils orchestriert Kubernetes containerisierte Anwendungen. So sind Anwendungen beide von Knoten Container. Nur. Sie können einen Container nicht direkt auf Kubernetes bereitstellen. Ernsthaft, damit Container auf Kubernetes laufen, muss
es in eine Kapsel eingewickelt werden, ja. Und für das intensive Betriebssystem jetzt in seinem 101 Kurs, denken
Sie nur an einen Topf ist ein leichter Wrapper um den Container. Alles, was es tut, ist lassen, die einen Lauf auf Kubernetes enthalten. Und jetzt werden wir sie später in einem Hands-on Bits sehen, und dann wird alles klar. Aber ich habe eine letzte bessere Theorie. Deklarative Bereitstellungen, unerwünschter Zustand versus tatsächlichen Zustand oder ordnungsgemäßer Bissen. Nun, Kubernetes liebt uns, Dinge dazu deklarativ zu beschreiben. Buzzword Bingo, richtig? Würde einfach diese Schlagwörter lieben. - Ja. Nun, auf dem Bildschirm haben
wir ein paar Anforderungen. Das ist es, was wir wollen. Also zehn Kopien eines Dienstes basierend auf dem Bild
, das auf Port 8080 mit einem bestimmten Label verfügbar ist. Das ist es, was wir wollen. Und der technische Begriff dafür ist erwünschter Zustand. Nun, wir schreiben das in eine Konfigurationsdatei und wir geben es Kubernetes, zehn Replikate von jedem Container auf diesem Port mit diesem Label, Yeah. Und wir sagen im Grunde, hey, Kubernetes, geh einfach und lass das passieren. Und das war's jetzt. Es scheint nichts zu sein, aber darüber nachzudenken. Vergleichen Sie das mit der Anstrengung und dem Schmerz des Schreibens eines humungösen Skripts mit allen Befehlen und der ganzen Logik zu mögen, na ja, entscheiden Sie, welche der Knoten zu einem der zehn Replikate auf für den Anfang, plus alle Befehle und Logik ziehen Sie die Bilder, alle Befehle und Logik, um die Container zu starten verbunden die Netzwerke stellen die Ports offen, sind die Etiketten, all das Zeug, richtig? Nun, dieses deklarative Modell hat nichts davon. Schreiben Sie einfach auf, was Sie wollen, geben Sie es Kubernetes. Lass Kubernetes mit dem harten Zeug umgehen. - Ja. Und das ist wirklich brillant, oder? Aber weißt du was? Es ist nur die Hälfte der Geschichte. Weil du siehst, weil wir Communities
erklären, was wir wollen, anstatt nur zu sagen,
hey, führe diese lange Liste von Befehlen aus. Nun, weil wir ihm sagen, was wir wollen, zeichnet
Kubernetes diesen gewünschten Zustand als eine Aufzeichnung der Absicht im Clusterspeicher auf, dann macht es möglich. Aber danach dreht es sich. Sehen Sie sich Loops an, die den Cluster beobachten und ständig sicherstellen, dass das, was tatsächlich auf dem Cluster ausgeführt wird, dem entspricht, was wir wollen. Wenn dies der Fall ist, also wenn der tatsächliche Zustand dem gewünschten Zustand entspricht, brillant, richtig? Wenn es aber nicht tut, haben wir vielleicht nur acht Repliken statt zehn. Wird Kubernetes tun, was immer es kann, um diese Magie zu reparieren? Nun, schauen Sie einfach in Kuchen aus Snooty, richtig? Nehmen wir an, ein Knoten ist fehlgeschlagen und wir verlieren zwei Replikate damit. Und was zum Teufel, richtig? Es passiert um drei Uhr morgens. Nun, Kubernetes weiß, dass wir zehn Nachbildungen brauchen. Wir haben gerade drei verloren und es ist auf sieben gesunken. Es dreht sich also noch drei und wir sind wieder zehn. Tatsächliche Zustandsübereinstimmungen des gewünschten Zustands Problem behoben, oder Und kein Anruf an Sie mitten in der Nacht. Lavett? Nun, dieses Modell ist absolut integraler Bestandteil der Funktionsweise Kubernetes und ist eines der Dinge, die es so großartig macht. Und das hier, so sieht es eigentlich aus. Nun, wenn Sie noch keine YAML-Datei wie diese gesehen haben und es sieht ein bisschen beängstigend, ein Versprechen Sie, es ist nicht in Ordnung. Als ob du diese Dateien nie von Grund auf neu schreibst. In der Tat, weißt du, ich nehme immer nur ein altes und modifiziere es. - Ja. Aber die Sache ist, wenn Sie ein paar gesehen haben, beginnen
sie viel einfacher zu suchen. Wie auch immer, schauen Sie, wir sagen zehn Replikate, also zehn Pods, Yeah, laufen dieses bestimmte Image und hören auf diesem Port ASI, Post-Doc an den API-Server,
vorausgesetzt, es übergibt die gesamte Authentifizierung und Autorisierung im Clusterspeicher als gewünschter Zustand aufgezeichnet und im Cluster bereitgestellt wird. Fabelhaft. Aber dann, wie gesagt, laufen
diese Versöhnungsschleifen im Hintergrund
und sie beobachten den Cluster immer den ganzen Tag, die
ganze Nacht, aber wahrscheinlich mit einem Kaffee, um ihn wach zu halten oder was auch immer. Setzen Sie es ständig beobachten den Cluster. Und jeder beobachtete Zustand variiert von gewünschtem Zustand, Kubernetes versucht, es zu beheben. Brillantes Versprechen, richtig? Du wirst es lieben. Und etwas anderes, das du liebst. Wir sind fertig mit der Theorie. Es ist Zeit, einige Beispiele anzuschauen.
10. Kubernetes kaufen: Okay, wenn Sie also folgen möchten, benötigen
Sie einen Kubernetes-Cluster und die Beispiel-App- und Lab-Dateien. Also, was wir tun werden, ist, dass wir Ihnen einige sehr einfache Wege zeigen, Kubernetes zu bekommen. Dann zeigen wir Ihnen, wie Sie die Labordateien bekommen. Also auf der Kubernetes Front wird auf Docker-Desktop schauen, spielen mit Kubernetes und Google Kubernetes Engine. Jetzt gibt es natürlich andere Optionen, und ich denke, wenn Sie bereits einen Cluster haben, können Sie das
vielleicht einfach verwenden. Stellen Sie sicher, dass es nicht Ihr Produktions-Cluster ist. Wie auch immer, suchen Sie nach Docker-Desktop. Sie kommen einfach auf die Docker-Website. Oder noch besser, Sie können nur Google Docker Desktop. Aber so oder so wirst du irgendwo so landen. Und dann laden Sie einfach die Version für Sie herunter. Jetzt bin ich gerade auf einem Mac. Also werde ich sie Swan hüpfen. Und dann, wenn das heruntergeladen wird, ist
es wirklich nur ein bisschen klicken Sie auf Weiter, Weiter, Weiter. Ehrlich gesagt, es könnte nicht einfacher sein. Jedenfalls, wenn Sie es nicht tun, erhalten
Sie diesen Wal oder Birne oder es wird unten in der rechten Ecke, wenn Sie unter Windows sind. Aber wenn Sie darauf klicken, erhalten Sie diese ausgefallene Benutzeroberfläche, wo Sie kommen und Kubernetes aktivieren. Jetzt kann es ein oder zwei Minuten dauern, um zu beginnen, aber wenn es fertig ist, Bingo, sind Sie im Geschäft und Sie sind bereit die Labordateien
zu holen und mit dem Kurs zu knacken. Jetzt ist Docker Desktop nur für Dev- und Testzwecke und Sie erhalten nur einen einzelnen Knoten Cluster C es hier eine einzige Note, die als Master und Worker fungiert. Nun, es ist offensichtlich nicht das, was Sie für die Produktion wollen, aber es ist definitiv gut genug mit der Entwicklung. Okay, also spiel mit Kubernetes. Wieder, nur Zurrn in Google und folgen Sie dem Link. Es möchte, dass Sie sich mit
entweder GetHub auf Docker-Hub anmelden , und dann folgen Sie einfach den Anweisungen auf dem Bildschirm und Sie erstellen einen Cluster. Jetzt, schauen Sie, spielen Sie mit Kubernetes ist kostenlos und es ist großartig. Ehrlich gesagt, ich liebe es. Aber manchmal ist es nicht super reaktionsschnell oder nicht kann ziemlich frustrierend. Aber denken Sie daran, es ist kostenlos und die Jungs dahinter tatsächlich tun war ein Dienst, nur indem Sie es herausstellen, dass oh, Sie wissen was auch. Wenn Sie hier nachschlagen, ist
dies ein Timer, der herunterzählt, bis Ihr Cluster gelöscht wird. Also wieder, wie Docker Desktop, ist
es nur ein Spielplatz. Und natürlich hat dieser manchmal einige Leistungsprobleme. Aber die Sache ist, es ist zeitlich begrenzt. Also, wenn nicht Zähler 0 trifft, wird
es geboren, wie nicht zu Ihrem Cluster gewählt und alles, was darauf läuft. Aber wenn Sie ein Boot haben, ehrlich gesagt, sind es Labordateien und Sie sind bereit zu gehen. Okay, last but not least, um einen Cluster
zu bekommen und denken Sie daran, dass andere Optionen existieren. Aber Google Kubernetes Engine ist eine solide Option für gehostete Kubernetes in der Cloud. Und ich werde tatsächlich eine Menge der Demos im Kurs darauf laufen. Jedenfalls. Hören Sie, es ist Cloud-Service, also kostet es Geld. Sie unter keinen Umständen SpinnenSie unter keinen Umständeneinen Cluster für diesen Kurs und vergessen Sie ihn dann. Denn wenn du das tust, bekommst du einen eigenen Willkommens-Bill. Wie auch immer, solange Sie ein Google Cloud-Konto mit Abrechnung aktiviert haben, ist
es nur Cloud Punkt google.com Login auf der Konsole hier, Kubernetes Engine und dann durch die Bewegungen der Erstellung eines Clusters gehen. Also nenn es, was du willst,
entscheide, wo du es willst. Ich neige dazu, was am leichtesten ist, wenn ich ein Labor mache. Und dann unter Knotenpool hier liegt es an Ihnen. Aber ich empfehle normalerweise drei Knoten und einen Weg, der geht. Es dauert eine Minute oder was auch immer, um zu bauen. Aber wenn es fertig ist, werde ich dafür bezahlen, dass du diesen einzigen G-Cloud-Befehl kopierst. Und solange Sie das Google SDK mit G Cloud installiert haben, dann geben Sie ihm einfach eine schnelle Rhone. Und ein Cube CTL bekommt Knoten, zeigt dich auf und läuft und bereit zu knacken. Also noch einmal, an diesem Punkt, haben
Sie einen Kubernetes-Cluster. Und sobald Sie die Labordateien haben, sind
Sie bereit zu rocken und zu rollen. Aber wie ich schon sagte,
bitte, was immer Sie tun, vergessen Sie
nicht, den Cluster zu löschen, wenn Sie fertig sind. Okay, also haben wir eine Beispiel-App für einige Konfigurationsdateien auf GitHub. Und übrigens, sich
keine Sorgen, wenn Sie nicht wirklich wissen, was GetHub ist, Sie müssen nicht nur Ihre Browserhaare zeigen. Wenn Sie interessiert sind. Die App befindet sich in diesem Ordner. Und dann sind dies die Konfigurationsdateien hier unten im Stammverzeichnis des Repos. Aber alles, was Sie tatsächlich brauchen, ist dieser Link hier, drücken Sie die Zwischenablage Taste, und geben Sie dann in einem Terminal-Fenster git clone und fügen Sie den Link ein. Und das war's. Oder eigentlich nein, weißt du was, du hast einen neuen Ordner. Kalt. Kubernetes ist 101 Skill-Anteil oder Scotia kurz. O jedenfalls, geh da rein. Und das ist die App in den Konfigurationsdateien. Also schauen Sie, mit einem Cluster in den Laborakten, sind
Sie bereit, zu gehen, oh, ich bin schrecklich darin. Und stellen Sie sicher, dass alle Befehle , die Sie später im Kurs in einem der Laborszenarien ausführen, okay? Führen Sie sie aus in diesem Ordner aus, denn Sie brauchen Zugriff auf die Datei, sagen Sie ja, nun, das war's. Los, komm schon. Lasst uns aufknacken.
11. Einen Pod einsetzen: Okay, also werden wir uns sanft einlassen. Wir haben bereits gesagt, dass die Atomeinheit des Einsatzes auf Kubernetes die Pod ist. Und dass ein Pod nur ein Wrapper um einen Container ist, der es auf Kubernetes laufen lässt. Also noch mehr Bilder. Ich dachte, wir wären ernsthaft mit den Folien fertig, oder? Wenn du denkst, dass du sie satt hast, sind
sie der Fluch meines Lebens. Also wird dieser eine wirklich schnelle sein. Wir fangen mit Code an, wir bauen ihn als Container und
wickeln ihn in einen Pod ein. Schön. So sieht es so aus, als würde man. Jetzt reden wir, das ist eine Kubernetes ist YAML-Datei. Manchmal nennen wir es eine Manifestdatei, aber diese beschreibt einen Pod. Also, beginnend unten, nennen wir das die Container-Spezifikation. Es ist also der Container, die Kapsel wird laufen. Und dann das Zeug hier oben, das ist die POD-Verpackung, Nun, der Behälter, aber es ist ziemlich einfach. Wenn Sie einen Docker gemacht haben, geben
Sie ihm einen Namen, der willkürlich ist, oder? Nennen Sie es, wie Sie wollen. Dies ist das Bild, auf dem es basiert. Das ist also, was all Ihren Anwendungscode und seine Abhängigkeiten enthält, Yeah, und stellen Sie ihn auf Port 8080 bereit, ganz einfach. Die Apps hier laufen es als Container aus, greifen auf diesen Port zu und geben ihm diesen freundlichen Namen, Boom, das ist u Container. Aber um es auf Kubernetes laufen zu lassen, braucht
es all das Zeug hier. Ja, die Hülsenverpackung für einen besseren Begriff. Nun, ich denke, wir werden das hier durchlaufen, richtig, weil es bei allen Kubernetes-Objekten ähnlich ist. Wir beginnen immer mit API-Version und Art können Sie sie in jeder Reihenfolge haben, oder? Aber API-Version v1 und Art Pod, weißt du was? Es ist keine Raketenwissenschaft, wir sagen Kubernetes wird als Pod abgerechnet und bauen sie auf, was im Wesentlichen eine Version eines des Pod-Schemas ist. Wenn es jemals ein v2-Schema gibt, würden
wir erwarten, dass es noch ein paar Schnickschnack hat, wie es bei späteren Versionen der Dinge üblich ist. Aber ja, gib uns einen Pod basierend auf V1 des Pod-Schemas oder der Pod-Spezifikation. Dann Metadaten hier, wir geben ihm einen Namen und wir werden dies in einer Minute verwenden. Dann haben wir ihm ein paar Etiketten gegeben. Jetzt wird die Macht der Etiketten ein wenig später sehen. Aber jetzt lassen Sie mich sagen, dass sie unverschämt mächtig sind. Aber das war's, richtig? Das ist unser gewünschter Zustand, an dem wir vorhin geknallt haben. Anstatt also einen Mann zu schreiben, der mit Tonnen von Befehlen tiefgestellt ist, um
Dinge zu tun , wie das Containerbild in Befehlen zu ziehen, um den Container zu starten, was übrigens anders ist, wenn Sie verschiedene Containerlaufzeiten verwenden, ja. Sie benötigen aber auch Befehle, um es an ein Netzwerk anzuhängen, das auf 8080 verfügbar ist. All diese Komplexität Luft, na ja, nein danke. Wir wollen nichts davon. Stattdessen legen wir hier einfach das, was wir wollen, in eine Datei, schicken sie an Kubernetes und lassen Kubernetes herausfinden, wie es geht. davon sprechen, schicken
wir es an Kubernetes. Jetzt habe ich eine Kopie der Datei hier in meinem Arbeitsverzeichnis. Wenn Sie folgen, klonen Sie
entweder das GitHub-Repo mit diesem Befehl hier oder kopieren Sie den Text und legen Sie ihn in eine Datei in Ihrem Arbeitsverzeichnis namens Pod dot yaml. Und dann schauen Sie sich der Name der Datei ist willkürlich, aber ich werde Ihnen nur Beispiele zeigen, mit denen Pod dot yaml genannt wird. Also Cube CTL Anwendung Datei Pod dot yaml, und das war's. Jetzt hinter den Kulissen hat Cube CTL eine Konfigurationsdatei. Es befindet sich in einem versteckten Verzeichnis in Ihrem Profil namens cube. Und dann dort drin hat es eine Konfigurationsdatei, die bequem config genannt wird. Während es drin ist, hat es Dinge wie die Cluster,
API, Endpunkt und Anmeldeinformationen und so. Damit Cube CTL weiß, wo der Befehl gesendet werden soll, und es kann Authentifizierung durchführen. Ja, nun, wenn wir Cube CTL Pods bekommen, da ist es 101 Pod und es läuft. Der API-Server akzeptierte also unsere YAML als neuen gewünschten Zustandsspeicher, die Kopie und den Clusterspeicher, und der Scheduler fand einen fehlerfreien Knoten, um den Piton auszuführen. Brilliant Jetzt können wir eine Cube CTL ausführen, Pods mit der Wide Fly Pflege
erhalten, um zu sehen, auf welchem Knoten es läuft. Und ein Cube CTL beschrieb Pods 101 pod. Und das wird uns eine detailliertere Ansicht geben, die wirklich schön formatiert ist. Nun, diese beiden Befehle, Cube CTL get und Cube CTL beschreiben. Das werden deine besten Freunde sein, wie du es warst, buchstäblich die ganze Zeit auf sie verlassen. Nun, eine Frage, die ich ständig in Workshops in den Likes gestellt werde, ist, wie schreiben wir diese YAML-Dateien und dort wie eine lächerliche Anzahl von Feldern und Optionen. Nun, zum ersten, wie schreiben wir sie? Die Antwort ist ziemlich unkompliziert. Zum größten Teil. Du nimmst einfach ein altes, vielleicht sogar aus dem Web oder irgendwo und änderst es wie sogar dieses super-einfache pod yaml, das wir gerade gemacht haben. Das habe ich nicht von Grund auf neu getippt. Also ja, normalerweise werden Sie ein altes kopieren und es optimieren. Nun, die Frage nach dem Wissen aller möglichen Felder und Optionen und so. Weißt du was, diese tote einfache Antwort darauf auch. Ja, die meisten Objekte haben eine richtige entmutigende Liste von Optionen, die Sie in die AML einfügen können, aber Sie müssen sie nicht einfügen. Du steckst einfach die ein, die du brauchst. Dann die, die Sie ausgelassen haben, erweitert
Kubernetes sie mit Standardwerten. Also wissen Sie was, wenn wir eine andere Cube CTL laufen hier bekommen Pods, aber wir schalten diese Option hier von breit auf YAML. Sieh dir das an. Das ist der vollständig erweiterte YAML aus dem Cluster-Store. Und ich meine, es ist viel länger als die zehn oder 15 Zeilen oder was auch immer, die wir an den API-Server geschickt haben. Es gibt also Anmerkungen und Namespace unter der Containerspezifikation. Es gibt gut, es gibt einen Ton, oder? Also ja, Kubernetes füllt alle Leerzeichen, in denen wir nicht explizit Werte setzen. Nun, haha, ja, aber auch, ein bisschen weiter unten, gibt es hier diesen ganzen Statusabschnitt, den wir nie unsere Tiere spezifizieren. Aber ich liebe es, oder? Denn es ist eine gute Möglichkeit
, den gewünschten Zustand im Vergleich zu beobachteten Zustand zu verstärken , auf dem wir etwa früher geknackt haben. Der Spezifikationsabschnitt ist also im Grunde unser gewünschter Zustand. Was wir Kubernetes gefragt haben, ist vier. Der Zustand ist hier jedoch Block, dies stellt den aktuellen beobachteten Zustand des Clusters oder
den beobachteten Zustand zum Zeitpunkt, zu dem wir den Befehl ausführen, Yeah. Nun, wir haben hier einen Container, der auf unserem Bild basiert. So nannten wir es. Es ist bereit zu laufen. Das ist seine Ip, buchstäblich eine Tonne Zeug. Und ja, das ist eine Kapsel. Wir haben es deklarativ in einer einfachen YAML-Datei beschrieben. Es hatte eine Container-Spezifikation und wir haben es als Kapsel eingewickelt. Dann haben wir Cube CTL verwendet, um diese YAML an den costas API Server zu senden. Wir wurden offensichtlich basierend auf dem authentifiziert, was in der Cube-Konfigurationsdatei ist. Die YAML wurde um alle Standardwerte und Sachen erweitert, die wir nicht angegeben haben. Und es wurde in einem Clusterspeicher gespeichert. Dann wurde der darin definierte Pod für den Cluster geplant und es wird ausgeführt. Wunderbar. Nun, in der nächsten Lektion werden
wir sehen, wie man sich damit verbindet.
12. Verbinde dich über einen Service: Also haben wir einen Pod laufen, und darin läuft Container,
eine einfache Webanwendung, eine einfache Webanwendung, aber wir verbinden uns nie direkt mit diesem Pod. Also nehmen wir nie seine IP oder was auch immer und öffnen einen Sockel dafür. Nun, es gibt eine Reihe von Gründen dafür, und wir werden einige von ihnen in Kürze behandeln. Was wir jetzt wissen müssen,
ist, dass für den Zugriff auf Anwendungen in einem Pod, wir brauchen ein anderes Kubernetes Objekt ist ein Dienst genannt. Und das tote einfach, richtig? Stellen Sie sich einen Service als Summen eines Front-Ends und Back-End vor. Am Front-End erhält jeder Dienst einen Namen, eine IP und einen Port. Und Kubernetes gibt eine Gusseisen Garantie, dass sich diese Werte nie ändern werden. Dann haben
sie auf dem Backend einen Port und den Label-Selektor. Der Verkehr kommt am Front-End rein. Mein Dienst auf Port 30,001 oder was auch immer. Und es wird in diesem Beispiel aus dem Backend auf Port 8080 geschoben und Lastenausgleich über alle Pods im Cluster mit der App, ein Weblabel konnte nicht ESEA sein. Also das Beispiel, das wir öffnen werden, bekam wie, ich weiß nicht, zehn Teile können sein, aber der Dienst sendet nur Verkehr an diejenigen mit der App gleich Weblabel Magie. Nun, hier ist ein Service Yaml. Wir beginnen mit API-Version und Art wieder, also das heißt, Hey, Kubernetes, Geben Sie mir einen Dienst, bitte, und stützen Sie ihn auf die V1-Definition eines Dienstes. Ja. Aber dann wird die Front-End-Konfiguration gleich zuerst, wir geben ihm einen Namen. Jetzt wird dies beim internen Kubernetes DNS-Dienst registriert. Das bedeutet, dass der Dienstname innerhalb des Clusters aufgelöst
werden kann , ist SVCs A101. Dieser hört auf zwei Ports. Das ist immer noch das Front-End, erinnerst du dich? Es verringert sich also innerhalb des Clusters auf Port 8080 hier und außerhalb des Clusters. Also für Verbindungen, die von externen Quellen auf Port 30,001 eingehen. So können Apps innerhalb des Clusters
S-Phase A101 auf Port 8080 hier treffen und das Front-End des Dienstes erreichen. - Und auch. Obwohl. Dieser Knotenport sagt hier, auch auf Port 30.001 auf jedem Knoten im Cluster zu hören. So können wir von außerhalb des Clusters kommen und einen beliebigen Knoten im Cluster mit seinem Namen oder seiner IP auf Port 30,001 treffen und das gleiche Ergebnis, wir haben den Dienst getroffen, richtig? Nun, das ist die Front-End-Konfiguration, die Backend-Konfiguration, wie wohin wird der Datenverkehr weitergeleitet? Nun, es geht aus dem Rücken auf 8080. Auch in diesem Beispiel muss es keine Kopie einen anderen Port schreiben, aber es wird zu jedem Pod im Cluster mit dem API-Weblabel gehen,
was ich denke, wenn wir uns hier unseren Pod ansehen. Ja, es hört auf 8080 und es ist als AP gleich Web beschriftet. Also, wenn wir diesen Service bereitstellen und du dich daran gewöhnen wirst, richtig? Ich habe die FVC YAML-Datei lokal hier. Wenn Sie mitverfolgen, stellen Sie sicher, dass Sie es auch lokal haben. Jetzt können Sie die Dateinamen nennen, was Sie wollen, oder? Es muss nicht SBC dot yaml sein. Wenn Sie jedoch die Befehle eingeben und den Namen der Datei geändert haben,
stellen Sie sicher, dass Sie nicht nur das eingeben, was ich tippe.
Ja. Nun, schauen Sie, wieder, es wird an den API-Server gesendet, authentifiziert und autorisiert. Wir erhalten ein Update auf unseren gewünschten Zustand im
Clusterspeicher beibehalten und der Dienst wird erstellt. Sieht gut aus. Jetzt, Dienste und nicht wie Pods, sie laufen nicht wirklich irgendeinen unserer Anwendungscode. Grundsätzlich gibt es ein Haufen Netzwerk in Sachen, richtig? So wie IP-Tabellen oder IP-VS-Regeln, die bei der Nutzung der Dienste IP-Adresse Trap und tun, was Networking-Magie erforderlich ist, um den Datenverkehr an die richtigen Pods weiterzuleiten oder zu
laden, die unsere Apps ausgeführt werden. Jetzt wie zuvor, und du wirst dich daran gewöhnen, richtig? Aber Sie können sie mit der üblichen Cube CTL sehen, die in Cube CTL Befehle beschreiben. Also da ist es, SVCs A101, und sie beschreiben gibt uns eine schön formatierte Ausgabe mit ein bisschen mehr Details. Aber vergessen wir nicht, warum wir das geschaffen haben, richtig. Wir haben gesagt, dass wir nie direkt mit Hülsen gesprochen haben. Wir stellen ihnen immer einen Service vor und sprechen mit dem Service. Wenn Sie also eine Anwendung sind, die auf dem Cluster ausgeführt wird oder Sie wissen, was Sie wissen, können Sie sogar eine exakte Sitzung in einem Anwendungs-Pod haben, der auf Ihrem Cluster ausgeführt wird. Sie könnten den Namen des Dienstes aufrufen. Unsere ist SBC 1.0.1 auf dem Service-Port. Jetzt der interne Port, denken Sie daran war 8080 und Sie würden den Dienst erreichen. Nun, wenn Sie sich außerhalb des Clusters befinden, vielleicht sind Sie auf Ihrem Laptop oder einem externen Anwendungsclient oder so, dann haben Sie einfach die öffentliche IP oder das öffentliche DNS, der Knoten im Cluster an diesem Port, 30,001, und Sie werden es auch erreichen. Nun, schauen Sie, reden ist billig, oder? Mein Kubernetes-Cluster befindet sich in der Google Cloud. Also schaue ich die öffentliche IP eines dieser Knoten nach. Danke wie immer, Gk für deine abscheulich langen Knotennamen, die meine Säulen vermasseln. Und ich werde diese externe IP haben. Und wir werden das in eine neue Browser-Sitzung setzen, 30.001. Und da sind wir wie von Zauberhand. Nun, dann schauen Sie, äh, will
wirklich nicht, um den Punkt zu arbeiten ,
aber ich
möchte wirklich, dass Sie weg von diesem Kurs gehen und die Grundlagen verstehen. Also lassen Sie mich klarstellen, richtig? Dieser Dienst ruft einen stabilen Namen und eine IP-Adresse auf dem Cluster ab. Wenn ich sage stabil, richtig, Kubernetes ist super pinky Versprechungen, dass diese Werte nie ändern, solange der Dienst existiert. Der Name des Dienstes wird bei den internen DNS-Clustern registriert,
was bedeutet, dass alle Teile Ihrer Anwendung auf dem ClusterDatenverkehr
an den Namen der IP-Adresse des Dienstes an seinem Port sendenkönnen Datenverkehr
an den Namen der IP-Adresse des Dienstes an seinem Port senden und der Dienst erreicht wird. Sobald Sie den Dienst erreicht haben, wird der
Datenverkehr über Pods auf dem Cluster mit einem passenden Label ausgeglichen. Aber wir sind noch nicht fertig, oder? Denn dieser spezielle Dienst, den wir erstellt haben, ist ein Knotenport-Service. Andere existieren, oder? Aber dies ist ein Knotenport-Service, und das bedeutet, dass er einen zusätzlichen Port erhält, 30.001 in unserem Beispiel, der über jeden Knoten in einem Cluster der Außenwelt zugänglich ist. heißt, wenn Sie einen externen Client haben, wie meinen Webbrowser, den wir gerade gesehen können
Sie jeden Knoten im Cluster auf diesem Port treffen und die Oberfläche erreichen. Und schließlich die Anwendung,
die, wie wir sagten, dann Lastausgleich den Datenverkehr, Ablagerung des Clusters mit der API geht Web-Label, und erreichen die Anwendung. Nun, endlich, ich denke richtig, wir können jeden Knoten im Cluster auf diesem Port treffen. diesem Knoten muss kein Replikat des Pods ausgeführt werden. Wer? Okay, eine letzte Sache. Also, warum sie Nigel sind, müssen wir mit einem Dienst reden, anstatt direkt mit Schoten? Wer ja, toller Fragenführer, den Sie gefragt haben. Stellen Sie sich dieses Szenario wieder vor. Schreibe einen Haufen Pods auf den Cluster und du weißt was, lasst uns diejenigen verlieren, die nicht mit unserem Label übereinstimmen. Okay, sieht für mich nach fünf aus. Nehmen wir an, das Hosting unserer Web-Front-End und die Nachfrage steigt verursachen was auch immer, richtig? Wir haben eine Beförderung oder so, vielleicht ist es Black Friday. Ja. So fügen wir mehr hinzu, um mit der Nachfrage fertig zu werden. Will, woher wussten die anderen Teile unserer App über diese neuen Pods, die wir gerade hinzugefügt haben? Und es funktioniert dasselbe. Wir skalieren und lassen einige davon weggehen. Ich meine, wir wollen nicht, dass unsere Entwickler
ihren Code aufblähen , indem sie Logik schreiben, um solche Dinge zu verfolgen. Nun, also bauen wir stattdessen Service auf. Dieser sitzt vor den Pods und bietet den garantierten Namen, IP und Port. So dass, wie wir Pods unten hinzufügen und entfernen, hält
der Dienst die Spur eingefroren und es buchstäblich alle Skalierung nach oben und unten, die hier unten los ist,
verstecken. Richtig? Also, ja, wie wir schon über Hintergrund-Watch-Loops gesagt haben, gibt es eine Kontrollschleife für
das Service-Objekt im Hintergrund , die einfach Tag für Nacht dort sitzt, Tag
für Nacht , auf Popcorn, nach neuen Pods suchen, die mit den Etiketten im Service übereinstimmen. Wenn neue übereinstimmende Pods hinzugefügt werden, aktualisiert
der Dienst seine Endpunktliste. Und raten Sie was? Als Schoten verschwinden, tut es das gleiche. Immer eine aktuelle Liste mit gesunden passenden Pods aufrechterhalten. Gutes Zeug. Und wir sind fertig. Ja. Als Nächstes werden wir über Selbstheilung sprechen.
13. Verwendung von Bereitstellungen: Jetzt haben wir bisher einen Pod und Service bereitgestellt. Der Pot ist, wo unsere Anwendung läuft und der Dienst ist, wie wir nur mit ihm verbinden. Und das knallt mir jedes Mal an, wenn ich das Gespräch hatte. Wir stellen nie wirklich Pods direkt bereit. Und hier ist, warum schreiben Sie das. Hier ist eine Kapsel, die einen Behälter einwickelt und weißt du was? Buchstäblich das einzige, was eine Pod-Dosis zuerst ist, lassen Sie den Behälter darin laufen auf Kubernetes. Sie erinnern sich wahrscheinlich, wir sagten, Container können nicht direkt auf Kubernetes laufen. Wir müssen sie in eine Hülse wickeln. Will Magie, das ist großartig. Put Hülsen geben uns diddly hocken. Also absolut 0, wenn es um Dinge wie Selbstheilung, Skalierung, Ausführen von Updates und versionierten Rollbacks geht. Für all das gute Zeug müssen wir Deployment,
die, wie das Bild zeigt, um einen Pod
wickelt. Es ist also ein bisschen so, als würde man dieses Jahr das Paket passieren. Wir haben Container, die unseren Anwendungscode umhüllen, unsere Container
verpacken und jetzt eine Bereitstellung, die einen Pod umhüllt. Und wie auf dem Bild steht, ist
die Bereitstellung, was uns all das gute Zeug gibt. Nun, so sieht es aus. Nun, hier unten unten unten, haben
wir den gleichen alten Container, oder? Unverändert. Daran sollten wir uns mittlerweile gewöhnen. Und dann irgendwie wickeln wir nicht, wir haben einen Haufen von der Hülse Zeug. Dies sind also die Labels, die der POD erhält, damit dieser Dienst, den wir erstellt haben, Datenverkehr an ihn senden kann. Ja, genauso wie vorher, oder? Und schließlich haben wir das Deployment-Zeug hier oben, das sich um den POD wickelt. Nun, dieses Mal von oben zu gehen, haben wir unsere übliche Abneigung und Ressourcenart. Also geben Sie uns bitte einen Einsatz. Kubernetes basiert auf der V1-Schemadefinition in der API-Untergruppe Apps. Geben Sie der Bereitstellung selbst einen Namen und einige Labels. Nun sind diese nicht mit den POD-Etiketten unten zu verwechseln. Ok? Aber dann kommen wir zu einigen interessanten Sachen. Wählen Sie eine Übereinstimmungsbeschriftung Das hier ist wie das Etikett, das wir in der YAML-Datei für Dienste gesehen haben, oder? Es heißt also, dass dieses Bereitstellungsobjekt Pods auf dem Cluster mit diesem Label-API Web
verwalten wird. Dann haben wir Repliken gleich eins. Wenn wir dies also an den API-Server senden, wird
es genau einen Pod basierend auf der folgenden Definition planen. Nun, das ist das Skalierungs-Bit, richtig? Und wir werden später darauf zurückkommen. In der Tat, Es ist eigentlich Teil der Selbstheilung als auch. Aber bevor all dieser Strategie-Typ rollt Update. Wenn es also an der Zeit ist, etwas davon hier unten in der Pod-Definition zu aktualisieren, wird
Kubernetes tun, was ein Rolling Update genannt wird. Ich weiß hier viel zu verdauen, oder? Und wird zu jedem Bit der Reihe nach kommen. Also keine Sorge, denken Sie, ich erwarte, dass Sie es jetzt alles in Ordnung bringen, Sie schreiben nicht, wird es zu gegebener Zeit kommen. Moment sind dies die Bereitstellungen hier, die all das gute Zeug
definieren, das uns Selbstheilung,
Updates, all diese Art von Jazz gibt , richtig? Wrapping um einen Pod, der
wiederum Hosting eines einzelnen Containers. Nun, eine Frage, die mir ständig gestellt wird, ist, kann ein Pod mehr als einen Container haben? Und die Antwort ist, ja, auf jeden Fall. Aber das ist ziemlich fortgeschrittener Anwendungsfall, richtig? Wo 101 natürlich. Also schauen wir uns nur den einen Container pro Pod-Modell an. Aber lassen Sie mich einfach richtig sagen, das Multi-Container pro Pod-Modell ist wirklich mächtig und es wird stark von Dingen wie Service-Meshes genutzt. Nun gibt es noch andere Dinge, die es auch nutzen. Aber Sie wissen, welche Servicemetze
gerade ein heißes Thema sind und Sie wissen, wie sehr wir ein gutes Schlagwort lieben. Jedenfalls, schau, ich habe die Akte vor Ort. Wenn du mitgehst, wirst du dich selbst bedürftig. Sie haben also entweder das GitHub-Repo geklont oder den Inhalt von GitHub in eine Datei kopiert und eingefügt. Und dann ist es nur unser treuer Cube CTL appen-Befehl. Und ich weiß, dass ich jetzt wie eine kaputte Platte werde, richtig? Aber das geht an den API-Server, authentifiziert und autorisiert, in ETC
gespeichert, Tag ungeplant auf den Cluster. Also Cube CTL, nur um sicherzustellen, dass es läuft, was es ist, ja. Und dann bekommt ein Cube CTL Pods. Bumm. Da ist es. Ein brandneuer Pod,
der von der Bereitstellung mit all den Superkräften verwaltet wird , die damit einhergehen, oder? Also, wie wir sagen, Selbstheilung, Skalierung ,
Ausführen von Updates, Rollbacks, all das, Güte, ja. In der Tat, alte Eins-zu-Eins-Pod hier, es füllt sich wahrscheinlich ein bisschen minderwertig, aber als würde man neben Tony Stark stehen. - Ja. Wie auch immer, weißt du was, Apropos Superkräfte, als nächstes werden wir etwas Selbstheilung sehen.
14. Selbstheilung: In Ordnung, wir haben ein paar Hülsen laufen. Dieser hier wird von einer Bereitstellung verwaltet. Also ist es alles Tony Stark WAR mit Superkräften wie Selbstheilung und so. Ja. Aber der alte 101 Teil hier, das ist wie ich, ein bisschen wie ein alter Mann mit c Rho Supermächten. Ich meine, ich habe mich kürzlich vom Fußball oder Fußball zurückgezogen, abhängig davon, wo du wohnst. Grundsätzlich, weil meine Knie heutzutage 0 Heilkraft haben. Jedenfalls. Ein Pod, der von einer Bereitstellung verwaltet wird, und der andere nicht. Also, wenn wir das hier zu 101 Pod machen, ist es richtig gegangen? Wenn wir eine Uhr aufkleben und Hülsen hier kriegen. Ok. Es ist nicht weg, aber es gibt ein paar Sekunden zu tun. Es ist fair zu sagen, dass nicht zurückkommen 0 Supermächte. Nun dann, wenn wir uns unsere Bereitstellung hier, die unsere verbleibenden POD verwaltet. Was es hier oben sagt, es ist immer sicher, dass es einen dieser Pod gibt, der auf dem Cluster läuft. Und es könnte ziemlich einfach aussehen, oder? Aber glauben Sie mir, die Maschinen und den Hintergrund, wie alle Uhrenschleifen und all die anderen Sachen. Wer hat Italia? Das ist die geheime Zutat für Superkräfte. Dies gibt unsere verbleibende POD Unbesiegbarkeit. Nun, irgendwie werden wir sowieso sehen. Also, wenn wir versuchen, es mit einem von ihnen zu töten, nehmen Sie Auftauen, Homer dazu. Wir sehen uns die Live-Action wieder an. Oh, was ist das? Schauen Sie rein? Wie zwei Container. Und was ist all diese kündigenden Geschäftsbehörden hatte Superkräfte. Nun, was hier los ist, ist, dass wir gerade den Haufen Hammer getötet haben. Ja. Und wie man es mit dem Hammer erwartet, ist die Kapsel gestorben. Aber was die Einsätze in Lockerbie auf hohem Niveau ein bisschen Haar getan, oder? Aber es hat einen identischen neuen Pod an seiner Stelle erstellt. Der einzige Unterschied ist eigentlich dieses Bit am Ende seines Namens hier. Also kann man jetzt so schreiben, wie wir betrügen. Die Kapsel starb und sie wurde durch eine andere identische ersetzt. Also sind die alten weg und ein neuer Klon, wenn du willst, ist an seiner Stelle. Aber Sie wissen was, aus der Perspektive der Anwendung, ist es kein Betrug. Die Anwendung wird weitergeführt. Ich meine, Ihre Bewerbung stört sich nicht um POD-Namen oder irgendetwas, richtig? Aus der Perspektive der App laufen immer noch Beweise. Und du weißt was, richtig? Dies ist viel besser, wenn hier wie mehrere Replikate laufen und eines stirbt und sofort ersetzt wird. Normalerweise überspringt
die App in dieser Situation nicht. Und jetzt auch, richtig? Dies ist das gleiche, wenn etwas im Cluster bricht, wie ich weiß, dass wir gerade einen manuellen Kill des Teils der Handschrift-Kugel gemacht haben. Angenommen, ein Knoten stirbt im Cluster und es dauert einige Pods damit. Nun, wenn diese Hülsen, Raul Tony sich mit dem Einsatz bestückt hat. Jetzt Panik, richtig? Die verlorenen Hülsen werden ersetzt und die Welt dreht sich ständig, was brillantes Schloss ist, weißt du was? Wir können sogar unseren Browser-Tab hier aktualisieren, ohne die URL zu ändern. Denn was richtig passiert ist, ist das Dienstobjekt, das das gesamte Netzwerk für
die Palladia durchführt, diesen super stabilen Endpunkt anbietet. Ich nehme an, wir könnten auch den Endpunkt Tony Stark nennen. Ja, das wird garantiert nie seine Unbesiegbarkeit ändern, oder? Und es hat immer eine aktuelle Liste von Pods, die zu den Etiketten passen, nach denen es sucht. Und offensichtlich wurde die neue Öffentlichkeit aufgesponnen, die wir gerade dort gesehen haben. Das hat die gleichen Etiketten. Ja, also sind wir alle gut. Und das ist ein Aspekt der Selbstheilung Jahr. Aber das coole Ding, richtig? Das hätte um drei Uhr vormittags passieren können. Und Kubernetes hat es repariert, ohne uns etwas davon aufzuwecken. Aber weißt du was, wir sind weit davon entfernt, als Nächstes zu skalieren.
15. Skalierung: Eine andere Sache, die uns Bereitstellungen geben, ist
die Skalierung dieser Fähigkeit, zu sagen, dass ich mehr oder weniger von einem bestimmten Pod brauche. Eine Sache, die Gus vorhin sagte, vielleicht ist es das Ende des Monats und Bericht, dies zu tun, lasst uns mehr Pods haben, die die Berichtsinfrastruktur unterstützen. Oder vielleicht haben wir ein paar Angebote auf oder so, und wir erwarten einen erhöhten Traffic. Lassen Sie uns also die Bits skalieren, die Browsen und Suchen in den Likes unterstützen. Nun, wenn wir uns ansehen, was wir haben, ja, eine einzelne Bereitstellung namens Eins-zu-Eins-Bereitstellung und es hat ein Replikat. So wie wir es so skalieren, dass wir fünf sagen, um den Einsatz hier zu öffnen und in die reale Welt zu schauen, richtig? Sie werden dies auf die gleiche Weise verwalten, wie Sie Ihren Code hoffentlich verwalten. Also in der Quellenkontrolle oder so, ja, aber du wirst es überprüfen und all den Jazz, ja. Und dann hoffen wir, dass diese Repliken hier bis fünf zählen. Komm her und wir speichern unsere Änderungen. Und dann wenden wir das einfach erneut auf den Cluster an und überprüfen es wieder in die Versionskontrolle, natürlich, ja. Aber es aktualisiert buchstäblich diesen Yammer
, der unsere Quelle der Wahrheit ist, und gibt ihn dann erneut an den API-Server aus, der als neuer gewünschter Zustand von einem Replikat auf fünf
registriert wird . Die Hintergrund-Steuerschleife bemerkt, hey, wir wollen fünf, aber wir haben eigentlich nur einen. Also dreht es sich für mehr. Und da haben wir es fünf Schoten. Jetzt können wir, wenn wir mit dem Cube CTL Skalierungsbefehl skalieren wollen. Aber ich glaube nicht, dass das der Kubernetes-Weg ist. Und ich werde dir sagen, warum, oder? Es so zu tun, ist der unerläßliche Weg, nicht der deklarative Weg. Stellen Sie sich mit mir vor, richtig, dass Sie einen Kubernetes-Cluster mit einer Reihe von Apps verwalten und es gibt einen P1 vor sich. - Ja. Es ist also wie rote Alarmstufe, alle Hände zu Kampfstationen und du schreibst weg und schaust auf Ereignisse
und Protokolle und deine Bosse hängen über deiner Schulter und ihre Bosse ständig am Telefon in seinem Bedlam, richtig. Aber es ist großartig. - Ja. Ich meine, du hast überall einen bezahlt. Sie sind wirklich schwer, Action und Aufregung zu schlagen. Und weißt du was? Sie neigen dazu, eine Tonne zu lernen. Jedenfalls, sieh mal, es geht alles so runter, oder? Du machst Änderungen im laufenden Betrieb zwingend. - Ja. Ich ändere nur Sachen, wie du gehst. Und sagen wir, das Problem und ich erfinde das, richtig, aber sagen wir, das Problem war der Netzwerkport, an dem
Ihre App arbeitet, nicht funktioniert. Wie auch immer, Sie ändern den Port, den Sie on the fly verwenden. Also auf der Befehlszeile, ohne Ihre YAML-Datei auszuchecken,
ohne die Yammer-Datei zu aktualisieren und diese erneut auf den Cluster anzuwenden. Wie auch immer, so ändern Sie den Netzwerk-Port on the fly und es ist Q Feiern, richtig? Sie waren High-fünf die Chefs von neuen Getränken nach Arbeit und inmitten all der Anbetung und allgemeinen verrückt, Sie vergessen, dass Sie den Hafen in Live
ändern wie 9 Tausend oder so, setzen Sie links. Es ist 8080 in Ihrer YAML-Datei. Und der Grund, warum das schlecht ist, oder? Ist, weil das, was auf dem Cluster live ist, nicht mehr mit Ihnen übereinstimmt. Yaml und Kubernetes haben keine Möglichkeit, das zu wissen. Nun, lassen Sie uns die Uhr ein wenig vorwärts wickeln und sagen, es ist eine Woche oder was auch immer später und Sie schieben ein neues Bild in die App. Also, wenn Sie alles normale Prozedur, richtig, weil dies kein P1 mehr ist, so ist das alles kontrolliert. - Ja. Sie checken die YAML aus, Sie aktualisieren die Version des verwendeten Images und schieben die YAML auf den Cluster. Nur. Sie haben nicht bemerkt, dass die Yamaha immer noch den alten Port 8080 sagt, der kaputt ist und nicht mehr funktioniert. Also, wenn Sie es neu bereitstellen, ja, erhalten
Sie ein neues Bild, aber Sie erhalten auch den alten defekten Port zurück. Jetzt ein Versprechen hier. Was ist High-Fiving Jahr oder Kauf Ihrer Getränke diesmal? Machen Sie also eine Imperative Änderungen wie das ist im Allgemeinen nicht zu empfehlen. Wir wissen, was ich waffle. Wir haben jetzt fünf Replikate mit einem Hintergrundbeobachter, der den ganzen Tag auf den Cluster starrt, um
sicherzustellen, dass der gewünschte Zustand unserem tatsächlichen beobachteten Zustand entspricht. Nun ist es natürlich dasselbe, wenn wir die Zahl herunterskalieren,
schreiben, die YAML aktualisieren sie zurück zum API-Server
schieben. Fabelhaft. Nur, weißt du was, es ist alles ein bisschen manuell, nicht wahr? Ich meine, es erfordert, dass ich oder du ein Mensch bist, um die Arbeit zu erledigen. Nun, zum Glück hat Kubernetes automatische Skalierungstechnologien. Der horizontale Pod-Auto-Scaler, der suchen kann, wie beschäftigt Ihre Pods sind und dynamisch nach oben und unten skalieren kann. Und es gibt einen automatischen Cluster-Scaler, der die Anzahl der Knoten in Ihrem Cluster nach oben und unten
skalieren kann . hier dynamisch basierend darauf, ob
genügend Kapazität in der aktuellen Gruppe des Clusters vorhanden ist , um neue Pods in den Likes zu spinnen. Leider liegen diese Themen über den Rahmen dieses 101 Kurses hinaus. Wie auch immer, sperren Sie für jetzt in diesem ich eine Ursache, die Skalierung ist. Kommt hoch. Als Nächstes werden wir die App mit einem Cloud-basierten Load Balancer integrieren. Bringen Sie es an.
16. Cloud: Tut mir Leid. Wenn Sie auf Ihrem Laptop mit Docker-Desktop folgen oder wenn Sie zusammen mit Kubernetes spielen, können
Sie diesem Labor nicht folgen. Dieses Lab funktioniert nur, wenn sich Ihr Cluster in einer Public Cloud oder Magic Sandbox befindet, die in einer Public Cloud ausgeführt wird. Wie auch immer, Köpfe auf der Google Cloud, auf Google Kubernetes Engine. Also bin ich gut, jetzt zu gehen, nicht in der Lage zu sein, mitzuverfolgen. Es tut mir wirklich leid, aber weißt du was? Schauen Sie einfach zu. Ok. Du verstehst es immer noch. Das ist nicht schwer, was wir im Begriff sind zu tun. Wie auch immer, schauen Sie, wir haben eine einfache App bereitgestellt, fünf Replikate hier eines einfachen Webservers. Und wir haben einen Kubernetes-Dienst, der eine stabile Vernetzung für die Replikate bereitstellt. Aber die Art des Dienstes, den wir haben, ist ein Knotenport-Service
, der, wenn wir unsere Gedanken zurückwerfen, uns über einen Namen oder eine IP aus dem Cluster auf Port 8080 auf unsere App zugreifen kann, was alles gut ist. Aber wenn wir von außen zugreifen wollen, dann brauchen wir den Namen oder die öffentliche IP von mindestens einem unserer Knoten. Dann
haben wir mit unserer Konfiguration auf Port 30,001 getroffen und werden hereinkommen. Das ist in Ordnung, richtig. Aber seien wir ehrlich, es ist wirklich ein bisschen Müll. Ich meine, wer will den Überblick über Knotennamen oder IPAs behalten? - Ja. Ein viel glatterer Weg wäre, alle mit einem Load Balancer zu konfrontieren. Und ernsthaft, das zu tun, könnte nicht einfacher sein. In der Tat, es ist mir peinlich, wie einfach es ist. Also diese YAML hier, die wird sehr vertraut aussehen, Es wird diejenigen mit einem Cloud Load Balancer integrieren. So wie auch immer, schauen Sie gleich außerhalb meiner alten API-Version und Art, die wir alle über diese wissen. Geben Sie ihm einen Namen und ein Etikett. Und dann eine Front-End-Konfiguration hier sagt Port 8080 auf was immer wir als Cloud Load Balancer bekommen. Und dann Lastenausgleich aus dem Backend des Dienstes auf 8080 zu jedem Pod mit der API gleich wed label. Also haben wir das alles gesehen, oder? Der einzige wirkliche Unterschied zu dem letzten Dienst, den wir
bereitgestellt haben , ist dieser Load Balancer Typ hier. Wie gesagt, wenn Sie sich auf einer Cloud-Plattform befinden und alle großen AWS Azure,
Google, Digital Ocean, IBM Cloud anwenden , benennen
Sie es direkt, indem Sie hier ein einziges Wort festlegen. Load Balancer, Kubernetes wird weggehen und Ihrer Cloud
reden. Gewohnheitsbereitstellung, ein mit Internet ausgerichteter Load Balancer, der Datenverkehr auf Port
8080 akzeptiert und sicherstellen, dass es Lastausgleich über
alle Pods, die Ihre App auch auf Port 8080 ausführen, wird . Ich meine, wie cool ist das jetzt, die Politik, ich habe nicht zu viel, oder? Ich denke, der Punkt zum Mitnehmen ist, dass
wir mit peinlich geringem Aufwand einen voll verfügbaren,
mit Internet ausgerichteten Load Balancer bekommen , der in unsere App integriert ist. Wieder, ein Freakin, liebe es. Jedenfalls, schau, ich habe die Akte vor Ort. - Ja. heißt, es ist Zeit für unseren alten Freund Cube CTL gelten. Sagen Sie ihm die Akte und weg geht es. Nun, wenn ich hier eine Uhr auf diesen Befehl stecke, sind
wahrscheinlich in weniger als einer Minute ähnlich. Und ich werde das Video bearbeiten, richtig? Also müssen Sie nicht auf den Bildschirm warten, in etwa eine Minute
setzen, diese ausstehenden Wert hier unter der externen IP wird zu einer richtigen gültigen öffentlichen IP wie diese
ändern. Und das können wir auf Port 8080 treffen, wen und wie von Zauberhand, richtig, das ist unsere App. Also alle Web-App, die in einem Container ausgeführt wird, wiederum in einen Pod
eingewickelt, in eine Bereitstellung auf unserem privaten Kubernetes-Cluster
eingewickelt, mit einem Kubernetes-Dienst, der
einen stabilen IPN-Punkt bietet , der mit einem Cloud-nativen Lastenausgleich, richtig? Ich meine, das ist eine Menge gutes Zeug, oder? Wussten Sie was? Es ist so einfach, wir es hier in einer Eins-zu-Eins-Sache sehen. Ich meine, wie ausgezeichnet ist das? Ich denke, Sie werden zustimmen, dass es sehr ausgezeichnet ist. Und du weißt was, richtig? Vergessen wir nicht, dass der Service ständig
beobachtet , um sicherzustellen, dass es die neueste Liste von Pods zu o hat
und Sie wissen, was, es nur Lastausgleich zu gesunden Pods. Und wir kratzen buchstäblich an der Oberfläche. Komm schon. Hoffentlich war das nicht zu laut, wenn man auf Kopfhörern hört. Aber weißt du was, wir sind immer noch nicht fertig. Ich meine, wir fast r, aber nicht ganz. Eine letzte Sache, ein fortlaufendes Update.
17. Updates walzen: Okay, letzte richtige Lektion. Wir haben eine einfache Web-App auf Kubernetes laufen, und wir haben selbst gesehen,
wir werden skalieren und nur, dass wir gesehen haben, dass es eine Verbindung zu einem Internet mit Cloud Load Balancer. Nun, mal sehen, wie wir ein rollendes Update machen können. So wie die Dinge stehen, wenn wir uns die Bereitstellung ansehen, sollten
wir auf den Containern die Image-Version sehen. Wie auch immer, hier oben haben wir fünf Repliken. Also fünf Pods, die einen Container basierend auf diesem Bild ausführen. Aber sagen wir, wir haben
ein aktualisiertes Image erstellt und es hat alle Integrationstests und dergleichen bestanden. Und der letzte Schritt ist es, es in den Cluster zu rollen. Nun, Einsatz, tun Sie das, ohne auch nur schwitzen zu müssen. Und die Art und Weise, wie wir es tun, ist der deklarative Weg. Also gehen wir zurück zum YAML hier und c hier auf den Repliken, wir haben eine Strategie Rolling Update. Nun, eigentlich werde ich diese Zeilen einfügen. Ordnung. Dieser Block, den ich hervorheben möchte, gibt uns eine gewisse Kontrolle darüber, wie das rollende Update passiert. Was wir sagen, ist, wenn wir etwas im Template-Block weiter unten aktualisieren, machen Sie ein rollendes Update. Das bedeutet ein Replikat nach dem anderen. Männer bereit Sekunden hier heißt es, Nach der Aktualisierung jeder Replik, bevor Sie die nächste, warten Sie zehn Sekunden. Vielleicht würdest du in der realen Welt ein paar Minuten sagen oder so. Die Idee besteht jedoch darin, Ihnen eine gewisse Kontrolle zu geben und das Rollout-Jahr einzufügen. Nun, Max nicht verfügbar sagt, während das Update stattfindet, gehen Sie
nie mehr als eins unter das, was wir verlangen. Jetzt. Wir bitten um fünf. Also gehen Sie nie mehr als eins darunter. Also dennoch als für jetzt mit maximal verfügbarem war wie zwei, dann würde Kubernetes erlaubt, während des Updates auf drei zu gehen. Und ebenso für Mac Surge, nie mehr als ein mehr als das, was wir verlangen. Jetzt. Du weißt was, oder? Es gibt viele weitere Optionen einschließlich Tests und Likes, die sicherstellen, dass, nachdem Sie einen Pod aktualisiert haben, es tatsächlich funktioniert. Ja. Aber weißt du was? Zuerst haben wir jetzt einige Rolling-Update-Einstellungen. Und ich denke, wahrscheinlich ist derjenige, der sagen wird, dass
die meisten Auswirkungen haben wird, das 10-Sekunden-Warten nach jedem Update. Aber lasst uns hierher kommen und die Bildversion von 1.Also 0 in zwei ändern. Speichern Sie das. Nun, wenn wir es auf dem API-Server veröffentlichen wird einen neuen gewünschten Zustand von ja haben, fünf Pods. Aber dieses Mal werden alle fünf das 2.0. Bild, die Hintergrund-Versöhnungsschleife,
ausführen wollen . Wir werden feststellen, dass das nicht mit dem übereinstimmt, was sich tatsächlich auf dem Cluster befindet. So wird es Dinge nur die Minuten bereit Sekunden beheben, und die anderen Werte, die wir
erwähnt haben, werden Kontrolle darüber ausüben, wie das Update passiert. Also lasst uns das machen, richtig? Und ich habe hier einen Befehl, der das Update überwacht, das einsatzbereit ist. Und weg gehen wir. Lassen Sie uns das hier laufen. Ok. Schau, ich bin ein, mach weiter und beschleunige das Video im Hintergrund, weil wir diese 10 Sekunden Abkühlung haben. Ja. Und ein Versprechen. Es würde keinen Spaß machen, wenn ich singe, um die Zeit zu füllen. Also ja,
wir können sehen, dass es methodisch durch jede Replik geht. Jetzt. Es tritt hier durch zwei zu einer Zeit, weil max nicht verfügbar und Max Surge sind beide auf 11 plus eins ist zwei gesetzt. Wie auch immer, wenn ich beginne, die Browser-Tab hier zu aktualisieren, sollten
wir sehen, manchmal bekomme ich die aktualisierte Version und manchmal die ältere. Und irgendwann oder fünf Replikate werden auf dem neuesten Stand sein. Ein alles wird bekommen ist die neue Version. Und dass Damen und Herren vier Reihen auf 101 Kurs. Das wird reichen. Jetzt. Ehrlich gesagt, es gibt eine Menge mehr, als scheint es nie zu enden. Kubernetes ist eine riesige Plattform, die sich immer noch entwickelt. Und dann gibt es Dinge, die wir uns angesehen haben, ist stabil und wir können uns auf all das verlassen. Put Kubernetes macht viel mehr und ich werde nicht lügen. Es kann entmutigend sein und die Lernkurve kann hart sein. Wie auch immer, wir haben eine Menge abgedeckt. So bleiben Sie herum für eine schnelle Zusammenfassung der großen Take Home Punkte. Außerdem werde ich Sie auf einige Orte zeigen, die Ihnen helfen werden, auf die nächste Ebene zu bringen.
18. Ein wirklich schnelles Rückschnitt: Na gut, wo haben wir dann angefangen? Ja, wir haben definiert, was eine Cloud-native Microservices-App ist. Es ist nur eine moderne Möglichkeit,
eine nützliche Anwendung aus vielen spezialisierten Teilen zu erstellen , auf die wir lose mit APIs
gekoppelt haben, nur weil sie
Cloud-native genannt werden, bedeutet nicht, dass sie nur für die Cloud sind. In der Tat würde ich sogar so weit gehen, zu sagen, dass ein Grundsatz von Cloud-nativen wahrscheinlich
die Fähigkeit ist , überall zu laufen, einschließlich Ihrer lokalen Rechenzentren. Ich meine, solange du Kubernetes dort leitest, ja. Wie auch immer, wir haben gesagt, dass Kubernetes die de facto-Plattform für die Ausführung von Cloud-nativen Apps ist. Und das Kubernetes ist zwei Dinge. Es ist ein Cluster und es ist ein Anwendungsorchestrator. Der Cluster ist also wie das Substrat oder die Plattform, auf der wir unsere Apps ausgeführt haben. Es besteht aus Meistern, die alle Kubernetes laufen ist intelligent und Logik. Und es hat eine Reihe von Arbeitsknoten, in denen wir unsere Benutzeranwendungen ausführen. Nun, sieh mal, es ist ein unregelmäßiger Welt-Cluster am Ende des Tages. Daher müssen wir über Dinge wie
Verfügbarkeit, Sicherheit und Leistung und all das nachdenken . Güte, ja. Jetzt, auf der Anwendung orchestrieren verschiedene Kubernetes können unsere Anwendungen bereitstellen und verwalten. Für uns haben wir gesagt, dass das bevorzugte Muster das deklarative Muster genannt wird, wo wir definieren, was wir jede YAML-Datei wollen. Und wir werden bei Kubernetes die harte Arbeit für uns erledigen. Die Art und Weise, die funktioniert, ist Kubernetes hält eine Aufzeichnung dessen, was wir wollen, als etwas namens gewünschten Zustand. Und es läuft eine Reihe von beobachteten Loops, die die verschiedenen Aspekte unseres Clusters und unserer Apps
beobachten. Und im Grunde überprüfen sie ständig, dass das, was auf dem Cluster läuft, das ist, was wir wollen. Immer wenn der beobachtete Zustand von diesem gewünschten Zustand abirrt, tut
Kubernetes alles in seiner Macht Stehende, um alles wieder in Einklang mit dem gewünschten Zustand zu bringen. Und was haben wir noch gesagt? Ja, wir haben gesagt, dass wir unsere Anwendungen wie normal schreiben, Docker-Werkzeuge
verwenden, um sie als
Container-Images zu erstellen und dann Kubernetes verwenden, um sie bereitzustellen und auszuführen. Nun, ja, Kubernetes orchestriert containerisierte Anwendung, die nur Techno-Jargon für Anwendungen ist, die innerhalb von Containern ausgeführt werden. Ja, nur Container können nicht direkt über Kubernetes hinaus laufen. Zuerst müssen wir sie als Potts verpacken. Jetzt können wir Schoten mit vielen Dingen noch erweitern, oder? Aber der, den wir uns angeschaut haben, war der Einsatz. Und das gibt Pods Superkräfte, Yeah, wie die Fähigkeit zu verkaufen, zu versagen und zu skalieren und sogar 0 Ausfallzeiten Updates zu tun. Und das waren die. Das ist alles, wofür wir Zeit haben. Aber oh meine Güte, es gibt so viel mehr. Aber es ist eine gute Zeit, um Kubernetes zu lernen. Wenn Sie Bücher von Gott mögen, könnte
jemand Quickstart Kubernetes mögen, ESEA ist ungefähr auf dem Niveau dieses Kurses. Aber wenn Sie bereit sind, auf die nächste Ebene
zu bewegen wird das Kubernetes Buch hier regelmäßig
als Bestseller auf Amazon gelistet und es hat die meisten Sterne Bewertungen von jedem Buch auf Kubernetes. Oh, und es wird jährlich aktualisiert, also ist es immer auf dem neuesten Stand. Jetzt können Sie es als eBook auf Kindle und Leanpub, einem Taschenbuch bei Amazon, erhalten. Es gibt spanische, vereinfachte chinesische und russische Ausgaben und eine Audio-Version, aber das ist nur ein Englisch. Oh, meine Güte. Weißt du was? Es gibt sogar ein klammern auf Tribut Addition. Aber kein Scherz. Die klingonische Ausgabe, es ist nur die Titelseite und das Intro, die die Reste in englischer Sprache aufrufen. Jedenfalls, schauen Sie, die Zeit ist kurz und ich fange an zu waffeln. Fühlen Sie sich frei, sich mit mir zu verbinden. Ich bin ein nicht kostenloser technischer Support sein kann, aber ich bin mehr als bereit, sich zu verbinden und Ihnen zu helfen, Sie erste Schritte zu arbeiten. Sei also nicht schüchtern. Lasst uns sowieso verbinden. Schau, danke, dass du deine Zeit mit mir verbracht hast. Viel Glück mit deiner Karriere. Und wie ich schon sagte: Bleiben Sie in Kontakt.