{"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\/fr\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","title":{"rendered":"Mise \u00e0 jour du cluster Kubernetes sans temps d'arr\u00eat","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Mise \u00e0 jour du cluster Kubernetes sans temps d&#039;arr\u00eat\" src=\"\/wp-content\/uploads\/2020\/02\/53cdba726a58c16679c6443191f28321.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Le processus de mise \u00e0 jour de votre cluster Kubernetes<\/em><\/p>\n<p><\/p>\n<p>\u00c0 un moment donn\u00e9, lors de l'utilisation d'un cluster Kubernetes, il devient n\u00e9cessaire de mettre \u00e0 jour les n\u0153uds en fonctionnement. Cela peut inclure des mises \u00e0 jour de paquets, une mise \u00e0 jour du noyau ou le d\u00e9ploiement de nouvelles images de machines virtuelles. Dans la terminologie de Kubernetes, cela s'appelle <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#voluntary-and-involuntary-disruptions\">\"Interruption volontaire\"<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ce post fait partie d'un cycle de 4 articles :<\/p>\n<p><\/p>\n<ol>\n<li>Cet article.<\/li>\n<li>Arr\u00eat correct des pods dans un cluster Kubernetes<\/li>\n<li>Finaliser le pod en attente lors de sa suppression<\/li>\n<li>Comment \u00e9viter les temps d'arr\u00eat dans un cluster Kubernetes \u00e0 l'aide des PodDisruptionBudgets<\/li>\n<\/ol>\n<p><\/p>\n<p><em>(trad. : attendez-vous aux traductions des autres articles du cycle dans un proche avenir)<\/em><\/p>\n<p><\/p>\n<p>Dans cet article, nous allons d\u00e9crire tous les outils que Kubernetes fournit pour atteindre un temps d'arr\u00eat nul pour les n\u0153uds fonctionnant dans votre cluster.<\/p>\n<p><\/p>\n<h2 id=\"opredelenie-problemy\">D\u00e9finir le probl\u00e8me<\/h2>\n<p><\/p>\n<p>Dans un premier temps, nous allons adopter une approche na\u00efve, identifier des probl\u00e8mes et \u00e9valuer les risques potentiels de cette approche tout en accumulant des connaissances pour r\u00e9soudre chaque probl\u00e8me que nous rencontrerons au cours de ce cycle. \u00c0 la fin, nous disposerons d'une configuration utilisant des lifecycle hooks, des readiness probes et des budgets de perturbation de pods pour atteindre notre objectif de temps d'arr\u00eat nul. <\/p>\n<p><\/p>\n<p>Pour commencer notre parcours, prenons un exemple concret. Supposons que nous avons un cluster Kubernetes compos\u00e9 de deux n\u0153uds, sur lequel est d\u00e9ploy\u00e9e une application avec deux pods, qui sont derri\u00e8re <code>Service<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Mise \u00e0 jour du cluster Kubernetes sans temps d&#039;arr\u00eat\" src=\"\/wp-content\/uploads\/2020\/02\/f1eb999a0a088d7ed5b54c71e9b9ed1e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Commen\u00e7ons avec deux pods Nginx et un service ex\u00e9cut\u00e9s sur nos deux n\u0153uds du cluster Kubernetes.<\/em><\/p>\n<p><\/p>\n<p>Nous souhaitons mettre \u00e0 jour la version du noyau des deux n\u0153uds de travail dans notre cluster. Comment allons-nous proc\u00e9der ? Une solution simple serait de d\u00e9marrer de nouveaux n\u0153uds avec une configuration mise \u00e0 jour, puis d'\u00e9teindre les anciens n\u0153uds tout en d\u00e9marrant les nouveaux. Bien que cela fonctionne, il y aura plusieurs probl\u00e8mes avec cette approche :<\/p>\n<p><\/p>\n<ul>\n<li>Lorsque vous \u00e9teignez les anciens n\u0153uds, les pods qui y sont ex\u00e9cut\u00e9s seront \u00e9galement \u00e9teints. Que se passe-t-il si les pods doivent \u00eatre nettoy\u00e9s pour un arr\u00eat correct ? Le syst\u00e8me de virtualisation que vous utilisez peut ne pas attendre la fin du processus de nettoyage.<\/li>\n<li>Que se passe-t-il si vous \u00e9teignez tous les n\u0153uds en m\u00eame temps ? Vous aurez un arr\u00eat significatif pendant que les pods se d\u00e9placent vers les nouveaux n\u0153uds.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nous avons besoin d'un moyen correct pour migrer les pods des anciens n\u0153uds tout en nous assurant qu'aucun de nos processus de travail n'est en cours pendant que nous apportons des modifications aux n\u0153uds. Ou lorsque nous effectuons un remplacement complet du cluster, comme dans l'exemple (c'est-\u00e0-dire que nous rempla\u00e7ons les images des machines virtuelles), nous voulons transf\u00e9rer les applications en cours des anciens n\u0153uds vers les nouveaux. Dans les deux cas, nous voulons emp\u00eacher la planification de nouveaux pods sur les anciens n\u0153uds, puis \u00e9vacuer tous les pods en cours de ceux-ci. Pour atteindre ces objectifs, nous pouvons utiliser la commande <code>kubectl drain<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"pereraspredelenie-vseh-podov-s-nody\">Redistribution de tous les pods depuis le n\u0153ud<\/h2>\n<p><\/p>\n<p>L'op\u00e9ration drain permet de redistribuer tous les pods depuis le n\u0153ud. Au cours de l'ex\u00e9cution du drain, le n\u0153ud est marqu\u00e9 comme non planifiable (indicateur <code>NoSchedule<\/code>). Cela emp\u00eache l'apparition de nouveaux pods sur celui-ci. Ensuite, le drain commence \u00e0 \u00e9vacuer les pods du n\u0153ud, terminant les conteneurs qui sont actuellement en cours d'ex\u00e9cution sur le n\u0153ud en envoyant le signal <code>TERM<\/code> aux conteneurs dans le pod.<\/p>\n<p><\/p>\n<p>Bien que <code>kubectl drain<\/code> Bien que cela fonctionne parfaitement pour \u00e9vacuer les pods, il y a encore deux facteurs qui peuvent causer un \u00e9chec lors de l'ex\u00e9cution de l'op\u00e9ration de drainage :<\/p>\n<p><\/p>\n<ul>\n<li>Votre application doit pouvoir se terminer correctement lors de la r\u00e9ception <code>TERM<\/code> du signal. Lorsque les pods sont \u00e9vacu\u00e9s, Kubernetes envoie un signal aux conteneurs et attend leur arr\u00eat pendant un certain temps, apr\u00e8s quoi, s'ils ne se sont pas arr\u00eat\u00e9s, les termine de force. Dans tous les cas, si votre conteneur ne r\u00e9agit pas correctement au signal, vous risquez de fermer les pods de mani\u00e8re incorrecte s'ils sont actuellement actifs (par exemple, s'il y a une transaction en cours dans la base de donn\u00e9es). <code>TERM<\/code> Vous perdez tous les pods contenant votre application. Elle peut \u00eatre inaccessible au moment du d\u00e9marrage de nouveaux conteneurs sur les nouveaux n\u0153uds ou, si vos pods sont d\u00e9ploy\u00e9s sans contr\u00f4leurs, ils peuvent ne pas red\u00e9marrer du tout.<\/li>\n<li>\u00c9viter les temps d'arr\u00eat <\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"izbegaem-prostoya\">Pour minimiser le temps d'arr\u00eat caus\u00e9 par une interruption volontaire, comme lors de l'op\u00e9ration de drainage d'un n\u0153ud, Kubernetes propose les options suivantes pour g\u00e9rer les pannes :<\/h2>\n<p><\/p>\n<p>R\u00e9siliation en douceur<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod\/#termination-of-pods\">Hooks de cycle de vie<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/container-lifecycle-hooks\/\">Budgets de perturbation de pods<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#how-disruption-budgets-work\">Dans les autres parties du cycle, nous utiliserons ces fonctionnalit\u00e9s de Kubernetes pour att\u00e9nuer les cons\u00e9quences du transfert des pods. Pour faciliter le suivi de l'id\u00e9e principale, nous utiliserons notre exemple ci-dessus avec la configuration des ressources suivante :<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Dans les autres parties du cycle, nous utiliserons les donn\u00e9es de cette fonction Kubernetes pour att\u00e9nuer les cons\u00e9quences du d\u00e9placement des pods. Pour faciliter la compr\u00e9hension de l'id\u00e9e principale, nous prendrons comme exemple la configuration des ressources suivante :<\/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>Cette configuration est un exemple minimal. <code>D\u00e9ploiement<\/code>, qui g\u00e8re les pods nginx dans le cluster. De plus, la configuration d\u00e9crit une ressource <code>Service<\/code>, qui peut \u00eatre utilis\u00e9e pour acc\u00e9der aux pods nginx dans le cluster.<\/p>\n<p><\/p>\n<p>Tout au long du cycle, nous allons it\u00e9rativement \u00e9tendre cette configuration pour qu'\u00e0 la fin, elle comprenne toutes les fonctionnalit\u00e9s offertes par Kubernetes afin de r\u00e9duire le temps d'arr\u00eat.<\/p>\n<p><\/p>\n<p><em>Pour obtenir une version enti\u00e8rement d\u00e9ploy\u00e9e et test\u00e9e des mises \u00e0 jour de clustere Kubernetes sans temps d'arr\u00eat sur AWS et d'autres ressources, visitez <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\">Lisez aussi d'autres articles sur notre blog :<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481932\/\">D\u00e9ploiement sans arr\u00eat et bases de donn\u00e9es<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/480072\/\">Kubernetes : pourquoi est-il si important de configurer la gestion des ressources syst\u00e8me ?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481992\/\">Tekton Pipeline \u2014 pipelines natifs Kubernetes<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473578\/\">Assemblage de modules dynamiques pour Nginx<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473014\/\">Introduction \u00e0 l'autorisation Kubernetes de Hashicorp Consul<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/468779\/\">Ce que la migration de ClickHouse sans autorisation \u00e0 ClickHouse avec autorisation a entra\u00een\u00e9<\/a><\/noindex><\/li>\n<\/ul>\n<p>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Mise \u00e0 jour de Kubernetes sans temps d'arr\u00eat | ProHoster","description":"Processus de mise \u00e0 jour pour le v\u00f4tre.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/70831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=70831"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/70831\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/70832"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=70831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=70831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=70831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}