{"id":70831,"date":"2020-02-21T14:42:15","date_gmt":"2020-02-21T11:42:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obnovlenie-kubernetes-klastera-bez-prostoya"},"modified":"2020-03-03T16:14:45","modified_gmt":"2020-03-03T13:14:45","slug":"obnovlenie-kubernetes-klastera-bez-prostoya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","title":{"rendered":"Aktualisierung des Kubernetes-Clusters ohne Ausfallzeiten","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Aktualisierung des Kubernetes-Clusters ohne Ausfallzeiten\" src=\"\/wp-content\/uploads\/2020\/02\/53cdba726a58c16679c6443191f28321.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Der Aktualisierungsprozess f\u00fcr Ihr Kubernetes-Cluster<\/em><\/p>\n<p><\/p>\n<p>Es gibt Momente, in denen beim Einsatz eines Kubernetes-Clusters die Notwendigkeit entsteht, die aktiven Knoten zu aktualisieren. Dies kann Updates von Paketen, das Aktualisieren des Kernels oder die Bereitstellung neuer Images von virtuellen Maschinen umfassen. In der Terminologie von Kubernetes wird dies als <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#voluntary-and-involuntary-disruptions\">&quot;Voluntary Disruption&quot;<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dieser Beitrag ist Teil einer Reihe von 4 Beitr\u00e4gen:<\/p>\n<p><\/p>\n<ol>\n<li>Dieser Beitrag.<\/li>\n<li>Ordnungsgem\u00e4\u00dfes Herunterfahren von Pods in einem Kubernetes-Cluster<\/li>\n<li>\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 pod&#8217;\u0430 \u043f\u0440\u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438<\/li>\n<li>Wie man Ausfallzeiten in einem Kubernetes-Cluster mit PodDisruptionBudgets vermeidet<\/li>\n<\/ol>\n<p><\/p>\n<p><em>(Anm. \u00dcb. Die \u00dcbersetzungen der anderen Artikel der Reihe erwarten Sie in K\u00fcrze.)<\/em><\/p>\n<p><\/p>\n<p>In diesem Artikel werden wir alle Werkzeuge beschreiben, die Kubernetes bietet, um eine Ausfallzeit von null f\u00fcr die in Ihrem Cluster aktiven Knoten zu erreichen.<\/p>\n<p><\/p>\n<h2 id=\"opredelenie-problemy\">Problemdefinition<\/h2>\n<p><\/p>\n<p>Zun\u00e4chst werden wir einen naiven Ansatz verwenden, um Probleme zu identifizieren und die potenziellen Risiken dieses Ansatzes zu bewerten und Wissen f\u00fcr die L\u00f6sung jedes Problems zu sammeln, mit dem wir im Verlauf der gesamten Reihe konfrontiert werden. Als Ergebnis erhalten wir eine Konfiguration, die Lifecycle-Hooks, Readiness-Probes und Pod Disruption Budgets zur Erreichung unserer null Ausfallzeit verwendet. <\/p>\n<p><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0443\u0442\u044c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes \u0438\u0437 \u0434\u0432\u0443\u0445 \u043d\u043e\u0434, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f pod&#8217;a\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u0437\u0430 <code>Service<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Aktualisierung des Kubernetes-Clusters ohne Ausfallzeiten\" src=\"\/wp-content\/uploads\/2020\/02\/f1eb999a0a088d7ed5b54c71e9b9ed1e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Wir beginnen mit zwei Pods mit Nginx und einem Service, die auf unseren beiden Knoten des Kubernetes-Clusters laufen.<\/em><\/p>\n<p><\/p>\n<p>Wir m\u00f6chten die Kernelversion der beiden Arbeitsknoten in unserem Cluster aktualisieren. Wie gehen wir dabei vor? Eine einfache L\u00f6sung w\u00e4re, neue Knoten mit aktualisierter Konfiguration zu laden und dann die alten Knoten auszuschalten, w\u00e4hrend die neuen starten. Obwohl das funktionieren w\u00fcrde, gibt es einige Probleme mit diesem Ansatz:<\/p>\n<p><\/p>\n<ul>\n<li>Wenn Sie die alten Knoten ausschalten, werden auch die auf ihnen laufenden Pods heruntergefahren. Was ist, wenn die Pods f\u00fcr ein ordnungsgem\u00e4\u00dfes Abschalten bereinigt werden m\u00fcssen? Das Virtualisierungssystem, das Sie verwenden, wartet m\u00f6glicherweise nicht auf den Abschluss des Bereinigungsprozesses.<\/li>\n<li>Was, wenn Sie alle Knoten gleichzeitig ausschalten? Sie werden betr\u00e4chtliche Ausfallzeiten haben, w\u00e4hrend die Pods auf die neuen Knoten umziehen.<\/li>\n<\/ul>\n<p><\/p>\n<p>Wir ben\u00f6tigen eine M\u00f6glichkeit, Pods korrekt von alten Knoten zu migrieren, und m\u00fcssen dabei sicherstellen, dass keiner unserer Arbeitsabl\u00e4ufe l\u00e4uft, w\u00e4hrend wir \u00c4nderungen an dem Knoten vornehmen. Oder wenn wir den Cluster vollst\u00e4ndig ersetzen, wie im Beispiel (d.h. wir ersetzen die VM-Images), m\u00f6chten wir die aktiven Anwendungen von den alten Knoten auf die neuen \u00fcbertragen. In beiden F\u00e4llen wollen wir verhindern, dass neue Pods auf den alten Knoten geplant werden, und dann alle laufenden Pods von diesen abziehen. Um diese Ziele zu erreichen, k\u00f6nnen wir den Befehl <code>kubectl drain<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"pereraspredelenie-vseh-podov-s-nody\">Das Umverteilen aller Pods von einem Knoten<\/h2>\n<p><\/p>\n<p>Der Befehl drain erm\u00f6glicht es, alle Pods von einem Knoten umzuleiten. W\u00e4hrend des drain-Vorgangs wird der Knoten als unschedulable (Flag <code>NoSchedule<\/code>) markiert. Dies verhindert, dass neue Pods auf ihm erscheinen. Danach beginnt der drain, die Pods vom Knoten abzuziehen, und beendet die Container, die derzeit auf dem Knoten laufen, indem er ein Signal sendet <code>TERM<\/code> an die Container im Pod.<\/p>\n<p><\/p>\n<p>Obwohl <code>kubectl drain<\/code> Der drain wird gut mit dem Abziehen von Pods fertig, es gibt jedoch zwei weitere Faktoren, die bei der Ausf\u00fchrung des drain-Vorgangs zu einem Fehler f\u00fchren k\u00f6nnen:<\/p>\n<p><\/p>\n<ul>\n<li>Ihre Anwendung muss ordnungsgem\u00e4\u00df beendet werden k\u00f6nnen, wenn <code>TERM<\/code> das Signal empfangen wird. Wenn Pods abgezogen werden, sendet Kubernetes ein Signal <code>TERM<\/code> an die Container und wartet eine festgelegte Zeit auf deren Stop, nach der, wenn sie nicht gestoppt wurden, diese gewaltsam beendet werden. In jedem Fall, wenn Ihr Container das Signal nicht korrekt empf\u00e4ngt, k\u00f6nnen Sie die Pods m\u00f6glicherweise falsch herunterfahren, wenn sie gerade in Betrieb sind (zum Beispiel wird eine Transaktion in der DB ausgef\u00fchrt).<\/li>\n<li>Sie verlieren alle Pods, die Ihre Anwendung enthalten. Diese k\u00f6nnte zum Zeitpunkt des Starts neuer Container auf den neuen Knoten nicht verf\u00fcgbar sein, oder, wenn Ihre Pods ohne Controller bereitgestellt werden, k\u00f6nnen sie \u00fcberhaupt nicht neu gestartet werden. <\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"izbegaem-prostoya\">Ausfallzeiten vermeiden<\/h2>\n<p><\/p>\n<p>Um die Ausfallzeiten durch freiwillige St\u00f6rungen, wie durch den drain-Befehl f\u00fcr einen Knoten, zu minimieren, bietet Kubernetes die folgenden Optionen zur Fehlerbehandlung an:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod\/#termination-of-pods\">Sanfte Beendigung<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/container-lifecycle-hooks\/\">Lifecycle-Hooks<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#how-disruption-budgets-work\">PodDisruptionBudgets<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>In den anderen Phasen des Zyklus werden wir die Funktionen von Kubernetes verwenden, um die Auswirkungen der Migration von Pods zu mildern. Um die zentrale Idee leichter nachzuvollziehen, verwenden wir unser obiges Beispiel mit der folgenden Ressourcen-Konfiguration:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n name: nginx-deployment\n labels:\n   app: nginx\nspec:\n replicas: 2\n selector:\n   matchLabels:\n     app: nginx\n template:\n   metadata:\n     labels:\n       app: nginx\n   spec:\n     containers:\n     - name: nginx\n       image: nginx:1.15\n       ports:\n       - containerPort: 80\n---\nkind: Service\napiVersion: v1\nmetadata:\n name: nginx-service\nspec:\n selector:\n   app: nginx\n ports:\n - protocol: TCP\n   targetPort: 80\n   port: 80<\/code><\/pre>\n<p><\/p>\n<p>Diese Konfiguration ist ein minimales Beispiel <code>Deployment<\/code>, das die Pods von nginx im Cluster verwaltet. Zudem beschreibt die Konfiguration eine Ressource <code>Service<\/code>, die zum Zugriff auf die Pods von nginx im Cluster verwendet werden kann.<\/p>\n<p><\/p>\n<p>Im Verlauf des gesamten Zyklus werden wir diese Konfiguration schrittweise erweitern, sodass sie am Ende alle Funktionen enth\u00e4lt, die Kubernetes zur Reduzierung von Ausfallzeiten bietet.<\/p>\n<p><\/p>\n<p><em>Um eine voll implementierte und getestete Version von Kubernetes-Cluster-Updates f\u00fcr null Ausfallzeiten auf AWS und anderen Ressourcen zu erhalten, besuchen Sie <noindex><a rel=\"nofollow\" href=\"https:\/\/gruntwork.io\/\">Gruntwork.io<\/a><\/noindex>.<\/em><\/p>\n<p><\/p>\n<h2 id=\"takzhe-chitayte-drugie-stati-v-nashem-bloge\">Lesen Sie auch andere Artikel in unserem Blog:<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481932\/\">Zero Downtime Deployment und Datenbanken<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/480072\/\">Kubernetes: Warum ist es so wichtig, das Ressourcenmanagement des Systems einzurichten?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481992\/\">Tekton Pipeline - Kubernetes-native Pipelines<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473578\/\">Erstellung dynamischer Module f\u00fcr Nginx<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473014\/\">Einf\u00fchrung in die Kubernetes-Autorisierung von Hashicorp Consul<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/468779\/\">Was das Migrationsverfahren von ClickHouse ohne Authentifizierung auf ClickHouse mit Authentifizierung bewirkt hat<\/a><\/noindex><\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/489164\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u043e\u0434. \u041e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Kubernetes \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &quot;Voluntary Disruption&quot;. \u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0446\u0438\u043a\u043b\u0430 \u0438\u0437 4 \u043f\u043e\u0441\u0442\u043e\u0432: \u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b pod\u2019\u043e\u0432 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":70832,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-70831","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=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e.\" \/>\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\/obnovlenie-kubernetes-klastera-bez-prostoya\" \/>\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\udd47\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya\" \/>\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-02-21T11:42:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:45+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\udd47Kubernetes-Cluster-Update ohne Ausfallzeiten | ProHoster","description":"Der Aktualisierungsprozess f\u00fcr Ihr.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","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\udd47\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f | ProHoster","og:description":"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","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-02-21T11:42:15+00:00","article:modified_time":"2020-03-03T13:14:45+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"70831","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 19:13:22","updated":"2022-09-29 13:06:50","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\/70831","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=70831"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/70831\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/70832"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=70831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=70831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=70831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}