{"id":83787,"date":"2020-06-03T07:42:26","date_gmt":"2020-06-03T05:42:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2"},"modified":"2020-06-03T07:42:26","modified_gmt":"2020-06-03T05:42:26","slug":"devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","title":{"rendered":"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kubernetes ist ein hervorragendes Werkzeug zum Starten von Docker-Containern in einer clusterbasierten Produktionsumgebung. Es gibt jedoch Aufgaben, die Kubernetes nicht bew\u00e4ltigen kann. Bei h\u00e4ufigen Bereitstellungen in der Produktionsumgebung ben\u00f6tigen wir ein vollst\u00e4ndig automatisiertes Blue\/Green-Deployment, um Ausfallzeiten in diesem Prozess zu vermeiden, bei dem auch externe HTTP-Anfragen bearbeitet und SSL-Entladungen durchgef\u00fchrt werden m\u00fcssen. Dies erfordert die Integration mit einem Lastenausgleich, wie zum Beispiel ha-proxy. Eine weitere Herausforderung ist das halbautomatische Skalieren des Kubernetes-Clusters in einer Cloud-Umgebung, beispielsweise das teilweises Reduzieren des Clusters zu Nachtzeiten.<\/p>\n<p>Obwohl Kubernetes diese Funktionen nicht \u201eout of the box\u201c bietet, stellt es eine API zur Verf\u00fcgung, die f\u00fcr die L\u00f6sung solcher Aufgaben genutzt werden kann. Werkzeuge f\u00fcr automatisierte Blue\/Green-Bereitstellungen und das Skalieren des Kubernetes-Clusters wurden im Rahmen des Cloud RTI-Projekts entwickelt, das auf Open-Source basiert.<\/p>\n<p>In diesem Artikel, einer Video-Transkription, wird erkl\u00e4rt, wie man Kubernetes zusammen mit anderen Open-Source-Komponenten f\u00fcr eine produktionsbereite Umgebung einrichtet, die ohne Ausfallzeiten in der Produktion den Code aus einem git commit aufnimmt.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/43a4ba56526a91b6f3d1fb16c159cc1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504666\/\">DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung der Bereitstellung. Teil 1<\/a><\/noindex><\/p>\n<p>Nachdem Sie also Zugriff auf Ihre Anwendungen aus der Au\u00dfenwelt haben, k\u00f6nnen Sie mit der vollst\u00e4ndigen Automatisierung beginnen, d.h. sie auf den Stand zu bringen, bei dem ein git commit durchgef\u00fchrt werden kann, und sicherzustellen, dass dieser git commit in der Produktion endet. Nat\u00fcrlich m\u00f6chten wir bei der Durchf\u00fchrung dieser Schritte, insbesondere beim Deployment, keine Ausfallzeiten erleben. Daher beginnt jede Automatisierung in Kubernetes mit der API. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/aa470c1562e49d98a164e0485196426e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes ist nicht das Werkzeug, das man \u201edirectly out of the box\u201c produktiv nutzen kann. Nat\u00fcrlich k\u00f6nnen Sie das tun, kubectl verwenden usw., aber die API ist dennoch das interessanteste und n\u00fctzlichste an dieser Plattform. Wenn Sie die API als Funktionsb\u00fcndel nutzen, k\u00f6nnen Sie praktisch auf alles zugreifen, was Sie in Kubernetes tun m\u00f6chten. Auch kubectl selbst nutzt die REST API. <\/p>\n<p>Dies ist ein REST-API, sodass Sie f\u00fcr die Arbeit mit diesem API beliebige Programmiersprachen und Werkzeuge verwenden k\u00f6nnen. Benutzerdefinierte Bibliotheken erleichtern Ihnen jedoch das Leben erheblich. Mein Team hat zwei solche Bibliotheken geschrieben: eine f\u00fcr Java \/ OSGi und eine f\u00fcr Go. Letztere wird nicht h\u00e4ufig verwendet, aber in jedem Fall stehen Ihnen diese n\u00fctzlichen Tools zur Verf\u00fcgung. Sie sind Teil eines teilweise lizenzierten Open-Source-Projekts. Es gibt viele solcher Bibliotheken f\u00fcr verschiedene Sprachen, sodass Sie die am besten geeigneten ausw\u00e4hlen k\u00f6nnen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/808865e4cda6023c6775ec9e581fc46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBevor Sie mit der Automatisierung der Bereitstellung beginnen, m\u00fcssen Sie sicherstellen, dass dieser Prozess nicht unterbrochen wird. Zum Beispiel f\u00fchrt unser Team die Produktionsbereitstellung mitten am Tag durch, wenn die Nutzer die Anwendungen am meisten nutzen, daher ist es sehr wichtig, Verz\u00f6gerungen in diesem Prozess zu vermeiden. Um Ausfallzeiten zu vermeiden, gibt es zwei Methoden: Blue\/Green-Deployment oder Rolling Update. Im letzteren Fall, wenn Sie 5 Replikate der Anwendung haben, werden sie nacheinander aktualisiert. Diese Methode funktioniert gut, ist jedoch nicht geeignet, wenn w\u00e4hrend der Bereitstellung verschiedene Versionen der Anwendung gleichzeitig ausgef\u00fchrt werden. In diesem Fall k\u00f6nnen Sie die Benutzeroberfl\u00e4che aktualisieren, w\u00e4hrend das Backend mit der alten Version arbeitet, was zu einem Ausfall der Anwendung f\u00fchrt. Daher ist das Arbeiten unter solchen Bedingungen aus programmiertechnischer Sicht ziemlich schwierig. <\/p>\n<p>Das ist einer der Gr\u00fcnde, warum wir es vorziehen, Blue\/Green-Deployment f\u00fcr die Automatisierung der Bereitstellung unserer Anwendungen zu verwenden. Bei dieser Methode m\u00fcssen Sie sicherstellen, dass zu einem bestimmten Zeitpunkt nur eine Version der Anwendung aktiv ist. <\/p>\n<p>Der Blue\/Green-Deployment-Mechanismus funktioniert folgenderma\u00dfen. Wir erhalten den Datenverkehr f\u00fcr unsere Anwendungen \u00fcber ha-proxy, der ihn an die laufenden Replikate der Anwendung derselben Version weiterleitet. <\/p>\n<p>Wenn ein neues Deployment erfolgt, verwenden wir Deployer, dem neue Komponenten bereitgestellt werden, und er f\u00fchrt das Deployment der neuen Version durch. Das Deployment der neuen Version der Anwendung bedeutet, dass ein neuer Satz an Replikaten \u201ehochgefahren\u201c wird, nachdem diese Replikate der neuen Version in einem separaten, neuen Pod gestartet werden. Ha-proxy wei\u00df jedoch nichts dar\u00fcber und leitet bisher keinen Arbeitsaufwand an sie weiter.<\/p>\n<p>Deshalb ist es zun\u00e4chst notwendig, die Funktionsf\u00e4higkeit der neuen Versionen durch Health Checking zu \u00fcberpr\u00fcfen, um sicherzustellen, dass die Replikate bereit sind, die Last zu bedienen.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/6134f89567ac3627197883b2f4c768d4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle Deployment-Komponenten m\u00fcssen irgendeine Form von Health Check unterst\u00fctzen. Dies kann eine sehr einfache HTTP-Pr\u00fcfung sein, bei der Sie einen Statuscode 200 erhalten, oder eine tiefere Pr\u00fcfung, bei der Sie die Verbindung der Replikate zur Datenbank und anderen Diensten \u00fcberpr\u00fcfen, die Stabilit\u00e4t der Verbindungen der dynamischen Umgebung, und ob alles richtig gestartet und funktioniert. Dieser Prozess kann ziemlich komplex sein. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/fdc537599187b32ab97bc00970283e1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNachdem das System die Funktionsf\u00e4higkeit aller aktualisierten Replikate sichergestellt hat, wird Deployer die Konfiguration aktualisieren und das richtige confd \u00fcbergeben, das ha-proxy neu konfiguriert. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/099240482096c2ac4aafe7e803409511.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nErst danach wird der Verkehr zu dem Pod mit den Replikaten der neuen Version geleitet, w\u00e4hrend der alte Pod verschwindet. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/f656b3a3adfc27e782e5d9785b8b615e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieser Mechanismus ist kein spezifisches Merkmal von Kubernetes. Das Konzept des Blue\/Green Deployments existiert schon eine geraume Zeit und hat immer einen Lastenausgleich verwendet. Zuerst leiten Sie den gesamten Verkehr zur alten Version der Anwendung, und nach dem Update wechseln Sie vollst\u00e4ndig zur neuen Version. Dieses Prinzip wird nicht nur in Kubernetes verwendet.<\/p>\n<p>Jetzt m\u00f6chte ich Ihnen das neue Deployment-Komponente \u2013 Deployer \u2013 vorstellen, das die Funktionsf\u00e4higkeit \u00fcberpr\u00fcft, das Proxy neu konfiguriert und so weiter. Dies ist ein Konzept, das sich nicht auf die Au\u00dfenwelt bezieht und innerhalb von Kubernetes existiert. Ich werde Ihnen zeigen, wie Sie Ihr eigenes Deployer-Konzept mit Open-Source-Tools erstellen k\u00f6nnen. <\/p>\n<p>Das Erste, was der Deployer macht, ist die Erstellung eines Replication Controller (RC) mit der Kubernetes-API. Diese API erstellt Pods und Dienste f\u00fcr die weitere Bereitstellung, d.h. sie erstellt einen v\u00f6llig neuen Cluster f\u00fcr unsere Anwendungen. Sobald der RC sicherstellt, dass die Replikate gestartet wurden, f\u00fchrt er einen Health-Check durch. F\u00fcr dies wird im Deployer der Befehl GET \/health verwendet. Dadurch werden die entsprechenden Pr\u00fcfkomponenten gestartet und alle Elemente \u00fcberpr\u00fcft, die den Betrieb des Clusters gew\u00e4hrleisten. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/f2ef0232e17bc69f0b70ea9eabc2f456.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSobald alle Pods \u00fcber ihren \u00abGesundheitszustand\u00bb berichtet haben, erstellt der Deployer ein neues Konfigurationselement \u2013 das verteilte Speicher etcd, das innerhalb von Kubernetes verwendet wird, einschlie\u00dflich zur Speicherung der Konfiguration des Load Balancers. Wir schreiben Daten in etcd, und ein kleines Tool namens confd \u00fcberwacht etcd auf neue Daten. <\/p>\n<p>Wenn es \u00c4nderungen an der urspr\u00fcnglichen Konfiguration entdeckt, generiert es eine neue Einstellungsdatei und \u00fcbergibt diese an ha-proxy. In diesem Fall wird ha-proxy ohne Verlust von Verbindungen neu gestartet und leitet die Last an neue Dienste weiter, die den Betrieb der neuen Version unserer Anwendungen gew\u00e4hrleisten. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/bef1536c2b8dee6b0da710fc6c6fda99.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie Sie sehen, gibt es trotz der Vielzahl von Komponenten nichts Kompliziertes. Sie m\u00fcssen nur mehr Aufmerksamkeit der API und etcd schenken. Ich m\u00f6chte Ihnen von dem Open-Source-Deployer erz\u00e4hlen, den wir selbst verwenden \u2013 dem Amdatu Kubernetes Deployer.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/34124e093d2e16fcbb80fd112c7d223f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDies ist ein Tool zur Orchestrierung von Kubernetes-Bereitstellungen, das folgende Funktionen bietet: <\/p>\n<ul>\n<li>Blue\/Green Deployment;<\/li>\n<li>Konfiguration eines externen Load Balancers;<\/li>\n<li>Verwaltung von Deploymentsbeschreibungen;<\/li>\n<li>Verwaltung der tats\u00e4chlichen Bereitstellung;<\/li>\n<li>Health Checks w\u00e4hrend der Bereitstellung;<\/li>\n<li>Einspeisung von Umgebungsvariablen in die Pods.<\/li>\n<\/ul>\n<p>\nDieser Deployer ist auf der Kubernetes-API aufgebaut und stellt eine REST-API zur Verwaltung von Beschreibungen und Bereitstellungen sowie eine Websocket-API f\u00fcr Streaming-Protokolle w\u00e4hrend der Bereitstellung bereit.<\/p>\n<p>Er speichert die Konfigurationsdaten des Load Balancers in etcd, sodass Sie ha-proxy nicht unbedingt mit \u00abOut of the Box\u00bb-Unterst\u00fctzung verwenden m\u00fcssen, sondern problemlos Ihre eigene Load-Balancer-Konfigurationsdatei nutzen k\u00f6nnen. Amdatu Deployer ist in Go geschrieben, genau wie Kubernetes selbst, und lizenziert unter Apache.<\/p>\n<p>Vor der Verwendung dieser Version des Deployers habe ich den folgenden Deployment-Descriptor verwendet, in dem die ben\u00f6tigten Parameter angegeben sind. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/14e9ecca6ad772a43afcf95a4950fad8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEiner der wichtigen Parameter dieses Codes ist die Aktivierung des Flags \u201euseHealthCheck\u201c. Wir m\u00fcssen angeben, dass w\u00e4hrend des Deployments eine Funktionspr\u00fcfung durchgef\u00fchrt werden muss. Dieser Parameter kann deaktiviert werden, wenn im Deployment Container von Drittanbietern verwendet werden, die nicht \u00fcberpr\u00fcft werden m\u00fcssen. In diesem Descriptor sind auch die Anzahl der Replikate und die URL des Frontends angegeben, die f\u00fcr ha-proxy erforderlich ist. Am Ende wird das Flag der Pod-Spezifikation \u201epodspec\u201c angegeben, das sich an Kubernetes wendet, um Informationen zur Portkonfiguration, zum Image usw. zu erhalten. Dies ist ein recht einfacher Descriptor im JSON-Format. <\/p>\n<p>Ein weiteres Werkzeug, das Teil des Open-Source-Projekts Amdatu ist, ist Deploymentctl. Es verf\u00fcgt \u00fcber eine Benutzeroberfl\u00e4che (UI) zur Konfiguration des Deployments, speichert die Deployment-Historie und enth\u00e4lt Webhooks f\u00fcr R\u00fcckrufe durch Drittbenutzer und Entwickler. Sie k\u00f6nnen die UI nicht verwenden, da der Amdatu Deployer selbst eine REST-API ist, aber diese Schnittstelle kann Ihnen das Deployment erheblich erleichtern, ohne dass eine API verwendet werden muss. Deploymentctl ist in OSGi\/Vertx unter Verwendung von Angular 2 geschrieben. <\/p>\n<p>Jetzt werde ich das oben Gesagte auf dem Bildschirm demonstrieren, indem ich eine vorab erstellte Aufnahme verwende, damit Sie nicht warten m\u00fcssen. Wir werden eine einfache Anwendung in Go bereitstellen. Machen Sie sich keine Sorgen, wenn Sie vorher noch nie mit Go zu tun hatten, dies ist eine sehr einfache Anwendung, also sollte Ihnen alles klar sein. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/ab61ada396143e980d73a0bb8ff95076.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier erstellen wir einen HTTP-Server, der nur auf \/health antwortet, sodass diese Anwendung lediglich die Funktionspr\u00fcfung \u00fcberpr\u00fcft und nichts weiter. Wenn die Pr\u00fcfung erfolgreich ist, wird die unten angezeigte JSON-Struktur aktiviert. Sie enth\u00e4lt die Version der Anwendung, die vom Deployer bereitgestellt wird, die Nachricht, die Sie oben in der Datei sehen, und den boolean Datentyp \u2013 ob unsere Anwendung funktionsf\u00e4hig ist oder nicht.<\/p>\n<p>Mit der letzten Zeile habe ich etwas geschummelt, da ich am oberen Rand der Datei einen festen boolean Wert platziert habe, der mir sp\u00e4ter hilft, sogar eine \u201enicht funktionsf\u00e4hige\u201c Anwendung bereitzustellen. Damit werden wir uns sp\u00e4ter befassen. <\/p>\n<p>Lass uns anfangen. Zuerst \u00fcberpr\u00fcfen wir, ob es laufende Pods gibt, indem wir den Befehl ~ kubectl get pods verwenden, und wenn wir keine Antwort von der Frontend-URL erhalten, stellen wir fest, dass derzeit keine Deployments durchgef\u00fchrt werden. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/4da1ae467993d6e60ec539ae5ff136ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAuf dem Bildschirm sehen Sie die von mir erw\u00e4hnte Benutzeroberfl\u00e4che Deploymentctl, in der die Bereitstellungsparameter festgelegt werden: Namespace, Anwendungsname, Bereitstellungsversion, Anzahl der Replikate, Frontend-URL, Containername, Image, Ressourcengrenzen, Portnummer f\u00fcr den Health Check usw. Die Ressourcengrenzen sind sehr wichtig, da sie die maximal m\u00f6gliche Nutzung von Hardware erm\u00f6glichen. Hier k\u00f6nnen Sie auch das Bereitstellungsprotokoll ansehen.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/edf6a02b336f1abce61f0a323edeee9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn wir jetzt den Befehl ~ kubectl get pods wiederholen, k\u00f6nnen wir sehen, dass das System f\u00fcr 20 Sekunden \u201eeinfriert\u201c, w\u00e4hrend Ha-Proxy neu konfiguriert wird. Danach wird der Pod gestartet, und unsere Replikat ist im Bereitstellungsprotokoll sichtbar. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/c6c8f6335e00d3a9cfcf4d4792ecf795.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch habe die 20-sek\u00fcndige Wartezeit aus dem Video herausgeschnitten, und jetzt sehen Sie auf dem Bildschirm, dass die erste Version der Anwendung bereitgestellt wurde. All dies wurde nur mithilfe der Benutzeroberfl\u00e4che durchgef\u00fchrt. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/d21fa9ad71e22b2bb9efdfc7bc9c8771.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJetzt versuchen wir die zweite Version. Dazu \u00e4ndere ich die Nachricht der Anwendung von \u201eHello, Kubernetes!\u201c in \u201eHello, Deployer!\u201c. Das System erstellt dieses Image und speichert es im Docker-Registry. Danach klicken wir einfach erneut auf die Schaltfl\u00e4che \u201eDeploy\u201c im Fenster Deploymentctl. Dabei wird automatisch das Bereitstellungsprotokoll gestartet, genau wie es beim Bereitstellen der ersten Version der Anwendung der Fall war. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/e4ef784649fd18b1580d2562b318ac0f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Befehl ~ kubectl get pods zeigt, dass derzeit 2 Versionen der Anwendung ausgef\u00fchrt werden, die Frontend-URL jedoch anzeigt, dass weiterhin Version 1 aktiv ist. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/1d4a9c91f836007325a2a2c833da8eff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Lastenausgleich wartet, bis der Health Check durchgef\u00fchrt wurde, bevor er den Datenverkehr auf die neue Version umleitet. Nach 20 Sekunden wechseln wir zu curl und sehen, dass jetzt die Version 2 der Anwendung bereitgestellt wurde und die erste entfernt wurde. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/e123618251e9fcb1c14829772634b6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas war die Bereitstellung einer \u201egesunden\u201c Anwendung. Lassen Sie uns sehen, was passiert, wenn ich f\u00fcr die neue Version der Anwendung den Parameter Healthy von true auf false \u00e4ndere, also versuche, eine ungesunde Anwendung bereitzustellen, die den Leistungstest nicht bestanden hat. Dies kann geschehen, wenn in der Entwicklungsphase Fehler in der Konfiguration aufgetreten sind und die Anwendung in diesem Zustand in die Produktion geschickt wurde. <\/p>\n<p>Wie Sie sehen, durchl\u00e4uft das Deployment alle oben genannten Phasen, und ~ kubectl get pods zeigt an, dass beide Pods gestartet wurden. Im Gegensatz zum vorherigen Deployment zeigt das Protokoll jedoch einen Timeout-Status an. Das bedeutet, dass die neue Version der Anwendung aufgrund fehlgeschlagener Health-Checks nicht bereitgestellt werden kann. Daher sehen Sie, dass das System zur Nutzung der alten Version der Anwendung zur\u00fcckgekehrt ist, w\u00e4hrend die neue Version einfach gel\u00f6scht wurde. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/4542761328603596704f21cef4c9d4a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Vorteil dabei ist, dass selbst wenn Sie eine gro\u00dfe Anzahl von gleichzeitigen Anfragen an die Anwendung haben, diese den Ausfall w\u00e4hrend des Deployment-Vorgangs nicht bemerken werden. Wenn Sie diese Anwendung mit dem Gatling-Framework testen, das die maximal m\u00f6gliche Anzahl an Anfragen sendet, sind keine dieser Anfragen fehlgeschlagen. Das bedeutet, dass unsere Nutzer die Versionen in Echtzeit nicht einmal bemerken werden. Scheitert das Deployment, l\u00e4uft die Arbeit mit der alten Version weiter; ist es erfolgreich, wechseln die Nutzer zur neuen Version. <\/p>\n<p>Es gibt nur einen Grund, der zu einem Fehlschlag f\u00fchren kann: Wenn der Health-Check erfolgreich war, die Anwendung jedoch abst\u00fcrzt, sobald die Arbeitslast eintrifft, dann tritt der Kollaps nur nach Abschluss des Deployments auf. In diesem Fall m\u00fcssen Sie manuell auf die alte Version zur\u00fcckkehren. So haben wir er\u00f6rtert, wie Kubernetes mit daf\u00fcr vorgesehenen Open-Source-Tools verwendet werden kann. Der Deployment-Vorgang wird erheblich einfacher, wenn Sie diese Tools in Ihre Build\/Deploy-Pipelines integrieren. Dabei k\u00f6nnen Sie sowohl die Benutzeroberfl\u00e4che als auch komplett automatisierte Prozesse nutzen, beispielsweise durch einen Commit zum Master. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/43b638be9d334c6c4f8e9f4fc00ce2f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnser Build-Server erstellt ein Docker-Image und l\u00e4dt es in Docker Hub oder ein anderes von Ihnen verwendetes Repository hoch. Docker Hub unterst\u00fctzt Webhooks, sodass wir das Remote-Deployment \u00fcber Deployer wie oben gezeigt ausl\u00f6sen k\u00f6nnen. Dadurch kann das Deployment der Anwendung in eine potenzielle Produktionsumgebung vollst\u00e4ndig automatisiert werden. <\/p>\n<p>Kommen wir zur n\u00e4chsten Thematik \u2013 das Skalieren des Kubernetes-Clusters. Ich m\u00f6chte darauf hinweisen, dass der Befehl kubectl ein Skalierungsbefehl ist. Damit kann die Anzahl der Replikate im vorhandenen Cluster einfach erh\u00f6ht werden. In der Praxis wollen wir jedoch normalerweise die Anzahl der Nodes und nicht der Pods erh\u00f6hen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/890f436b4bc52c81f5db5b35e64e7e18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDabei kann es tags\u00fcber notwendig sein, die Anzahl zu erh\u00f6hen, w\u00e4hrend man in der Nacht, um die Kosten f\u00fcr die Amazon-Dienste zu senken, die Anzahl der laufenden Anwendungsinstanzen verringern m\u00f6chte. Das bedeutet nicht, dass es genug ist, nur die Anzahl der Pods zu skalieren, da man auch dann f\u00fcr einen inaktiven Node bei Amazon bezahlen muss. Das hei\u00dft, neben dem Skalieren der Pods m\u00fcssen wir auch die Anzahl der verwendeten Maschinen skalieren. <\/p>\n<p>Das kann zu Schwierigkeiten f\u00fchren, denn unabh\u00e4ngig davon, ob wir Amazon oder einen anderen Cloud-Dienst verwenden, wei\u00df Kubernetes nichts \u00fcber die Anzahl der verwendeten Maschinen. Es fehlt ein Werkzeug, das es erm\u00f6glicht, das System auf der Ebene der Nodes zu skalieren. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/2f00b19f1cb665d8e7bd896fa419554c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDaher m\u00fcssen wir uns sowohl um die Nodes als auch um die Pods k\u00fcmmern. Wir k\u00f6nnen das Starten neuer Nodes einfach \u00fcber die AWS-API und die Auto-Scaling-Gruppe f\u00fcr die Anpassung der Anzahl der Arbeitsknoten in Kubernetes skalieren. Au\u00dferdem kann cloud-init oder ein \u00e4hnliches Skript verwendet werden, um Nodes im Kubernetes-Cluster zu registrieren. <\/p>\n<p>Ein neues Ger\u00e4t wird in einer Scaling-Gruppe gestartet, registriert sich als Node, wird im Master-Register eingetragen und beginnt seine Arbeit. Danach kann die Anzahl der Replikate erh\u00f6ht werden, um die neu entstandenen Nodes zu nutzen. Eine Reduzierung des Ma\u00dfstabs erfordert mehr Aufwand, da sichergestellt werden muss, dass dieser Schritt nicht zur Zerst\u00f6rung bereits laufender Anwendungen f\u00fchrt, nachdem die \"unn\u00f6tigen\" Maschinen abgeschaltet wurden. Um ein solches Szenario zu vermeiden, m\u00fcssen die Nodes in den Status \"unschedulable\" versetzt werden. Das bedeutet, dass der Scheduler bei der Planung von DaemonSet-Pods diese Nodes ignoriert. Der Scheduler wird nichts von diesen Servern l\u00f6schen, aber auch keine neuen Container dort starten. Der n\u00e4chste Schritt besteht im Draining des Knoten, das hei\u00dft der Verschiebung der laufenden Pods auf eine andere Maschine oder andere Nodes mit ausreichender Kapazit\u00e4t. Nachdem sichergestellt ist, dass auf diesen Nodes keine Container mehr laufen, k\u00f6nnen sie aus Kubernetes entfernt werden. Danach existieren sie f\u00fcr Kubernetes einfach nicht mehr. Anschlie\u00dfend muss die AWS-API verwendet werden, um die nicht ben\u00f6tigten Nodes oder Maschinen abzuschalten. <br \/>\nSie k\u00f6nnen Amdatu Scalerd verwenden \u2013 ein weiteres Open-Source-Tool f\u00fcr Skalierung, \u00e4hnlich der AWS-API. Es bietet eine CLI zum Hinzuf\u00fcgen oder Entfernen von Nodes im Cluster. Ein interessantes Merkmal ist die M\u00f6glichkeit, den Scheduler mittels der folgenden JSON-Datei zu konfigurieren. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/f70c7c722cacb4792c316e9f80a7500a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer dargestellte Code reduziert die Kapazit\u00e4t des Clusters w\u00e4hrend der Nacht um die H\u00e4lfte. Dabei wird sowohl die Anzahl der vorhandenen Replikate als auch die gew\u00fcnschte Kapazit\u00e4t des Amazon-Clusters konfiguriert. Die Verwendung dieses Schedulers verringert automatisch die Anzahl der Nodes nachts und erh\u00f6ht sie am Morgen, was hilft, die Kosten f\u00fcr die Nutzung solcher Cloud-Dienste wie Amazon zu sparen. Diese Funktion ist nicht in Kubernetes integriert, aber die Nutzung von Scalerd erm\u00f6glicht es Ihnen, diese Plattform nach Belieben zu skalieren. <\/p>\n<p>Ich m\u00f6chte Ihre Aufmerksamkeit darauf lenken, dass viele Leute mir sagen: \u201eDas ist alles gut und sch\u00f6n, aber was ist mit meiner Datenbank, die sich normalerweise im statischen Zustand befindet?\u201c Wie kann man so etwas in einer dynamischen Umgebung wie Kubernetes umsetzen? Meiner Ansicht nach sollten Sie es nicht versuchen, die Funktionsweise einer Datenbank in Kubernetes zu organisieren. Technisch ist das m\u00f6glich, und es gibt Anleitungen im Internet dazu, jedoch wird dies Ihr Leben erheblich erschweren. <\/p>\n<p>Ja, in Kubernetes gibt es das Konzept von persistenten Speichern, und Sie k\u00f6nnen versuchen, solche Datenbanken wie Mongo oder MySQL zu betreiben, aber das ist eine ziemlich aufwendige Aufgabe. Das liegt daran, dass Datenbanken nicht vollst\u00e4ndig auf die Interaktion mit einer dynamischen Umgebung ausgelegt sind. Die meisten Datenbanken erfordern eine erhebliche Konfiguration, einschlie\u00dflich manueller Cluster-Einstellungen, und m\u00f6gen keine automatische Skalierung und \u00e4hnliche Dinge. <br \/>\nDeshalb sollten Sie es sich nicht komplizieren, indem Sie versuchen, eine Datenbank in Kubernetes zu betreiben. Organisieren Sie deren Betrieb auf traditionelle Weise mithilfe bekannter Dienste und geben Sie Kubernetes einfach die M\u00f6glichkeit, diese zu nutzen.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/129e8d403f42b7aa6fb022b386955e9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbschlie\u00dfend m\u00f6chte ich Sie mit der Cloud RTI Plattform auf Basis von Kubernetes vertrautmachen, an der mein Team arbeitet. Sie bietet zentrales Logging, \u00dcberwachung von Anwendungen und Clustern und viele andere n\u00fctzliche Funktionen, die Ihnen von Nutzen sein werden. Dabei kommen verschiedene Open-Source-Tools zum Einsatz, wie Grafana zur Visualisierung der \u00dcberwachung.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/a0e79033dbc0a2683e3567934c9ba014.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung von Deployments. Teil 2\" src=\"\/wp-content\/uploads\/2020\/06\/2b1b7ba139053fc492c7ad25e96f362f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs stellte sich die Frage, warum man mit Kubernetes einen Load Balancer wie ha-proxy verwenden sollte. Eine gute Frage, denn derzeit gibt es zwei Ebenen der Lastverteilung. Kubernetes-Dienste befinden sich nach wie vor auf virtuellen IP-Adressen. Sie k\u00f6nnen diese nicht f\u00fcr die Ports externer Hostmaschinen verwenden, da sich die Adresse \u00e4ndert, wenn Amazon seinen Cloud-Host \u00fcberlastet. Deshalb platzieren wir ha-proxy vor den Diensten \u2013 um eine statischere Struktur f\u00fcr den unterbrechungsfreien Verkehrsfluss mit Kubernetes zu schaffen. <\/p>\n<p>Eine weitere gute Frage ist, wie man bei einem Blue\/Green Deployment auf \u00c4nderungen des Datenbankschemas achten kann. Unabh\u00e4ngig davon, ob Kubernetes verwendet wird, ist das \u00c4ndern eines Datenbankschemas eine komplexe Aufgabe. Sie m\u00fcssen sicherstellen, dass das alte und neue Schema kompatibel sind, bevor Sie die Datenbank aktualisieren und anschlie\u00dfend die Anwendungen selbst. Sie k\u00f6nnen ein \"Hot Swapping\" der Datenbank durchf\u00fchren und danach die Anwendungen aktualisieren. Ich kenne Personen, die einen v\u00f6llig neuen Datenbankcluster mit einem neuen Schema geladen haben. Das ist eine Option, falls Sie eine schemaloose Datenbank wie Mongo haben, aber in jedem Fall ist es keine einfache Aufgabe. Wenn es keine weiteren Fragen gibt, danke f\u00fcr Ihre Aufmerksamkeit!<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"-Ci4vd4rh4M\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/-Ci4vd4rh4M\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Ein wenig Werbung \ud83d\ude42<\/h3>\n<p>\nDanke, dass Sie bei uns bleiben. Gefallen Ihnen unsere Artikel? M\u00f6chten Sie mehr interessante Inhalte sehen? Unterst\u00fctzen Sie uns, indem Sie eine Bestellung aufgeben oder uns Freunden empfehlen, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">Cloud-VPS f\u00fcr Entwickler ab 4,99 $<\/a><\/noindex>, <b>ein einzigartiges \u00c4quivalent zu Einsteigerservern, das wir f\u00fcr Sie entwickelt haben:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Die ganze Wahrheit \u00fcber VPS (KVM) E5-2697 v3 (6 Kerne) 10GB DDR4 480GB SSD 1Gbps ab 19 $ oder wie man einen Server richtig teilt?<\/a><\/noindex> (es sind Optionen mit RAID1 und RAID10 bis zu 24 Kernen und bis zu 40GB DDR4 verf\u00fcgbar).<\/p>\n<p><b>Dell R730xd ist im Equinix Tier IV Rechenzentrum in Amsterdam doppelt so g\u00fcnstig?<\/b> Nur bei uns <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB ab $199<\/a><\/noindex> in den Niederlanden! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 ab $99!<\/b><\/b> Lesen Sie, wie <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">man eine Unternehmensinfrastruktur der Klasse C mit Dell R730xd E5-2650 v4-Servern f\u00fcr 9000 Euro im Preis-Leistungs-Verh\u00e4ltnis aufbaut?<\/a><\/noindex><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504672\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-03T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-03T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Autoskalierung und Automatisierung der Bereitstellung. Teil 2 | ProHoster","description":"Kubernetes ist ein hervorragendes Werkzeug zum Ausf\u00fchren von Docker-Containern in einer clusterisierten Produktionsumgebung. Es gibt jedoch Aufgaben, die Kubernetes nicht l\u00f6sen kann.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-03T05:42:26+00:00","article:modified_time":"2020-06-03T05:42:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83787","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:11:01","updated":"2022-09-28 11:45:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=83787"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/83788"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=83787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=83787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=83787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}