{"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\/es\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","title":{"rendered":"Actualizaci\u00f3n del cl\u00faster de Kubernetes sin tiempo de inactividad","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Actualizaci\u00f3n del cl\u00faster de Kubernetes sin tiempo de inactividad\" src=\"\/wp-content\/uploads\/2020\/02\/53cdba726a58c16679c6443191f28321.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>El proceso de actualizaci\u00f3n para su cl\u00faster de Kubernetes<\/em><\/p>\n<p><\/p>\n<p>En alg\u00fan momento, al utilizar un cl\u00faster de Kubernetes, surge la necesidad de actualizar los nodos en funcionamiento. Esto puede incluir actualizaciones de paquetes, actualizaciones del n\u00facleo o el despliegue de nuevas im\u00e1genes de m\u00e1quinas virtuales. En la terminolog\u00eda de Kubernetes, esto se llama <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#voluntary-and-involuntary-disruptions\">\"Interrupci\u00f3n Voluntaria\"<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Esta publicaci\u00f3n es parte de un ciclo de 4 publicaciones:<\/p>\n<p><\/p>\n<ol>\n<li>Esta publicaci\u00f3n.<\/li>\n<li>Finalizaci\u00f3n correcta de los pods en un cl\u00faster de Kubernetes<\/li>\n<li>Finalizaci\u00f3n diferida del pod al eliminarlo<\/li>\n<li>C\u00f3mo evitar el tiempo de inactividad en el cl\u00faster de Kubernetes utilizando PodDisruptionBudgets<\/li>\n<\/ol>\n<p><\/p>\n<p><em>(Nota del traductor: se espera que las traducciones de los dem\u00e1s art\u00edculos del ciclo lleguen pronto)<\/em><\/p>\n<p><\/p>\n<p>En este art\u00edculo, describiremos todas las herramientas que Kubernetes ofrece para lograr un tiempo de inactividad cero para los nodos en funcionamiento en su cl\u00faster.<\/p>\n<p><\/p>\n<h2 id=\"opredelenie-problemy\">Definici\u00f3n del problema<\/h2>\n<p><\/p>\n<p>Al principio, utilizaremos un enfoque ingenuo, identificando problemas y evaluando los riesgos potenciales de este enfoque, acumulando conocimiento para resolver cada uno de los problemas que encontremos a lo largo de todo el ciclo. Como resultado, obtendremos una configuraci\u00f3n que utiliza hooks del ciclo de vida, readiness probes y presupuestos de disrupci\u00f3n de pods para lograr nuestro tiempo de inactividad cero. <\/p>\n<p><\/p>\n<p>Para comenzar nuestro camino, tomemos un ejemplo concreto. Supongamos que tenemos un cl\u00faster de Kubernetes con dos nodos, en el que est\u00e1 ejecutando una aplicaci\u00f3n con dos pods que est\u00e1n detr\u00e1s de <code>Servicio<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Actualizaci\u00f3n del cl\u00faster de Kubernetes sin tiempo de inactividad\" src=\"\/wp-content\/uploads\/2020\/02\/f1eb999a0a088d7ed5b54c71e9b9ed1e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Empecemos con dos pods de Nginx y un servicio ejecut\u00e1ndose en nuestros dos nodos del cl\u00faster de Kubernetes.<\/em><\/p>\n<p><\/p>\n<p>Queremos actualizar la versi\u00f3n del n\u00facleo de nuestros dos nodos de trabajo en el cl\u00faster. \u00bfC\u00f3mo lo haremos? Una soluci\u00f3n simple ser\u00eda cargar nuevos nodos con la configuraci\u00f3n actualizada y luego apagar los nodos antiguos, al mismo tiempo que se inician los nuevos. Aunque esto funcionar\u00e1, habr\u00e1 varios problemas con este enfoque:<\/p>\n<p><\/p>\n<ul>\n<li>Cuando apagues los nodos antiguos, los pods en ejecuci\u00f3n en ellos tambi\u00e9n se apagar\u00e1n. \u00bfQu\u00e9 sucede si los pods necesitan ser limpiados para una desconexi\u00f3n adecuada? El sistema de virtualizaci\u00f3n que est\u00e9s utilizando puede no esperar a que se complete el proceso de limpieza.<\/li>\n<li>\u00bfQu\u00e9 ocurrir\u00eda si apagas todos los nodos al mismo tiempo? Tendr\u00e1s un tiempo de inactividad considerable mientras los pods se trasladan a los nuevos nodos.<\/li>\n<\/ul>\n<p><\/p>\n<p>Necesitamos una forma adecuada de migrar pods desde nodos antiguos y, al mismo tiempo, debemos asegurarnos de que ninguno de nuestros procesos de trabajo est\u00e9 activo mientras realizamos cambios en el nodo. O cuando hacemos un reemplazo completo del cl\u00faster, como en el ejemplo (es decir, sustituimos las im\u00e1genes de las VM), queremos trasladar aplicaciones en funcionamiento de los nodos antiguos a los nuevos. En ambos casos, queremos evitar la programaci\u00f3n de nuevos pods en los nodos antiguos, y luego expulsar todos los pods en funcionamiento de estos. Para lograr estos objetivos, podemos usar el comando <code>kubectl drain<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"pereraspredelenie-vseh-podov-s-nody\">Redistribuir todos los pods desde el nodo<\/h2>\n<p><\/p>\n<p>La operaci\u00f3n drain permite redistribuir todos los pods desde el nodo. Durante la ejecuci\u00f3n del drain, el nodo se marca como unschedulable (flag <code>NoSchedule<\/code>). Esto evita la aparici\u00f3n de nuevos pods en \u00e9l. Luego, el drain comienza a expulsar los pods del nodo, deteniendo los contenedores que actualmente est\u00e1n en funcionamiento en el nodo enviando una se\u00f1al <code>TERM<\/code> a los contenedores en el pod.<\/p>\n<p><\/p>\n<p>Aunque <code>kubectl drain<\/code> Aunque la operaci\u00f3n de expulsi\u00f3n de pods se maneja bien, hay otros dos factores que pueden causar que la operaci\u00f3n drain falle:<\/p>\n<p><\/p>\n<ul>\n<li>Su aplicaci\u00f3n debe ser capaz de cerrarse correctamente al recibir <code>TERM<\/code> la se\u00f1al. Cuando se expulsan los pods, Kubernetes env\u00eda una se\u00f1al <code>TERM<\/code> a los contenedores y espera a que se detengan durante un tiempo determinado; despu\u00e9s de lo cual, si no se han detenido, los finaliza forzosamente. En cualquier caso, si su contenedor no recibe la se\u00f1al correctamente, a\u00fan puede apagar los pods incorrectamente si est\u00e1n en funcionamiento en ese momento (por ejemplo, si se est\u00e1 ejecutando una transacci\u00f3n en la base de datos).<\/li>\n<li>Pierde todos los pods que contienen su aplicaci\u00f3n. Puede que no est\u00e9 disponible en el momento del inicio de nuevos contenedores en los nuevos nodos o, si sus pods se han desplegado sin controladores, puede que no se reinicien en absoluto. <\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"izbegaem-prostoya\">Evitando el tiempo de inactividad<\/h2>\n<p><\/p>\n<p>Para minimizar el tiempo de inactividad por interrupciones voluntarias, como la operaci\u00f3n drain para un nodo, Kubernetes proporciona las siguientes opciones para gestionar fallos:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod\/#termination-of-pods\">Terminaci\u00f3n suave<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/container-lifecycle-hooks\/\">Ganchos de ciclo de vida<\/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>En las dem\u00e1s partes del ciclo, utilizaremos estas funciones de Kubernetes para mitigar el impacto de la transferencia de pods. Para facilitar el seguimiento de la idea principal, utilizaremos nuestro ejemplo anterior con la siguiente configuraci\u00f3n de recursos:<\/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>Esta configuraci\u00f3n es un ejemplo m\u00ednimo <code>Deployment<\/code>, que gestiona pods de nginx en el cl\u00faster. Adem\u00e1s, la configuraci\u00f3n describe un recurso <code>Servicio<\/code>, que se puede usar para acceder a los pods de nginx en el cl\u00faster.<\/p>\n<p><\/p>\n<p>A lo largo del ciclo, iterativamente ampliaremos esta configuraci\u00f3n para que al final incluya todas las capacidades que Kubernetes ofrece para reducir el tiempo de inactividad.<\/p>\n<p><\/p>\n<p><em>Para obtener una versi\u00f3n completamente integrada y probada de actualizaciones del cl\u00faster de Kubernetes para un tiempo de inactividad cero en AWS y otros recursos, visite <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\">Tambi\u00e9n lee otros art\u00edculos en nuestro 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 y bases de datos<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/480072\/\">Kubernetes: \u00bfpor qu\u00e9 es tan importante configurar la gesti\u00f3n de recursos del sistema?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481992\/\">Tekton Pipeline \u2014 pipelines nativos de Kubernetes<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473578\/\">Compilaci\u00f3n de m\u00f3dulos din\u00e1micos para Nginx<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473014\/\">Introducci\u00f3n a la Autorizaci\u00f3n de Kubernetes de Hashicorp Consul<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/468779\/\">Qu\u00e9 result\u00f3 de la migraci\u00f3n de ClickHouse sin autenticaci\u00f3n a ClickHouse con autenticaci\u00f3n<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47Actualizaci\u00f3n del cl\u00faster de Kubernetes sin tiempo de inactividad | ProHoster","description":"El proceso de actualizaci\u00f3n para su.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/70831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=70831"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/70831\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/70832"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=70831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=70831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=70831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}