{"id":38112,"date":"2019-10-31T22:21:44","date_gmt":"2019-10-31T19:21:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah\/"},"modified":"2019-10-31T22:21:44","modified_gmt":"2019-10-31T19:21:44","slug":"obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah","title":{"rendered":"Kubecost Review for Kubernetes Cost Savings in the Cloud","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kubecost Review for Kubernetes Cost Savings in the Cloud\" src=\"\/wp-content\/uploads\/2019\/09\/410170787ccdee028c1b918561f15ee0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCurrently, more and more companies are migrating their infrastructure from physical servers and private virtual machines to the cloud. This decision is easy to explain: there is no need to worry about hardware, the cluster can be configured in many different ways... and most importantly, existing technologies (like Kubernetes) allow for easy scaling of computing power based on load.<\/p>\n<p>The financial aspect is always important. The tool discussed in this article aims to help reduce budgets when using cloud infrastructure with Kubernetes.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Introduction<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/kubecost.com\/\">Kubecost<\/a><\/noindex> \u2014 a California startup founded by former Google employees, creating a solution for calculating infrastructure costs in cloud services (within a Kubernetes cluster + shared resources), identifying bottlenecks in cluster configurations, and sending corresponding notifications to Slack.<\/p>\n<p>We have clients using Kubernetes in both familiar clouds like AWS and GCP, as well as in the less common Azure for the Linux community \u2014 in general, on all platforms supported by Kubecost. For some of them, we track costs for in-cluster services independently (using a methodology similar to that used by Kubecost) and also monitor infrastructure expenses to optimize them. Therefore, it makes sense that we were interested in the possibility of automating such tasks.<\/p>\n<p>The source code of the main Kubecost module is open under the Open Source license (Apache License 2.0). It can be used freely, and the available features should be sufficient for small projects. However, business is business: the rest of the product is closed and can be accessed through <noindex><a rel=\"nofollow\" href=\"https:\/\/kubecost.com\/pricing\">paid subscriptions<\/a><\/noindex>, which also include commercial support. Additionally, the authors offer a free license for small clusters (1 cluster with up to 10 nodes \u2014 at the time of writing, this limit has expanded to 20 nodes) or a trial period with full capabilities for 1 month.<\/p>\n<h2>How Everything Works<\/h2>\n<p>\nSo, the main part of Kubecost is an application <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubecost\/cost-model\"><b>cost-model<\/b><\/a><\/noindex>, written in Go. The Helm chart describing the entire system is called <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubecost\/cost-analyzer\"><b>cost-analyzer<\/b><\/a><\/noindex> and essentially is an assembly of cost-model with Prometheus, Grafana, and several dashboards.<\/p>\n<p>Generally speaking, the cost model has its own web interface that displays graphs and detailed statistics on expenses in tabular form, as well as, of course, tips for optimizing costs. The dashboards presented in Grafana are an earlier stage of Kubecost\u2019s development and contain largely the same data as the cost model, supplemented by familiar statistics on CPU\/memory\/network\/storage space usage in the cluster and its components.<\/p>\n<p>How does Kubecost work?<\/p>\n<ul>\n<li> The cost model obtains service prices through the APIs of cloud providers.<\/li>\n<li> Next, based on the hardware type of the node and the region, the cost is calculated by nodes.<\/li>\n<li> Based on the cost of node operations, each individual pod receives a cost per hour for CPU usage, memory consumption, and the cost per hour for storing a gigabyte of data\u2014dependent on the node it operated on or the storage class.<\/li>\n<li> From the cost of individual pods, payments are calculated for namespaces, services, Deployments, and StatefulSets.<\/li>\n<li> To calculate statistics, metrics provided by kube-state-metrics and node-exporter are used.<\/li>\n<\/ul>\n<p>\nIt is important to note that Kubecost <b>by default considers only resources available in Kubernetes<\/b>. External databases, GitLab servers, S3 storage, and other services not present in the cluster (even if they are in the same cloud) are not visible to it. However, for GCP and AWS, you can add the keys of your service accounts to calculate everything together.<\/p>\n<h2>Installation<\/h2>\n<p>\nFor Kubecost to function, the following are required:<\/p>\n<ul>\n<li> Kubernetes version 1.8 and above;<\/li>\n<li> kube-state-metrics;<\/li>\n<li> Prometheus;<\/li>\n<li> node-exporter.<\/li>\n<\/ul>\n<p>\nIt turned out that in our clusters all these conditions were already met, so it was sufficient to specify the correct endpoint for access to Prometheus. Nevertheless, the official Helm chart for kubecost contains everything necessary to run on a \"bare\" cluster.<\/p>\n<p>Kubecost can be installed in several ways: <\/p>\n<ol>\n<li> The standard installation method, described in <noindex><a rel=\"nofollow\" href=\"https:\/\/kubecost.com\/install?ref=home\">the instructions<\/a><\/noindex> on the developer's website. You need to <b>add the cost-analyzer Helm repository, after which install the chart<\/b>. You will only need to port forward and adjust the settings to your desired state manually (via kubectl) and\/or using the cost model's web interface.\n<p>We haven't tried this method as we don't use third-party pre-configured setups, but it seems like a good option to \"just try for yourself.\" If you already have some components of the system installed or want more refined adjustments, it\u2019s better to consider the second approach.\n<\/li>\n<li> Essentially use <b><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubecost\/cost-analyzer-helm-chart\">the same chart<\/a><\/noindex>, but configure and install it yourself<\/b> in any convenient way.\n<p>As mentioned, in addition to kubecost itself, this chart contains the Grafana and Prometheus charts, which can also be customized to your liking.<\/p>\n<p>The chart has <code>values.yaml<\/code> for cost-analyzer, allowing you to configure:<\/p>\n<ul>\n<li> the list of cost-analyzer components to be deployed;<\/li>\n<li> your endpoint for Prometheus (if you already have one);<\/li>\n<li> domains and other ingress settings for cost-model and Grafana;<\/li>\n<li> annotations for pods;<\/li>\n<li> the need for persistent storage and its size.<\/li>\n<\/ul>\n<p>\nA complete list of available configuration options with descriptions is available in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubecost\/cost-analyzer-helm-chart\">the documentation<\/a><\/noindex>.<\/p>\n<p>Since kubecost does not restrict access in its basic variant, you'll need to set up basic-auth for the web panel right away.\n<\/li>\n<li> Install <b>just the core system<\/b> \u2014 cost-model. To do this, you must have Prometheus installed in the cluster and specify the corresponding value of its address in the variable <code>prometheusEndpoint<\/code> for Helm. After that, apply <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubecost\/cost-model\/tree\/master\/kubernetes\">a set of YAML configurations<\/a><\/noindex> in the cluster.\n<p>Again, you will have to manually add Ingress with basic-auth. Finally, you\u2019ll need to add a section for collecting metrics from the cost-model in <code>extraScrapeConfigs<\/code> in the Prometheus config:<\/p>\n<pre><code class=\"plaintext\">- job_name: kubecost\n  honor_labels: true\n  scrape_interval: 1m\n  scrape_timeout: 10s\n  metrics_path: \/metrics\n  scheme: http\n  dns_sd_configs:\n  - names:\n    - \n    type: 'A'\n    port: 9003<\/code><\/pre>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>What do we get?<\/h2>\n<p>\nWith a full installation, we have the kubecost web panel and Grafana with a set of dashboards at our disposal.<\/p>\n<p><b>Total cost<\/b>, displayed on the main screen, actually shows the estimated cost of resources for the month. This <i>is a projected<\/i> price reflecting the cost of using the cluster (monthly) at the current level of resource consumption.<\/p>\n<p>This metric is more for analyzing expenses and optimizing them. It\u2019s not very convenient to view total expenses for an abstract July in kubecost; you will need to <b>go to billing<\/b>. However, you can view expenses broken down by namespaces, labels, and pods over 1\/2\/7\/30\/90 days, which billing will never show you.<\/p>\n<p><img decoding=\"async\" alt=\"Kubecost Review for Kubernetes Cost Savings in the Cloud\" src=\"\/wp-content\/uploads\/2019\/09\/45db0df267d17e2814003580d87b4048.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSpeaking of <b>labels<\/b>First, you should go to the settings and set the names of the labels that will be used as additional categories for grouping costs:<\/p>\n<p><img decoding=\"async\" alt=\"Kubecost Review for Kubernetes Cost Savings in the Cloud\" src=\"\/wp-content\/uploads\/2019\/09\/d953f8c6205495e43343e97977431ba6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAny labels can be attached to them\u2014this is convenient if you already have your own labeling system.<\/p>\n<p>You can also change the API endpoint address that the cost model connects to, set the discount size in GCP, and establish your own prices for resources and currency for measurement (this feature surprisingly does not affect Total cost).<\/p>\n<p>Kubecost can display various <b>issues in the cluster<\/b> (and even alert in case of danger). Unfortunately, the option is not configurable, so if you have environments for developers in use, you might constantly see something like this:<\/p>\n<p><img decoding=\"async\" alt=\"Kubecost Review for Kubernetes Cost Savings in the Cloud\" src=\"\/wp-content\/uploads\/2019\/09\/729af727faeb10d1ad0384fb4de121f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAn important tool\u2014 <b>Cluster Savings<\/b>. It measures the activity of pods (resource consumption, including network), and also calculates how much money can be saved and on what.<\/p>\n<p>It may seem that the optimization tips are quite obvious; however, experience shows that there are still details to pay attention to. Specifically, the network activity of pods is monitored (Kubecost suggests focusing on inactive ones), it compares requested and actual memory and CPU usage, as well as CPU used by cluster nodes (suggests collapsing several nodes into one), disk load, and a few dozen other parameters.<\/p>\n<p>As with any topic related to optimization, one should <b>approach resource optimization based on Kubecost data with caution<\/b>. For example, Cluster Savings suggests deleting nodes, claiming it's safe, but does not take into account the presence of node-selectors and taints deployed on them that are not present on other nodes. Moreover, even the product authors in their <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.kubecost.com\/blog\/cost-monitoring\/\">recent article<\/a><\/noindex> (by the way, it may turn out to be quite useful for those interested in the project) recommend against diving headfirst into cost optimization and advise approaching the issue thoughtfully.<\/p>\n<h2>Summary<\/h2>\n<p>\nAfter using Kubecost for a month on a couple of projects, we can conclude that it is an interesting (and also easy to learn and install) tool for analyzing and optimizing costs for cloud provider services used for Kubernetes clusters. The calculations are quite accurate: in our experiments, they matched what the providers actually required.<\/p>\n<p>There are also some downsides: there are minor bugs, and the functionality does not fully meet the specific needs of some projects. However, if you need to quickly understand where the money is going and what can be 'cut' to consistently reduce the cloud services bill by 5-30% (as was the case for us), this is an excellent option.<\/p>\n<h2>P.S.<\/h2>\n<p>\nAlso read in our blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459326\/\">Dailymotion\u2019s Kubernetes Adventure: Building Infrastructure in Clouds + On-Premises<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460877\/\">Kubernetes Success Stories in Production. Part 10: Reddit<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/432748\/\">Kubernetes tips &amp; tricks: about node allocation and loads on web applications<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/466659\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442 \u0441\u0432\u043e\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u0436\u0435\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0432 \u043e\u0431\u043b\u0430\u043a\u0430. \u0422\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c: \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u0436\u0435\u043b\u0435\u0437\u0435, \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043b\u0435\u0433\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432\u2026 \u0430 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 (\u0432\u0440\u043e\u0434\u0435 Kubernetes) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u0430\u0436\u0435\u043d \u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28612,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38112","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=\"\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435.\" \/>\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\/en\/blog\/administrirovanie\/obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\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\u0437\u043e\u0440 Kubecost \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0430 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah\" \/>\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=\"2019-10-31T19:21:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:21:44+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\udd47 Review of Kubecost for cost savings on Kubernetes in the cloud | ProHoster","description":"More and more currently.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\u0437\u043e\u0440 Kubecost \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043d\u0430 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445 | ProHoster","og:description":"\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/obzor-kubecost-dlya-ekonomii-sredstv-na-kubernetes-v-oblakah","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":"2019-10-31T19:21:44+00:00","article:modified_time":"2019-10-31T19:21:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38112","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":"2026-01-23 20:30:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:15:22","updated":"2026-01-23 20:30:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/38112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=38112"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/38112\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/28612"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=38112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=38112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=38112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}