{"id":82223,"date":"2020-05-20T13:42:34","date_gmt":"2020-05-20T11:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen"},"modified":"2020-05-20T13:42:34","modified_gmt":"2020-05-20T11:42:34","slug":"luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen","title":{"rendered":"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502052\/\">Best Practices for Kubernetes. Creating Small Containers<\/a><\/noindex><\/p>\n<p>As you start creating more and more Kubernetes services, tasks that initially seem simple can become complicated. For instance, developer teams cannot create services or deployments with the same name. If you have thousands of pods, simply listing them will take a lot of time, not to mention ensuring proper management. And that's just the tip of the iceberg.<\/p>\n<p>Let's look at how namespaces help simplify resource management in Kubernetes. So, what exactly is a namespace? A namespace can be thought of as a virtual cluster within your Kubernetes cluster. You can have multiple isolated namespaces within a single Kubernetes cluster. They can truly assist you and your teams with organization, security, and even system performance.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/056d80bf2234c01387c538c6afec3d7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn most Kubernetes distributions, the cluster comes out of the box with a namespace called \"default.\" In reality, there are three namespaces that Kubernetes deals with: default, kube-system, and kube-public. Currently, kube-public is not used very frequently.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/d9746413ec6e62c2623d2a743581f11a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIt\u2019s a good idea to leave the kube namespace alone, especially in a managed system like Google Kubernetes Engine. It uses the \"default\" namespace as a place where your services and applications are created. There's nothing particularly special about it, except that Kubernetes is configured to use it out of the box, and you cannot delete it. It works well for getting started and systems with low performance, but I would not recommend using the default namespace in larger production systems. In such cases, one team of developers could easily overwrite another's code and disrupt another team\u2019s work without even realizing it.<\/p>\n<p>Therefore, you should create several namespaces and use them to segment your services into manageable units. A namespace can be created with a single command. If you want to create a namespace named test, use the command $ kubectl create namespace test, or simply create a YAML file and use it like any other Kubernetes resource.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/5871cbd5328865f883119824952101ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nYou can view all namespaces using the command $ kubectl get namespace. <\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/b3f4ed1ab7340a42fa95b1143f5402ea.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAfter executing it, you will see three built-in namespaces and a new namespace called 'test'. Let's look at a simple YAML file intended to create a pod. You may notice that there is no mention of the namespace.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/2ce8c8e4d9d27df434521fbf51a1dfe9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf you use kubectl to apply this file, it will create a mypod module in the currently active namespace. This will be the default namespace until you change it. There are two ways to tell Kubernetes which namespace you want to create your resource in. The first way is to use the namespace flag when creating the resource. <\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/4fb481cf7be50de28a8dca24feb58810.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe second way is to specify the namespace in the YAML declaration.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/855bc2d101eda09a0e1de07e5e4ac3ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf you specify the namespace in the YAML, the resource will always be created in that namespace. If you try to use a different namespace while using the namespace flag, the command will fail. Now, if you try to find your pod, you won't be able to. <\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/87af52e6edfc0c8ec7aaf3e18d56062e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThis happens because all commands are executed outside the currently active namespace. To locate your pod, you need to use the namespace flag, but this quickly becomes tedious, especially if you're a developer in a team that uses its own namespace and doesn't want to use that flag for every single command. Let's look at how this can be addressed.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/bbafb25178d9332f30ad6e8e78ba783d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOut of the box, your active namespace is called default. If you do not specify the namespace in the resource YAML, all Kubernetes commands will use this active default namespace. Unfortunately, managing the active namespace with kubectl can often be challenging. However, there is a very useful tool called Kubens that simplifies this process significantly. When you run the kubens command, you will see all namespaces with the currently active namespace highlighted. <\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/04499ac4181d9c8d00bb31261f149612.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo switch the active namespace to the test namespace, you simply run the command $ kubens test. If you then run the command $ kubens again, you will see that the new active namespace \u2013 test \u2013 is now highlighted.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/02ad27389cbb914336ce0e3c0bafd8f0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThis means you don't need a namespace flag to see a pod in the test namespace.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/f66617aa3bf77faf42a9fa51ca26c231.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThus, namespaces are hidden from each other but not isolated from one another. A service in one namespace can easily communicate with a service in another namespace, which is often very useful. The ability to communicate between different namespaces means that your developers' service can interact with another dev team's service in a different namespace.<\/p>\n<p>Typically, when your application wants to access a Kubernetes service, you use the built-in DNS service discovery and simply specify the service name to your application. However, you can create a service with the same name in multiple namespaces, which is not allowed. <\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/9172e4571aba3450f9bd50680f4059ac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFortunately, this can be easily worked around by using the fully qualified DNS address. Services in Kubernetes expose their endpoints using a common DNS pattern. It looks something like this:<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/d715f6a7b4780c84edfb39c6ffa9f0be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenerally, you just need the service name, and DNS will automatically resolve the full address. <\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/ce5a32bb83bdda01db5774f69777c9a0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHowever, if you need to access a service in another namespace, just use the service name plus the namespace name:<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/8bc78ea6a348d517d36c612bffc7c30a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor example, if you want to connect to a database service in the test namespace, you can use the address database.test.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/3da4cc954a127d93de6a076773e3c1bf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf you want to connect to a database service in the prod namespace, you use database.prod.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/b9df2b7413a3fb15f06027ed7b2dd0e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf you truly want to isolate and restrict access to a namespace, Kubernetes allows you to do this using Kubernetes Network Policies. I'll discuss this in the next series. <\/p>\n<p>I often get asked how many namespaces should be created and for what purposes? What exactly is a managed data fragment?<\/p>\n<p>If you create too many namespaces, they will simply get in your way. If there are too few, you'll lose all the advantages of such a solution. I think there are four main stages that every company goes through in the process of establishing its organizational structure. Depending on the stage of development your project or company is at, you can adopt the appropriate strategy for creating namespaces.<\/p>\n<p>Imagine that you are part of a small team working on developing 5-10 microservices, and you can easily gather all the developers in one room. In this situation, it makes sense to run all production services in the default namespace. Of course, for greater flexibility, you could use two namespaces \u2014 one for production and one for development. And most likely, you are testing your development on your local machine using something like Minikube. <\/p>\n<p>Suppose the conditions have changed, and now you have a rapidly growing team that is working on more than 10 microservices at the same time. There comes a point when you need to use multiple clusters or namespaces, separately for production and development. You can break the team into several subgroups so that each has its own microservices, and each of these teams could choose its own namespace to facilitate the management of development and software releases.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/981dd083cbaad6ffdb812310e180ce26.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs each team member gains insight into how the system works as a whole, coordinating each change with all the other developers becomes increasingly difficult. Trying to spin up the full stack on your local machine becomes more challenging day by day. <\/p>\n<p>In large companies, developers often do not know who is working on what specifically. Teams communicate through service contracts or use Service Mesh technology, which adds an abstraction layer over the network, similar to the configuration tool Istio. Attempting to run the entire stack locally is practically impossible. I strongly recommend using a continuous delivery (CD) platform like Spinnaker in Kubernetes. Thus, the moment comes when each team certainly needs its own namespace. Each team may also choose several namespaces for the dev and prod environments. <\/p>\n<p>Finally, there are large entrepreneurial companies where one group of developers doesn't even know about the existence of other groups. Such a company might hire external developers who interact through well-documented APIs. Each such group contains several teams and multiple microservices. In this case, it is necessary to utilize all the tools I mentioned earlier.<\/p>\n<p><img decoding=\"async\" alt=\"Best Practices for Kubernetes. Organizing Kubernetes with Namespaces\" src=\"\/wp-content\/uploads\/2020\/05\/6a4b4823c14ced1eafb6393f16067840.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProgrammers should not deploy services manually and should not have access to namespaces that do not concern them. At this stage, it makes sense to have several clusters to reduce the 'blast radius' of poorly configured applications, to simplify billing processes and resource management.<\/p>\n<p>Thus, the proper use of namespaces by your organization allows Kubernetes to be more manageable, controlled, secure, and flexible.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502430\/\">Best Practices for Kubernetes. Checking Kubernetes Health with Readiness and Liveness Tests<\/a><\/noindex><\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"xpnZX3if9Tc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/xpnZX3if9Tc\/hqdefault.jpg\" alt=\"Play video\" 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>A little advertisement \ud83d\ude42<\/h3>\n<p>\nThank you for staying with us. Do you enjoy our articles? Want to see more interesting content? Support us by placing an order or recommending us to your friends, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">cloud VPS for developers starting at $4.99<\/a><\/noindex>, <b>a unique entry-level server alternative that we have created for you:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">The whole truth about VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps from $19 or how to properly share a server?<\/a><\/noindex> (options available with RAID1 and RAID10, up to 24 cores and up to 40GB DDR4).<\/p>\n<p><b>Dell R730xd at half the price in the Equinix Tier IV data center in Amsterdam?<\/b> Only with us <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 100TB starting at $199<\/a><\/noindex> in the Netherlands! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 from $99!<\/b><\/b> Read about how <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">To build a corporate-class infrastructure using Dell R730xd E5-2650 v4 servers costing 9000 euros for peanuts?<\/a><\/noindex><br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u041f\u043e \u043c\u0435\u0440\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 Kubernetes, \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u043e\u0434\u043e\u0432, \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0435\u0442 \u043a\u0443\u0447\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u043e \u0442\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82224,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82223","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=\"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes.\" \/>\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\/luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen\" \/>\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\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f Kubernetes \u0441 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen\" \/>\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-05-20T11:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-20T11:42:34+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 Best Practices. Organizing Kubernetes with Namespaces | ProHoster","description":"Best practices for Kubernetes.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen","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\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f Kubernetes \u0441 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d | ProHoster","og:description":"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-organizacziya-kubernetes-s-prostranstvom-imen","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-05-20T11:42:34+00:00","article:modified_time":"2020-05-20T11:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82223","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:41:29","updated":"2022-09-29 19:27:31","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\/82223","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=82223"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/82223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/82224"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=82223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=82223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=82223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}