{"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\/hr\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","title":{"rendered":"Kako spojiti klastere Kubernetes u razli\u010ditim podatkovnim centrima","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kako spojiti klastere Kubernetes u razli\u010ditim podatkovnim centrima\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Dobrodo\u0161li u seriju kratkih vodi\u010da o Kubernetesu.<\/strong> Ovo je redovita kolumna s najzanimljivijim pitanjima koja primamo putem interneta i na na\u0161im treninzima. Odgovara stru\u010dnjak za Kubernetes.<\/p>\n<p><\/p>\n<blockquote><p>Dana\u0161nji stru\u010dnjak je Daniele Polencic (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/danielepolencic\">Daniele Polencic<\/a><\/noindex>). Daniele radi kao instruktor i softverski in\u017eenjer u <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Ako \u017eelite dobiti odgovor na svoje pitanje u sljede\u0107em postu, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">javite nam se putem e-po\u0161te<\/a><\/noindex> ili u <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/learnk8s\">na Twitteru: @learnk8s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Jeste li propustili prethodne postove? <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/visualise-dependencies-kubernetes\">Potra\u017eite ih ovdje<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kak-soedinit-klastery-kubernetes-v-raznyh-data-centrah\">Kako povezati Kubernetes klastere u razli\u010ditim podatkovnim centrima?<\/h3>\n<p><\/p>\n<blockquote><p><strong>Ukratko<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">uskoro izlazi Kubefed v2<\/a><\/noindex>, a preporu\u010dujem da pro\u010ditate o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipperu<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">projektu multi-cluster-scheduler<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u010cesto se infrastruktura replicira i distribuira po razli\u010ditim regijama, posebno u kontroliranim okru\u017eenjima.<\/p><\/blockquote>\n<p><strong>Ako jedan region postane nedostupan, promet se preusmjerava u drugi kako bi se izbjegli prekidi.<\/strong><\/p>\n<p><\/p>\n<p>Uz Kubernetes mo\u017eete koristiti sli\u010dnu strategiju i distribuirati radne terete po razli\u010ditim regijama.<\/p>\n<p><\/p>\n<p>Mo\u017eete imati jedan ili vi\u0161e klastera po timu, regiji, okru\u017eenju ili kombinaciji tih elemenata.<\/p>\n<p><\/p>\n<p>Va\u0161i klasteri mogu biti smje\u0161teni u razli\u010ditim obla\u010dnim uslugama i lokalnom okru\u017eenju.<\/p>\n<p><\/p>\n<p><em>Ali kako planirati infrastrukturu za takvo geografsko raspr\u0161enje?<br \/>\nDa li stvoriti jedan veliki klaster u vi\u0161e obla\u010dnih sredina preko jedinstvene mre\u017ee?<br \/>\nIli otvoriti mnogo malih klastera i prona\u0107i na\u010din da ih kontroli\u0161ete i sinkronizujete?<\/em><\/p>\n<p><\/p>\n<h3 id=\"odin-rukovodyaschiy-klaster\">Jedan upravlja\u010dki klaster<\/h3>\n<p><\/p>\n<p><em>Nije lako stvoriti jedan klaster u jedinstvenoj mre\u017ei.<\/em><\/p>\n<p><\/p>\n<p>Zamislite, imate kvar, izgubljena je povezanost izme\u0111u segmenata klastera.<\/p>\n<p><\/p>\n<p>Ako imate jedan master server, polovina resursa ne\u0107e mo\u0107i primati nove komande, jer se ne\u0107e mo\u0107i povezati s masterom.<\/p>\n<p><\/p>\n<p>A uz to, imate stare tablice rutiranja (<code>kube-proxy<\/code> ne mo\u017ee u\u010ditati nove) i nijedan dodatni pod (kubelet ne mo\u017ee tra\u017eiti a\u017euriranja).<\/p>\n<p><\/p>\n<p>\u0160to je jo\u0161 gore, ako Kubernetes ne vidi \u010dvor, ozna\u010dava ga kao izgubljenog i preusmjerava nedostaju\u0107e podove na postoje\u0107e \u010dvorove.<\/p>\n<p><\/p>\n<p><strong>Na kraju imate dvostruko vi\u0161e podova.<\/strong><\/p>\n<p><\/p>\n<p>Ako napravite po jedan master server za svaku regiju, imat \u0107ete problema s konsenzus algoritmom u bazi podataka etcd.<em>napomena urednika \u2014 U stvarnosti, etcd baza podataka ne mora nu\u017eno biti na master poslu\u017eiteljima. Mo\u017ee se pokrenuti na zasebnoj grupi poslu\u017eitelja u jednoj regiji. Ipak, to rezultira to\u010dkom kvara klastera. No, brzo je.<\/em>)<\/p>\n<p><\/p>\n<p>etcd koristi <noindex><a rel=\"nofollow\" href=\"http:\/\/thesecretlivesofdata.com\/raft\/\">raft algoritam<\/a><\/noindex>, kako bi se usuglasila vrijednost prije nego \u0161to se zapi\u0161e na disk.<br \/>\nOdnosno, ve\u0107ina instanci mora posti\u0107i konsenzus prije nego \u0161to se stanje mo\u017ee zapisati u etcd.<\/p>\n<p><\/p>\n<p>Ako se ka\u0161njenje izme\u0111u instanci etcd naglo pove\u0107ava, kao u slu\u010daju s tri instance etcd u razli\u010ditim regijama, potrebno je puno vremena za usugla\u0161avanje vrijednosti i zapisivanje na disk.<br \/>\nTo se odra\u017eava i na Kubernetes kontrolere.<\/p>\n<p><\/p>\n<p>Menad\u017eeru kontrolera treba vi\u0161e vremena da sazna za promjenu i zabilje\u017ei odgovor u bazu podataka.<\/p>\n<p><\/p>\n<p>A kako nije samo jedan kontroler, nego nekoliko, <strong>dobiva se lan\u010dana reakcija i cijeli klaster po\u010dinje raditi vrlo sporo.<\/strong>.<\/p>\n<p><\/p>\n<p>etcd je toliko osjetljiv na ka\u0161njenje da <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/etcd\/docs\/latest\/faq.html#deployment\">u slu\u017ebenoj dokumentaciji se preporu\u010duje kori\u0161tenje SSD-a umjesto obi\u010dnih tvrdih diskova.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Trenutno ne postoje dobri primjeri velike mre\u017ee za jedan klaster.<\/strong><\/p>\n<p><\/p>\n<p>Uglavnom, zajednica programera i grupa SIG-cluster poku\u0161avaju shvatiti kako orkestrirati klastere na sli\u010dan na\u010din na koji Kubernetes orkestrira kontejnere.<\/p>\n<p><\/p>\n<h3 id=\"variant-1-federaciya-klasterov-s-kubefed\">Opcija 1: federacija klastera s kubefed<\/h3>\n<p><\/p>\n<p>Slu\u017ebeni odgovor od SIG-cluster \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, nova verzija izvorne klijentske i operativne kube federacije.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Prvi put je upravljanje zbirkom klastera kao jedinstvenim objektom poku\u0161ano pomo\u0107u alata kube federation.<\/p>\n<p><\/p>\n<p>Po\u010detak je bio dobar, ali na kraju kube federation nikada nije stekao popularnost jer nije podr\u017eavao sve resurse.<\/p>\n<p><\/p>\n<p>Podr\u017eavao je objedinjene isporuke i servise, ali, na primjer, ne StatefulSets.<br \/>\nA konfiguracija federacije se prenosila u obliku anotacija i nije bila fleksibilna.<\/p>\n<p><\/p>\n<p><em>Zamislite kako se mo\u017ee opisati razdvajanje replika za svaki klaster u federaciji pomo\u0107u samo jednih anotacija.<\/em><\/p>\n<p><\/p>\n<p><strong>Nastao je potpuni nered.<\/strong><\/p>\n<p><\/p>\n<p>SIG-cluster je u\u010dinio veliki posao nakon kubefed v1 i odlu\u010dili su pristupiti problemu s druge strane.<\/p>\n<p><\/p>\n<p><strong>Umjesto anotacija, odlu\u010dili su izdati kontroler koji se instalira na klastere. Mo\u017ee se konfigurirati pomo\u0107u korisni\u010dkih definicija resursa (Custom Resource Definition, CRD).<\/strong><\/p>\n<p><\/p>\n<p>Za svaki resurs koji \u0107e biti dio federacije, imate prilago\u0111enu definiciju CRD od tri dijela:<\/p>\n<p><\/p>\n<ul>\n<li>standardna definicija resursa, poput implementacije;<\/li>\n<li>odjeljak <code>placement<\/code>, gdje definirate kako \u0107e se resurs raspodijeliti unutar federacije;<\/li>\n<li>odjeljak <code>override<\/code>, gdje se za odre\u0111eni resurs mogu nadja\u010dati te\u017eina i parametri iz placement-a.<\/li>\n<\/ul>\n<p><\/p>\n<p>Evo primjera objedinjene isporuke s dijelovima placement i override.<\/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>Kao \u0161to vidite, isporuka je raspore\u0111ena po dva klastera: <code>cluster1<\/code> i <code>cluster2<\/code>.<\/p>\n<p><\/p>\n<p>Prvi klaster isporu\u010duje tri replike, dok je za drugi navedena vrijednost 5.<\/p>\n<p><\/p>\n<p>Ako vam treba ve\u0107a kontrola nad brojem replika, kubefed2 pru\u017ea novi objekt ReplicaSchedulingPreference, gdje se replike mogu rasporediti po te\u017eini:<\/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>Struktura CRD i API jo\u0161 nisu potpuno spremni, a u slu\u017ebenom repozitoriju projekta aktivno se radi.<\/p>\n<p><\/p>\n<p><strong>Pratite kubefed2, ali imajte na umu da trenutna verzija nije pogodna za proizvodno okru\u017eenje.<\/strong><\/p>\n<p><\/p>\n<p>Saznajte vi\u0161e o kubefed2 iz <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/12\/12\/kubernetes-federation-evolution\/\">slu\u017ebenog \u010dlanka o kubefed2<\/a><\/noindex> na blogu o Kubernetesu i iz <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">slu\u017ebenog repozitorija projekta kubefed<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-2-obedinenie-klasterov-v-stile-bookingcom\">Opcija 2: objedinjavanje klastera u stilu Booking.com<\/h3>\n<p><\/p>\n<p>Programeri Booking.com nisu radili na kubefed v2, ali su smislili Shipper \u2014 operator za isporuku na vi\u0161e klastera, u razli\u010ditim regijama i u razli\u010ditim oblacima.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipperu<\/a><\/noindex> ne\u0161to sli\u010dno kubefed2.<\/p>\n<p><\/p>\n<p>Oba alata omogu\u0107uju postavljanje strategije implementacije na vi\u0161e klastera (koji klasteri se koriste i koliko im je replika).<\/p>\n<p><\/p>\n<p>Ali <strong>cilj Shipper-a je smanjiti rizik od gre\u0161aka prilikom isporuke.<\/strong><\/p>\n<p><\/p>\n<p>U Shipper-u mo\u017eete definirati niz koraka koji opisuju raspodjelu replika izme\u0111u prethodne i trenutne isporuke i volumen dolaznog prometa.<\/p>\n<p><\/p>\n<p>Kada \u0161aljete resurs u klaster, Shipperov kontroler postupno implementira tu promjenu po svim objedninjenim klasterima.<\/p>\n<p><\/p>\n<p><em>Osim toga, Shipper je vrlo ograni\u010den.<\/em><\/p>\n<p><\/p>\n<p>Na primjer, <strong>prihva\u0107a Helm chartove kao ulazne podatke.<\/strong> i ne podr\u017eava vanilla resurse.<br \/>\nU osnovi, Shipper radi na sljede\u0107i na\u010din.<\/p>\n<p><\/p>\n<p>Umjesto standardne isporuke, potrebno je stvoriti resurs aplikacije, uklju\u010duju\u0107i 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 je dobar izbor za upravljanje vi\u0161e klastera, ali njegova uska povezanost s Helm-om samo smeta.<\/strong><\/p>\n<p><\/p>\n<p><em>A \u0161to ako se svi prebacimo s Helma na <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/05\/29\/introducing-kustomize-template-free-configuration-customization-for-kubernetes\/\">kustomize<\/a><\/noindex> ili <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deepmind\/kapitan\">kapitan<\/a><\/noindex>?<\/em><\/p>\n<p><\/p>\n<p>Saznajte vi\u0161e o Shipperu i njegovoj filozofiji u <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/booking-com-infrastructure\/introducing-shipper-daf9244e3882\">ovim slu\u017ebenim priop\u0107enju za tisak<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Ako \u017eelite zaviriti u kod, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">posjetite slu\u017ebeni repozitorij projekta<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Opcija 3: &#171;magi\u010dni&#187; spoj klastera<\/h3>\n<p><\/p>\n<p>Kubefed v2 i Shipper rade s federacijom klastera, pru\u017eaju\u0107i klasterima nove resurse kroz korisni\u010dki definirane resurse.<\/p>\n<p><\/p>\n<p><em>Ali mo\u017eda ne \u017eelite ponovno pisati sve isporuke, StatefulSets, DaemonSets itd. za spajanje?<\/em><\/p>\n<p><\/p>\n<p><em>Kako uklju\u010diti postoje\u0107i klaster u federaciju, a da ne mijenjate YAML?<\/em><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">multi-cluster-scheduler je projekt Admirality<\/a><\/noindex>, koji se bavi radnim optere\u0107enjima planiranja u klasterima.<\/p>\n<p><\/p>\n<p>Ali umjesto da izmislite novi na\u010din interakcije s klasterom i obavijate resurse u korisni\u010dke definicije, multi-cluster-scheduler se implementira u standardni \u017eivotni ciklus Kubernetes-a i presre\u0107e sve pozive koji kreiraju pod-ove.<\/p>\n<p><\/p>\n<p><strong>Svaki stvoreni pod odmah se zamjenjuje praznim.<\/strong><\/p>\n<p><\/p>\n<blockquote><p>multi-cluster-scheduler koristi <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/\">web-hooks za modifikaciju pristupa<\/a><\/noindex>, kako bi presreo poziv i stvorio neaktivan pod-praznjak.<\/p><\/blockquote>\n<p>Izvorni pod prolazi kroz jo\u0161 jedan ciklus planiranja, gdje se nakon ispitivanja cijele federacije donosi odluka o smje\u0161taju.<\/p>\n<p><\/p>\n<p>Na kraju, pod se isporu\u010duje u ciljani klaster.<\/p>\n<p><\/p>\n<p>Na kraju imate dodatni pod koji ni\u0161ta ne radi, samo zauzima prostor.<\/p>\n<p><\/p>\n<p>Prednost je u tome \u0161to niste morali pisati nove resurse za spajanje isporuka.<\/p>\n<p><\/p>\n<p><strong>Svaki resurs koji stvara pod automatski je spreman za spajanje.<\/strong><\/p>\n<p><\/p>\n<p>To je zanimljivo, jer iznenada imate isporuke raspore\u0111ene u nekoliko regija, a niste ni primijetili. No, to je prili\u010dno rizi\u010dno jer se ovdje sve oslanja na magiju.<\/p>\n<p><\/p>\n<p>Ali ako Shipper nastoji ubla\u017eiti posljedice isporuka, multi-cluster-scheduler obavlja op\u0107enitije zadatke i mo\u017eda bolje odgovara za paketne zadatke.<\/p>\n<p><\/p>\n<p>Nema napredni mehanizam postepenih isporuka.<\/p>\n<p><\/p>\n<p>Vi\u0161e o multi-cluster-scheduleru mo\u017eete saznati na <noindex>stranici slu\u017ebenog repozitorija<\/noindex>.<\/p>\n<p><\/p>\n<p>Ako \u017eelite \u010ditati o multi-cluster-scheduleru u praksi, Admiralty ima <noindex><a rel=\"nofollow\" href=\"https:\/\/admiralty.io\/blog\/running-argo-workflows-across-multiple-kubernetes-clusters\/\">zanimljiv primjer primjene s Argom<\/a><\/noindex> \u2014 radnim procesima, doga\u0111ajima, CI i CD Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">Drugi alati i rje\u0161enja<\/h3>\n<p><\/p>\n<p>Povezivanje i upravljanje nekoliko klastera je slo\u017een zadatak, ne postoji univerzalno rje\u0161enje.<\/p>\n<p><\/p>\n<p>Ako \u017eelite detaljnije prou\u010diti ovu temu, evo nekoliko resursa:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/submariner.io\/\">Submariner od Ranchera<\/a><\/noindex> \u2014 alat koji povezuje overlay mre\u017ee razli\u010ditih Kubernetes klastera.<\/li>\n<li>Maloprodajna mre\u017ea Target koristi <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix zajedno sa Spinnakerom za orkestraciju implementacije na nekoliko klastera<\/a><\/noindex>.<\/li>\n<li>Poku\u0161ajte koristiti IPV6 i <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">jedinstvenu mre\u017eu u nekoliko regija<\/a><\/noindex>.<\/li>\n<li>Mo\u017eete koristiti service mesh, na primjer <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio za povezivanje nekoliko klastera<\/a><\/noindex>.<\/li>\n<li>Cilium, dodatak mre\u017enog su\u010delja za kontejnere, nudi <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">funkciju cluster mesh<\/a><\/noindex>, koja omogu\u0107uje kombiniranje nekoliko klastera<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vot-i-vse-na-segodnya\">To bi bilo sve za danas<\/h3>\n<p><\/p>\n<p><em>Hvala \u0161to ste pro\u010ditali do kraja!<\/em><\/p>\n<p><\/p>\n<p>Ako znate kako u\u010dinkovitije povezati nekoliko klastera, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">javite nam<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Dodati \u0107emo va\u0161 na\u010din u linkove.<\/p>\n<p><\/p>\n<p>Posebna zahvalnost Krisu Nesbittu-Smithu (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/chrisns\">Chris Nesbitt-Smith<\/a><\/noindex>) i Vincentu de Smetu (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/so0k\">Vincent De Smet<\/a><\/noindex>) (in\u017eenjeru pouzdanosti u <noindex><a rel=\"nofollow\" href=\"https:\/\/swatmobile.io\/\">swatmobile.io<\/a><\/noindex>) za pregled \u010dlanka i dijeljenje korisnih informacija o tome kako funkcionira federacija.<\/p>\n<p>Izvor: <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.4 - 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\/hr\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\/hr\/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\udd47Kako povezati Kubernetes klastere u razli\u010ditim data centrima | ProHoster","description":"Dobrodo\u0161li u seriju.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/34825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=34825"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/34825\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/26226"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=34825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=34825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=34825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}