{"id":34825,"date":"2019-10-31T22:00:35","date_gmt":"2019-10-31T19:00:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\/"},"modified":"2019-10-31T22:00:35","modified_gmt":"2019-10-31T19:00:35","slug":"kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","title":{"rendered":"S\u00e5dan forbinder du Kubernetes-klynger i forskellige datacentre","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"S\u00e5dan forbinder du Kubernetes-klynger i forskellige datacentre\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Velkommen til en serie af korte vejledninger om Kubernetes.<\/strong> Dette er en regelm\u00e6ssig kolonne med de mest interessante sp\u00f8rgsm\u00e5l, vi modtager online og p\u00e5 vores tr\u00e6ninger. Besvaret af en Kubernetes-ekspert.<\/p>\n<p><\/p>\n<blockquote><p>Dagens ekspert er Daniele Polencic (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/danielepolencic\">Daniele Polencic<\/a><\/noindex>). Daniele arbejder som instrukt\u00f8r og softwareudvikler hos <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Hvis du vil have svar p\u00e5 dit sp\u00f8rgsm\u00e5l i det n\u00e6ste indl\u00e6g, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">kan du kontakte os via e-mail<\/a><\/noindex> eller p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/learnk8s\">Twitter: @learnk8s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Gik du glip af de tidligere indl\u00e6g? <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/visualise-dependencies-kubernetes\">Find dem her<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kak-soedinit-klastery-kubernetes-v-raznyh-data-centrah\">Hvordan forbinder man Kubernetes-klynger i forskellige datacentre?<\/h3>\n<p><\/p>\n<blockquote><p><strong>Kort fortalt<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kommer Kubefed v2 snart<\/a><\/noindex>, og jeg anbefaler ogs\u00e5 at l\u00e6se om <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">projektet multi-cluster-scheduler<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ofte bliver infrastrukturen replikeret og distribueret p\u00e5 tv\u00e6rs af forskellige regioner, is\u00e6r i kontrollerede milj\u00f8er.<\/p><\/blockquote>\n<p><strong>Hvis \u00e9n region er utilg\u00e6ngelig, omdirigeres trafikken til en anden for at undg\u00e5 nedetid.<\/strong><\/p>\n<p><\/p>\n<p>Med Kubernetes kan du bruge en lignende strategi og fordele arbejdsbelastninger p\u00e5 tv\u00e6rs af forskellige regioner.<\/p>\n<p><\/p>\n<p>Du kan have en eller flere klynger pr. team, region, milj\u00f8 eller en kombination af disse elementer.<\/p>\n<p><\/p>\n<p>Dine klynger kan v\u00e6re placeret i forskellige cloud-tjenester og lokalt.<\/p>\n<p><\/p>\n<p><em>Men hvordan planl\u00e6gger man infrastrukturen til en s\u00e5dan geografisk spredning?<br \/>\nSkal man skabe en stor klynge p\u00e5 tv\u00e6rs af flere cloud-milj\u00f8er med et samlet netv\u00e6rk?<br \/>\nEller skal man oprette mange sm\u00e5 klynger og finde en m\u00e5de at kontrollere og synkronisere dem p\u00e5?<\/em><\/p>\n<p><\/p>\n<h3 id=\"odin-rukovodyaschiy-klaster\">En ledende klynge<\/h3>\n<p><\/p>\n<p><em>At oprette en klynge p\u00e5 et samlet netv\u00e6rk er ikke s\u00e5 nemt.<\/em><\/p>\n<p><\/p>\n<p>Forestil dig, at der sker en uheld, og forbindelsen mellem segmenterne i klyngen er tabt.<\/p>\n<p><\/p>\n<p>Hvis du har \u00e9n masterserver, vil halvdelen af ressourcerne ikke kunne modtage nye kommandoer, fordi de ikke kan oprette forbindelse til masteren.<\/p>\n<p><\/p>\n<p>Og p\u00e5 samme tid har du gamle routing-tabeller (<code>kube-proxy<\/code> kan ikke hente nye) og ingen ekstra pods (kubelet kan ikke anmode om opdateringer).<\/p>\n<p><\/p>\n<p>Det bliver endnu v\u00e6rre; hvis Kubernetes ikke ser en node, markerer den den som tabt og fordeler de manglende pods til de eksisterende noder.<\/p>\n<p><\/p>\n<p><strong>Resultatet er, at du har dobbelt s\u00e5 mange pods.<\/strong><\/p>\n<p><\/p>\n<p>Hvis du opretter \u00e9n masterserver for hver region, vil der v\u00e6re problemer med consensus-algoritmen i etcd-databasen.<em>bem. red. \u2014 Faktisk skal et etcd-database ikke n\u00f8dvendigvis v\u00e6re p\u00e5 masterserverne. Den kan k\u00f8re p\u00e5 en separat gruppe servere i en region. Men s\u00e5 f\u00e5r man ogs\u00e5 et punkt for klyngefejl. Men det er hurtigt.<\/em>)<\/p>\n<p><\/p>\n<p>etcd bruger <noindex><a rel=\"nofollow\" href=\"http:\/\/thesecretlivesofdata.com\/raft\/\">raft-algoritmen<\/a><\/noindex>, for at blive enige om v\u00e6rdien, f\u00f8r den skrives til disk.<br \/>\nDet vil sige, at de fleste instanser skal opn\u00e5 konsensus, f\u00f8r tilstanden kan skrives til etcd.<\/p>\n<p><\/p>\n<p>Hvis forsinkelsen mellem etcd-instanserne pludselig stiger, som i tilf\u00e6ldet med tre etcd-instanser i forskellige regioner, tager det lang tid at blive enige om v\u00e6rdien og skrive den til disk.<br \/>\nDette p\u00e5virker ogs\u00e5 Kubernetes-controllere.<\/p>\n<p><\/p>\n<p>Controller-manageren har brug for mere tid til at registrere \u00e6ndringen og skrive svaret til databasen.<\/p>\n<p><\/p>\n<p>Og eftersom der ikke kun er \u00e9n controller, men flere, <strong>giver det en k\u00e6dereaktion, og hele klyngen begynder at arbejde meget langsomt.<\/strong>.<\/p>\n<p><\/p>\n<p>etcd er s\u00e5 f\u00f8lsom over for forsinkelse, at <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/etcd\/docs\/latest\/faq.html#deployment\">det i den officielle dokumentation anbefales at bruge SSD i stedet for almindelige harddiske.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Der findes i \u00f8jeblikket ikke gode eksempler p\u00e5 et stort netv\u00e6rk for \u00e9n klynge.<\/strong><\/p>\n<p><\/p>\n<p>Generelt fors\u00f8ger udviklerf\u00e6llesskabet og SIG-cluster-gruppen at finde ud af, hvordan man orkestrerer klynger, p\u00e5 samme m\u00e5de som Kubernetes orkestrerer containere.<\/p>\n<p><\/p>\n<h3 id=\"variant-1-federaciya-klasterov-s-kubefed\">Mulighed 1: klyngefederation med kubefed.<\/h3>\n<p><\/p>\n<p>Det officielle svar fra SIG-cluster er, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, den nye version af den originale klient og kube federation-operator.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>For f\u00f8rste gang fors\u00f8gte man at administrere en samling klynger som \u00e9n enhed ved hj\u00e6lp af v\u00e6rkt\u00f8jet kube federation.<\/p>\n<p><\/p>\n<p>Starten var god, men til slut blev kube federation ikke popul\u00e6r, fordi den ikke underst\u00f8ttede alle ressourcer.<\/p>\n<p><\/p>\n<p>Den underst\u00f8ttede sammenflettede distributionsmetoder og tjenester, men for eksempel ikke StatefulSets.<br \/>\nOg desuden blev konfigurationen af federation overf\u00f8rt i form af annotationer, hvilket ikke var s\u00e6rligt fleksibelt.<\/p>\n<p><\/p>\n<p><em>Forestil dig, hvordan man kan beskrive opdeling af replikaer for hver klynge i federation ved hj\u00e6lp af kun annotationer.<\/em><\/p>\n<p><\/p>\n<p><strong>Det blev en fuldst\u00e6ndig rod.<\/strong><\/p>\n<p><\/p>\n<p>SIG-cluster har lavet et stort stykke arbejde efter kubefed v1 og besluttede at tage en anden tilgang til problemet.<\/p>\n<p><\/p>\n<p><strong>I stedet for annotationer besluttede de at udgive en controller, der installeres p\u00e5 klyngerne. Den kan konfigureres med brugerdefinerede ressourceoplysninger (Custom Resource Definition, CRD).<\/strong><\/p>\n<p><\/p>\n<p>For each resource that will be part of the federation, you have a custom CRD definition consisting of three sections:<\/p>\n<p><\/p>\n<ul>\n<li>standard resource definition, such as deployment;<\/li>\n<li>section <code>placement<\/code>, where you define how the resource will be distributed in the federation;<\/li>\n<li>section <code>override<\/code>, where for a specific resource you can override the weight and parameters from placement.<\/li>\n<\/ul>\n<p><\/p>\n<p>Here is an example of a combined deployment with placement and override sections.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: types.federation.k8s.io\/v1alpha1\nkind: FederatedDeployment\nmetadata:\n  name: test-deployment\n  namespace: test-namespace\nspec:\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      replicas: 3\n      selector:\n        matchLabels:\n          app: nginx\n      template:\n        metadata:\n          labels:\n            app: nginx\n        spec:\n          containers:\n            - image: nginx\n              name: nginx\n  placement:\n    clusterNames:\n      - cluster2\n      - cluster1\n  overrides:\n    - clusterName: cluster2\n      clusterOverrides:\n        - path: spec.replicas\n          value: 5<\/code><\/pre>\n<p><\/p>\n<p>As you can see, the deployment is distributed across two clusters: <code>cluster1<\/code> og <code>cluster2<\/code>.<\/p>\n<p><\/p>\n<p>The first cluster supplies three replicas, while the second has a value of 5 set.<\/p>\n<p><\/p>\n<p>If you need more control over the number of replicas, kubefed2 provides a new object called ReplicaSchedulingPreference, where replicas can be distributed by weight:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: scheduling.federation.k8s.io\/v1alpha1\nkind: ReplicaSchedulingPreference\nmetadata:\n  name: test-deployment\n  namespace: test-ns\nspec:\n  targetKind: FederatedDeployment\n  totalReplicas: 9\n  clusters:\n    A:\n      weight: 1\n    B:\n      weight: 2<\/code><\/pre>\n<p><\/p>\n<p>The CRD structure and API are still not quite ready, and active work is being done in the official project repository.<\/p>\n<p><\/p>\n<p><strong>Keep track of kubefed2, but remember that it is not yet suitable for production environments.<\/strong><\/p>\n<p><\/p>\n<p>Learn more about kubefed2 from <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/12\/12\/kubernetes-federation-evolution\/\">the official article about kubefed2<\/a><\/noindex> in the Kubernetes blog and in the <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">official kubefed project repository.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-2-obedinenie-klasterov-v-stile-bookingcom\">Option 2: merging clusters in the style of Booking.com<\/h3>\n<p><\/p>\n<p>The developers of Booking.com did not work on kubefed v2, but they came up with Shipper \u2014 an operator for deployment across multiple clusters, in multiple regions and in multiple clouds.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> Somewhat similar to kubefed2.<\/p>\n<p><\/p>\n<p>Both tools allow configuring a deployment strategy across multiple clusters (which clusters are used and how many replicas they have).<\/p>\n<p><\/p>\n<p>Men <strong>The task of Shipper is to reduce the risk of errors during deployment.<\/strong><\/p>\n<p><\/p>\n<p>In Shipper, you can define a series of steps that describe the division of replicas between the previous and current deployments and the volume of incoming traffic.<\/p>\n<p><\/p>\n<p>When you send a resource to a cluster, the Shipper controller gradually deploys this change across all the merged clusters.<\/p>\n<p><\/p>\n<p><em>Moreover, Shipper is very limited.<\/em><\/p>\n<p><\/p>\n<p>For eksempel, <strong>it accepts Helm charts as input.<\/strong> og ikke underst\u00f8tter vanilla-ressourcer.<br \/>\nGenerelt fungerer Shipper p\u00e5 f\u00f8lgende m\u00e5de.<\/p>\n<p><\/p>\n<p>I stedet for standardlevering skal du oprette en applikationsressource, der inkluderer et Helm-diagram:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: shipper.booking.com\/v1alpha1\nkind: Application\nmetadata:\n  name: super-server\nspec:\n  revisionHistoryLimit: 3\n  template:\n    chart:\n      name: nginx\n      repoUrl: https:\/\/storage.googleapis.com\/shipper-demo\n      version: 0.0.1\n    clusterRequirements:\n      regions:\n        - name: local\n    strategy:\n      steps:\n        - capacity:\n            contender: 1\n            incumbent: 100\n          name: staging\n          traffic:\n            contender: 0\n            incumbent: 100\n        - capacity:\n            contender: 100\n            incumbent: 0\n          name: full on\n          traffic:\n            contender: 100\n            incumbent: 0\n    values:\n      replicaCount: 3<\/code><\/pre>\n<p><\/p>\n<p><strong>Shipper er en god mulighed for at administrere flere klynger, men dens t\u00e6tte integration med Helm g\u00f8r det kun besv\u00e6rligt.<\/strong><\/p>\n<p><\/p>\n<p><em>Hvad nu hvis vi alle skifter fra Helm til <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/05\/29\/introducing-kustomize-template-free-configuration-customization-for-kubernetes\/\">kustomize<\/a><\/noindex> eller <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deepmind\/kapitan\">kapitan<\/a><\/noindex>?<\/em><\/p>\n<p><\/p>\n<p>L\u00e6r mere om Shipper og dets filosofi i <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/booking-com-infrastructure\/introducing-shipper-daf9244e3882\">denne officielle pressemeddelelse<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Hvis du vil dykke ned i koden, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">kan du bes\u00f8ge det officielle projektrepository<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Mulighed 3: &#171;magisk&#187; sammenf\u00f8ring af klynger<\/h3>\n<p><\/p>\n<p>Kubefed v2 og Shipper arbejder med federation af klynger, hvilket giver klynger nye ressourcer gennem brugerdefinerede ressourcebeskrivelser.<\/p>\n<p><\/p>\n<p><em>Men hvad hvis du ikke \u00f8nsker at omskrive alle leverancer, StatefulSets, DaemonSets osv. for at fusionere?<\/em><\/p>\n<p><\/p>\n<p><em>Hvordan inkluderer man en eksisterende klynge i en federation uden at \u00e6ndre YAML?<\/em><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">multi-cluster-scheduler er et projekt fra Admirality<\/a><\/noindex>, der arbejder med planl\u00e6gningsarbejdsbelastninger i klynger.<\/p>\n<p><\/p>\n<p>Men i stedet for at finde p\u00e5 en ny m\u00e5de at interagere med klyngen og indkapsle ressourcer i brugerdefinerede beskrivelser, integreres multi-cluster-scheduler i Kubernetes' standard livscyklus og opfanger alle opkald, der opretter pods.<\/p>\n<p><\/p>\n<p><strong>Hver oprettet pod bliver straks erstattet med en dummy.<\/strong><\/p>\n<p><\/p>\n<blockquote><p>multi-cluster-scheduler bruger <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/\">web-hooks til at modificere adgang<\/a><\/noindex>, for at opfange opkaldet og oprette en inaktiv pod-dummy.<\/p><\/blockquote>\n<p>Den oprindelige pod g\u00e5r igennem endnu en planl\u00e6gningscyklus, hvor der tr\u00e6ffes beslutningen om placering efter at have forespurgt hele federation.<\/p>\n<p><\/p>\n<p>Til sidst leveres pod'en til den \u00f8nskede klynge.<\/p>\n<p><\/p>\n<p>Resultatet er, at du har en ekstra pod, der ikke laver noget, bare fylder plads.<\/p>\n<p><\/p>\n<p>Fordelen er, at du ikke beh\u00f8vede at skrive nye ressourcer til at fusionere leverancer.<\/p>\n<p><\/p>\n<p><strong>Hver ressource, der opretter en pod, er automatisk klar til at fusionere.<\/strong><\/p>\n<p><\/p>\n<p>Det er interessant, for pludselig har du forsyninger fordelt over flere regioner, og du bem\u00e6rker det ikke engang. Dog er det ret risikabelt, da alt her afh\u00e6nger af magi.<\/p>\n<p><\/p>\n<p>Men hvis Shipper fors\u00f8ger at mildne konsekvenserne af forsyningerne, udf\u00f8rer multi-cluster-scheduler mere generelle opgaver og passer muligvis bedre til batchjob.<\/p>\n<p><\/p>\n<p>Den har ikke en avanceret mekanisme til trinvise leverancer.<\/p>\n<p><\/p>\n<p>Du kan l\u00e6se mere om multi-cluster-scheduler p\u00e5 <noindex>siden for det officielle repository<\/noindex>.<\/p>\n<p><\/p>\n<p>Hvis du \u00f8nsker at l\u00e6se om multi-cluster-scheduler i aktion, har Admiralty en <noindex><a rel=\"nofollow\" href=\"https:\/\/admiralty.io\/blog\/running-argo-workflows-across-multiple-kubernetes-clusters\/\">interessant anvendelsestilf\u00e6lde med Argo<\/a><\/noindex> \u2013 arbejdsgange, h\u00e6ndelser, CI og CD i Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">Andre v\u00e6rkt\u00f8jer og l\u00f8sninger<\/h3>\n<p><\/p>\n<p>At forbinde flere klynger og administrere dem er en kompleks opgave, der ikke har en universel l\u00f8sning.<\/p>\n<p><\/p>\n<p>Hvis du \u00f8nsker at udforske dette emne n\u00e6rmere, her er nogle ressourcer:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/submariner.io\/\">Submariner fra Rancher<\/a><\/noindex> \u2013 et v\u00e6rkt\u00f8j til at forbinde overlay-netv\u00e6rk mellem forskellige Kubernetes-klynger.<\/li>\n<li>Detailk\u00e6den Target bruger <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix sammen med Spinnaker for at orkestrere implementeringer p\u00e5 flere klynger<\/a><\/noindex>.<\/li>\n<li>Fors\u00f8g at bruge IPV6 og <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">et ensartet netv\u00e6rk p\u00e5 tv\u00e6rs af flere regioner.<\/a><\/noindex>.<\/li>\n<li>Du kan bruge service mesh, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio til at forbinde flere klynger.<\/a><\/noindex>.<\/li>\n<li>Cilium, en netv\u00e6rksplugin til containere, tilbyder <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">funktionen cluster mesh<\/a><\/noindex>, som g\u00f8r det muligt at kombinere flere klynger.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vot-i-vse-na-segodnya\">Det er alt for i dag.<\/h3>\n<p><\/p>\n<p><em>Tak fordi du l\u00e6ste med til slut!<\/em><\/p>\n<p><\/p>\n<p>Hvis du kender en bedre m\u00e5de at forbinde flere klynger p\u00e5, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">fort\u00e6l os det.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Vi tilf\u00f8jer din metode til links.<\/p>\n<p><\/p>\n<p>S\u00e6rlig tak til Chris Nesbitt-Smith (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/chrisns\">Chris Nesbitt-Smith<\/a><\/noindex>) og Vincent De Smet (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/so0k\">Vincent De Smet<\/a><\/noindex>) (reliability engineer hos <noindex><a rel=\"nofollow\" href=\"https:\/\/swatmobile.io\/\">swatmobile.io<\/a><\/noindex>) for at have l\u00e6st artiklen og delt nyttige oplysninger om, hvordan federation fungerer.<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/454056\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e \u043a\u0440\u0430\u0442\u043a\u0438\u0445 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u043f\u043e Kubernetes. \u042d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u043d\u043b\u0430\u0439\u043d \u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0442\u0440\u0435\u043d\u0438\u043d\u0433\u0430\u0445. \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0442 \u043f\u043e Kubernetes. \u0421\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442 \u2014 \u0414\u0430\u043d\u0438\u044d\u043b\u044c \u041f\u043e\u043b\u0435\u043d\u0447\u0438\u043a (Daniele Polencic). \u0414\u0430\u043d\u0438\u044d\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u041f\u041e \u0432 Learnk8s. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u0441\u0442\u0435, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34825","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e.\" \/>\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\/da\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\u041a\u0430\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b Kubernetes \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\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:00:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:35+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\udd47S\u00e5dan forbinder du Kubernetes-klynger i forskellige datacentre | ProHoster","description":"Velkommen til serien.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\u041a\u0430\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b Kubernetes \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445 | ProHoster","og:description":"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","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:00:35+00:00","article:modified_time":"2019-10-31T19:00:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34825","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-21 20:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:06","updated":"2026-01-21 20:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/34825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=34825"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/34825\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/26226"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=34825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=34825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=34825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}