{"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\/no\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","title":{"rendered":"Hvordan koble Kubernetes-klynger i forskjellige datasentre","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hvordan koble Kubernetes-klynger i forskjellige datasentre\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Velkommen til en rekke korte guider om Kubernetes.<\/strong> Dette er en regelmessig spalte med de mest interessante sp\u00f8rsm\u00e5lene vi f\u00e5r online og p\u00e5 v\u00e5re kurs. Svar fra 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 jobber som instrukt\u00f8r og programvareutvikler hos <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Hvis du vil ha svar p\u00e5 sp\u00f8rsm\u00e5let ditt i neste innlegg, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">kontakt oss via e-post<\/a><\/noindex> eller inn i <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/learnk8s\">Twitter: @learnk8s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Gikk du glipp av de forrige innleggene? <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/visualise-dependencies-kubernetes\">Finn dem her<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kak-soedinit-klastery-kubernetes-v-raznyh-data-centrah\">Hvordan koble Kubernetes-klynger i forskjellige datasentre?<\/h3>\n<p><\/p>\n<blockquote><p><strong>Kort sagt<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kommer Kubefed v2 snart<\/a><\/noindex>, og jeg anbefaler \u00e5 lese 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\">prosjektet multi-cluster-scheduler.<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Det er ganske vanlig at infrastrukturen replikeres og distribueres over forskjellige regioner, spesielt i kontrollerte milj\u00f8er.<\/p><\/blockquote>\n<p><strong>Hvis \u00e9n region g\u00e5r ned, blir trafikken omdirigert til en annen for \u00e5 unng\u00e5 avbrudd.<\/strong><\/p>\n<p><\/p>\n<p>Med Kubernetes kan vi bruke en lignende strategi og fordele arbeidsbelastninger over forskjellige regioner.<\/p>\n<p><\/p>\n<p>Du kan ha \u00e9n eller flere klynger per team, region, milj\u00f8, eller en kombinasjon av disse elementene.<\/p>\n<p><\/p>\n<p>Klyngene dine kan v\u00e6re plassert i forskjellige skyer og i lokale milj\u00f8er.<\/p>\n<p><\/p>\n<p><em>Men hvordan planlegger du infrastrukturen for s\u00e5 stort geografisk spredning?<br \/>\nBurde du opprette \u00e9n stor klynge over flere skymilj\u00f8er med ett felles nettverk?<br \/>\nEller opprette mange sm\u00e5 klynger og finne en m\u00e5te \u00e5 administrere og synkronisere dem p\u00e5?<\/em><\/p>\n<p><\/p>\n<h3 id=\"odin-rukovodyaschiy-klaster\">\u00c9n styrende klynge<\/h3>\n<p><\/p>\n<p><em>\u00c5 opprette \u00e9n klynge med ett felles nettverk er ikke s\u00e5 enkelt.<\/em><\/p>\n<p><\/p>\n<p>Tenk deg at du har en feil, og tilkoblingen mellom segmentene av klyngen er tapt.<\/p>\n<p><\/p>\n<p>Hvis du har \u00e9n master-server, vil halve ressursene ikke kunne motta nye kommandoer fordi de ikke kan kontakte masteren.<\/p>\n<p><\/p>\n<p>Og da har du gamle rutetabeller (<code>kube-proxy<\/code> kan ikke laste inn nye) og ingen ekstra pod-er (kubelet kan ikke be om oppdateringer).<\/p>\n<p><\/p>\n<p>Hva verre er, hvis Kubernetes ikke ser noden, merker den den som tapt og fordeler manglende pod-er til eksisterende noder.<\/p>\n<p><\/p>\n<p><strong>Resultatet er at du ender opp med dobbelt s\u00e5 mange pod-er.<\/strong><\/p>\n<p><\/p>\n<p>Hvis du lager \u00e9n master-server i hver region, vil det oppst\u00e5 problemer med algoritmen for \u00e5 oppn\u00e5 konsensus i etcd-databasen.<em>red. \u2014 Faktisk trenger ikke etcd-databasen \u00e5 v\u00e6re p\u00e5 master-serverne. Den kan kj\u00f8res p\u00e5 en egen gruppe servere i \u00e9n region. Men dette f\u00f8rer til et punktsvikt i klyngen. P\u00e5 den positive siden g\u00e5r det raskt.<\/em>)<\/p>\n<p><\/p>\n<p>etcd bruker <noindex><a rel=\"nofollow\" href=\"http:\/\/thesecretlivesofdata.com\/raft\/\">raft-algoritmen<\/a><\/noindex>, for \u00e5 oppn\u00e5 konsensus f\u00f8r verdien skrives til disk.<br \/>\nDet vil si at flertallet av instansene m\u00e5 bli enige f\u00f8r tilstanden kan skrives til etcd.<\/p>\n<p><\/p>\n<p>Hvis forsinkelsen mellom etcd-instansene \u00f8ker betydelig, slik som med tre etcd-instanser i forskjellige regioner, tar det lang tid \u00e5 oppn\u00e5 konsensus og skrive verdien til disk.<br \/>\nDette gjenspeiles ogs\u00e5 i Kubernetes-kontrollere.<\/p>\n<p><\/p>\n<p>Kontrollereren trenger mer tid for \u00e5 registrere endringen og skrive svaret til databasen.<\/p>\n<p><\/p>\n<p>Og siden det ikke bare er \u00e9n, men flere controllere, <strong>blir det en kjedereaksjon, og hele klyngen begynner \u00e5 fungere veldig sakte.<\/strong>.<\/p>\n<p><\/p>\n<p>etcd er s\u00e5 sensitivt for forsinkelse at <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/etcd\/docs\/latest\/faq.html#deployment\">den offisielle dokumentasjonen anbefaler \u00e5 bruke SSD-er i stedet for vanlige harddisker.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Det finnes for \u00f8yeblikket ikke gode eksempler p\u00e5 store nettverk for \u00e9n klynge.<\/strong><\/p>\n<p><\/p>\n<p>Hovedsakelig pr\u00f8ver fellesskapet av utviklere og SIG-cluster-gruppen \u00e5 finne ut hvordan man skal orkestrere klynger p\u00e5 samme m\u00e5te som Kubernetes orkestrerer containere.<\/p>\n<p><\/p>\n<h3 id=\"variant-1-federaciya-klasterov-s-kubefed\">Alternativ 1: klyngefederasjon med kubefed<\/h3>\n<p><\/p>\n<p>Det offisielle svaret fra SIG-cluster er <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, den nye versjonen av den originale klienten og kube federasjonsoperat\u00f8ren.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>For f\u00f8rste gang pr\u00f8vde man \u00e5 administrere en samling klynger som ett objekt med hjelp av verkt\u00f8yet kube federation.<\/p>\n<p><\/p>\n<p>Starten var god, men til slutt ble kube federation ikke popul\u00e6rt fordi det ikke st\u00f8ttet alle ressurser.<\/p>\n<p><\/p>\n<p>Det st\u00f8ttet sammenflettede forsyninger og tjenester, men for eksempel ikke StatefulSets.<br \/>\nI tillegg ble konfigurasjonen av fedreasjonen levert som annotasjoner og var ikke spesielt fleksibel.<\/p>\n<p><\/p>\n<p><em>Tenk deg hvordan man kan beskrive replikeringsdeling for hver klynge i fedreasjonen med bare annotasjoner.<\/em><\/p>\n<p><\/p>\n<p><strong>Det ble et fullstendig kaos.<\/strong><\/p>\n<p><\/p>\n<p>SIG-cluster har gjort et stort arbeid etter kubefed v1 og besluttet \u00e5 n\u00e6rme seg problemet fra en annen vinkel.<\/p>\n<p><\/p>\n<p><strong>I stedet for annotasjoner besluttet de \u00e5 utgi en kontroller som installeres p\u00e5 klyngene. Den kan konfigureres ved hjelp av 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>the standard resource definition, such as a deployment;<\/li>\n<li>med bryteren for pseudoklassen <code>placement<\/code>, where you define how the resource will be distributed within the federation;<\/li>\n<li>med bryteren for pseudoklassen <code>override<\/code>, where the weight and parameters from placement can be overridden for a specific resource.<\/li>\n<\/ul>\n<p><\/p>\n<p>Here's an example of a federated 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 provides three replicas, while the second has a value of 5.<\/p>\n<p><\/p>\n<p>If you need more control over the number of replicas, kubefed2 offers 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 not quite ready, and active work is ongoing in the official project repository.<\/p>\n<p><\/p>\n<p><strong>Keep an eye on kubefed2, but remember that it is not suitable for production environments yet.<\/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 on kubefed2<\/a><\/noindex> in the Kubernetes blog and in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">the 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>Developers at Booking.com did not work on kubefed v2, but they created Shipper \u2014 an operator for deployment across multiple clusters, across various regions and clouds.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> similar to kubefed2.<\/p>\n<p><\/p>\n<p>Both tools allow you to configure 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 minimize 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 distribution of replicas between the previous and current deployment and the volume of incoming traffic.<\/p>\n<p><\/p>\n<p>When you send a resource to a cluster, the Shipper controller gradually rolls out this change across all federated 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 ikkje st\u00f8ttar vanilla ressursar.<br \/>\nGenerelt fungerer Shipper slik:<\/p>\n<p><\/p>\n<p>I staden for standard levering, m\u00e5 du opprette ei applikasjonsressurs som inkluderer ein Helm-chart:<\/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 ein god l\u00f8ysing for \u00e5 administrere fleire klynger, men den tette forbindelsen til Helm kan vere ein hindring.<\/strong><\/p>\n<p><\/p>\n<p><em>Kva om vi alle g\u00e5r fr\u00e5 Helm til <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/05\/29\/introducing-kustomize-template-free-configuration-customization-for-kubernetes\/\">(forresten, utviklingen hans foreg\u00e5r n\u00e5 i et eget repository), alts\u00e5 for behandling av tillegg YAML-filer fra spesielle kustomiseringsmapper (detaljer om deres bruk finnes i<\/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 meir om Shipper og filosofien bak i <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/booking-com-infrastructure\/introducing-shipper-daf9244e3882\">denne offisielle pressemeldinga<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Om du vil dykke ned i koden, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">g\u00e5 til det offisielle prosjektlageret<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Alternativ 3: \u00abmagisk\u00bb sammensl\u00e5ing av klynger<\/h3>\n<p><\/p>\n<p>Kubefed v2 og Shipper fungerer med f\u00f8derasjonen av klynger og gir klyngene nye ressursar gjennom brukardefinerte ressursar.<\/p>\n<p><\/p>\n<p><em>Men kva om du ikkje vil skrive om alle leveransar, StatefulSets, DaemonSets, osv. for \u00e5 sl\u00e5 saman?<\/em><\/p>\n<p><\/p>\n<p><em>Korleis inkludere ein eksisterande klynge i f\u00f8derasjonen utan \u00e5 endre YAML?<\/em><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">multi-cluster-scheduler er eit prosjekt fr\u00e5 Admirality<\/a><\/noindex>, som handterer planlegging av arbeidslastar i klynger.<\/p>\n<p><\/p>\n<p>Men i staden for \u00e5 finne opp ein ny m\u00e5te \u00e5 interagere med klyngen p\u00e5 og pakke ressursar inn i brukardefinerte definisjonar, integrerer multi-cluster-scheduler seg i den vanlege livssyklus-prosedyrane til Kubernetes og fanger alle kall som opprettar poddar.<\/p>\n<p><\/p>\n<p><strong>Kvar pod som blir oppretta, blir straks erstatta med ein plassholder.<\/strong><\/p>\n<p><\/p>\n<blockquote><p>multi-cluster-scheduler bruker <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/\">web-hooks for \u00e5 modifisere tilgangen<\/a><\/noindex>, for \u00e5 fange opp kallet og lage ein inaktiv pod-plassholder.<\/p><\/blockquote>\n<p>Den originale podden g\u00e5r gjennom eit nytt planleggingssyklus, der det blir fatta ei avgjerd om plassering etter \u00e5 ha spurt heile f\u00f8derasjonen.<\/p>\n<p><\/p>\n<p>Til slutt blir podden levert til den m\u00e5lretta klynga.<\/p>\n<p><\/p>\n<p>Resultatet er at du har ei overfl\u00f8dig podd, som ikkje gjer noko, berre tar opp plass.<\/p>\n<p><\/p>\n<p>Fordelen er at du slepp \u00e5 skrive nye ressursar for \u00e5 sl\u00e5 saman leveransane.<\/p>\n<p><\/p>\n<p><strong>Kvar ressurs som opprettar ein podd, er automatisk klar til samansl\u00e5ing.<\/strong><\/p>\n<p><\/p>\n<p>Det er interessant, for plutselig har du leveranser fordelt over flere regioner, men du har ikke lagt merke til det. Men, dette er ganske risikabelt, for her holder alt p\u00e5 magi.<\/p>\n<p><\/p>\n<p>Men hvis Shipper pr\u00f8ver \u00e5 dempe konsekvensene av leveransene, utf\u00f8rer multi-cluster-scheduler mer generelle oppgaver og kan kanskje v\u00e6re bedre egnet for batch-jobber.<\/p>\n<p><\/p>\n<p>Den har ikke en avansert mekanisme for gradvise leveranser.<\/p>\n<p><\/p>\n<p>Mer om multi-cluster-scheduler kan du lese p\u00e5 <noindex>siden til det offisielle depotet<\/noindex>.<\/p>\n<p><\/p>\n<p>Hvis du vil lese om multi-cluster-scheduler i aksjon, har Admiralty et <noindex><a rel=\"nofollow\" href=\"https:\/\/admiralty.io\/blog\/running-argo-workflows-across-multiple-kubernetes-clusters\/\">interessant bruksomr\u00e5de med Argo<\/a><\/noindex> \u2013 arbeidsflyter, hendelser, CI og CD i Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">Andre verkt\u00f8y og l\u00f8sninger<\/h3>\n<p><\/p>\n<p>\u00c5 koble sammen flere klynger og administrere dem er en kompleks oppgave; det finnes ingen universell l\u00f8sning.<\/p>\n<p><\/p>\n<p>Hvis du vil utforske dette emnet n\u00e6rmere, her er noen ressurser:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/submariner.io\/\">Submariner fra Rancher<\/a><\/noindex> \u2013 et verkt\u00f8y som forbinder overlay-nettverk fra forskjellige Kubernetes-klynger.<\/li>\n<li>Detaljhandelskjeden Target bruker <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix sammen med Spinnaker for \u00e5 orkestrere distribusjonen p\u00e5 flere klynger<\/a><\/noindex>.<\/li>\n<li>Pr\u00f8v \u00e5 bruke IPV6 og <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">et felles nettverk i flere regioner<\/a><\/noindex>.<\/li>\n<li>Du kan bruke service mesh, for eksempel <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio for \u00e5 forbinde flere klynger<\/a><\/noindex>.<\/li>\n<li>Cilium, en nettverksplugin for containere, tilbyr <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">cluster mesh-funksjonen<\/a><\/noindex>, som gj\u00f8r det mulig \u00e5 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>Takk for at du leste helt til slutt!<\/em><\/p>\n<p><\/p>\n<p>Hvis du har tips om hvordan man bedre kan koble sammen flere klynger, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">fortell oss<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Vi vil legge til metoden din til lenkene.<\/p>\n<p><\/p>\n<p>Spesiell takk 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 at <noindex><a rel=\"nofollow\" href=\"https:\/\/swatmobile.io\/\">swatmobile.io<\/a><\/noindex>) for \u00e5 ha lest artikkelen og delt nyttig informasjon om hvordan federasjonen 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.5 - 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\/no\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Hvordan koble Kubernetes-klynger i forskjellige datasentre | ProHoster","description":"Velkommen til serien.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/34825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=34825"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/34825\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/26226"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=34825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=34825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=34825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}