{"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\/pt\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","title":{"rendered":"Como conectar clusters Kubernetes em diferentes data centers","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Como conectar clusters Kubernetes em diferentes data centers\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Bem-vindo \u00e0 s\u00e9rie de guias r\u00e1pidos sobre Kubernetes.<\/strong> Esta \u00e9 uma coluna regular com as quest\u00f5es mais interessantes que recebemos online e em nossos treinamentos. Responde um especialista em Kubernetes.<\/p>\n<p><\/p>\n<blockquote><p>O especialista de hoje \u00e9 Daniele Polencic (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/danielepolencic\">Daniele Polencic<\/a><\/noindex>). Daniele atua como instrutor e desenvolvedor de software na <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Se voc\u00ea deseja que sua pergunta seja respondida no pr\u00f3ximo post, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">entre em contato conosco por e-mail<\/a><\/noindex> ou para <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/learnk8s\">Twitter: @learnk8s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Perdeu os posts anteriores? <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/visualise-dependencies-kubernetes\">Procure-os aqui<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kak-soedinit-klastery-kubernetes-v-raznyh-data-centrah\">Como conectar clusters Kubernetes em diferentes data centers?<\/h3>\n<p><\/p>\n<blockquote><p><strong>Resumidamente<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">em breve ser\u00e1 lan\u00e7ado o Kubefed v2<\/a><\/noindex>, al\u00e9m disso, recomendo ler sobre <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">o projeto multi-cluster-scheduler.<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u00c9 bastante comum que a infraestrutura seja replicada e distribu\u00edda em diferentes regi\u00f5es, especialmente em ambientes controlados.<\/p><\/blockquote>\n<p><strong>Se uma regi\u00e3o ficar indispon\u00edvel, o tr\u00e1fego \u00e9 redirecionado para outra para evitar interrup\u00e7\u00f5es.<\/strong><\/p>\n<p><\/p>\n<p>Com o Kubernetes, \u00e9 poss\u00edvel usar uma estrat\u00e9gia semelhante e distribuir cargas de trabalho por diferentes regi\u00f5es.<\/p>\n<p><\/p>\n<p>Voc\u00ea pode ter um ou mais clusters por equipe, regi\u00e3o, ambiente ou uma combina\u00e7\u00e3o desses elementos.<\/p>\n<p><\/p>\n<p>Seus clusters podem estar hospedados em diferentes nuvens e em ambientes locais.<\/p>\n<p><\/p>\n<p><em>Mas como planejar a infraestrutura para tal dispers\u00e3o geogr\u00e1fica?<br \/>\nDeve-se criar um \u00fanico grande cluster em v\u00e1rias nuvens por uma rede unificada?<br \/>\nOu ter muitos pequenos clusters e encontrar uma maneira de control\u00e1-los e sincroniz\u00e1-los?<\/em><\/p>\n<p><\/p>\n<h3 id=\"odin-rukovodyaschiy-klaster\">Um cluster principal<\/h3>\n<p><\/p>\n<p><em>Criar um \u00fanico cluster em uma rede unificada n\u00e3o \u00e9 t\u00e3o simples.<\/em><\/p>\n<p><\/p>\n<p>Imagine que voc\u00ea tenha uma falha, a conectividade entre segmentos do cluster foi perdida.<\/p>\n<p><\/p>\n<p>Se voc\u00ea tiver um \u00fanico servidor mestre, metade dos recursos n\u00e3o conseguir\u00e1 receber novos comandos, pois n\u00e3o conseguir\u00e1 se conectar ao mestre.<\/p>\n<p><\/p>\n<p>E, durante isso, voc\u00ea ter\u00e1 tabelas de roteamento antigas (<code>kube-proxy<\/code> n\u00e3o consegue carregar novas) e nenhum pod adicional (o kubelet n\u00e3o consegue solicitar atualiza\u00e7\u00f5es).<\/p>\n<p><\/p>\n<p>O que \u00e9 ainda pior, se o Kubernetes n\u00e3o v\u00ea um n\u00f3, ele o marca como perdido e redistribui os pods ausentes pelos n\u00f3s existentes.<\/p>\n<p><\/p>\n<p><strong>No final, voc\u00ea ter\u00e1 o dobro de pods.<\/strong><\/p>\n<p><\/p>\n<p>Se voc\u00ea criar um servidor mestre para cada regi\u00e3o, haver\u00e1 problemas com o algoritmo de consenso no banco de dados etcd.<em>Nota do editor \u2014 Na verdade, a base de dados etcd n\u00e3o precisa estar necessariamente nos servidores mestres. Ela pode ser executada em um grupo separado de servidores em uma \u00fanica regi\u00e3o. No entanto, isso resulta em um ponto de falha no cluster. Mas \u00e9 r\u00e1pido.<\/em>)<\/p>\n<p><\/p>\n<p>etcd utiliza <noindex><a rel=\"nofollow\" href=\"http:\/\/thesecretlivesofdata.com\/raft\/\">o algoritmo raft<\/a><\/noindex>, para concordar sobre o valor antes de grav\u00e1-lo no disco.<br \/>\nIsto \u00e9, a maioria das inst\u00e2ncias deve alcan\u00e7ar consenso antes que o estado possa ser gravado no etcd.<\/p>\n<p><\/p>\n<p>Se a lat\u00eancia entre as inst\u00e2ncias do etcd aumentar drasticamente, como no caso de tr\u00eas inst\u00e2ncias do etcd em regi\u00f5es diferentes, leva muito tempo para concordar sobre o valor e grav\u00e1-lo no disco.<br \/>\nIsso tamb\u00e9m se reflete nos controladores do Kubernetes.<\/p>\n<p><\/p>\n<p>O gerenciador de controladores leva mais tempo para se atualizar sobre a mudan\u00e7a e gravar a resposta no banco de dados.<\/p>\n<p><\/p>\n<p>E como existem v\u00e1rios controladores, <strong>isso resulta em uma rea\u00e7\u00e3o em cadeia, e todo o cluster come\u00e7a a funcionar muito lentamente.<\/strong>.<\/p>\n<p><\/p>\n<p>etcd \u00e9 t\u00e3o sens\u00edvel \u00e0 lat\u00eancia que <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/etcd\/docs\/latest\/faq.html#deployment\">na documenta\u00e7\u00e3o oficial, recomenda-se o uso de SSDs em vez de discos r\u00edgidos comuns.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Atualmente, n\u00e3o existem bons exemplos de uma grande rede para um \u00fanico cluster.<\/strong><\/p>\n<p><\/p>\n<p>Principalmente, a comunidade de desenvolvedores e o grupo SIG-cluster est\u00e3o tentando entender como orquestrar clusters da mesma forma que o Kubernetes orquestra cont\u00eaineres.<\/p>\n<p><\/p>\n<h3 id=\"variant-1-federaciya-klasterov-s-kubefed\">Op\u00e7\u00e3o 1: federa\u00e7\u00e3o de clusters com kubefed.<\/h3>\n<p><\/p>\n<p>A resposta oficial do SIG-cluster \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, a nova vers\u00e3o do cliente de origem e operador da kube federation.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Foi a primeira vez que se tentou gerenciar uma cole\u00e7\u00e3o de clusters como um \u00fanico objeto usando a ferramenta de kube federation.<\/p>\n<p><\/p>\n<p>O come\u00e7o foi bom, mas no final o kube federation nunca se tornou popular, pois n\u00e3o suportava todos os recursos.<\/p>\n<p><\/p>\n<p>Ele suportava entregas unificadas e servi\u00e7os, mas, por exemplo, n\u00e3o os StatefulSets.<br \/>\nAl\u00e9m disso, a configura\u00e7\u00e3o da federa\u00e7\u00e3o era transmitida na forma de anota\u00e7\u00f5es e carecia de flexibilidade.<\/p>\n<p><\/p>\n<p><em>Imagine como poderia ser descrever a divis\u00e3o de r\u00e9plicas para cada cluster na federa\u00e7\u00e3o usando apenas anota\u00e7\u00f5es.<\/em><\/p>\n<p><\/p>\n<p><strong>Resultou em uma completa bagun\u00e7a.<\/strong><\/p>\n<p><\/p>\n<p>O SIG-cluster fez um grande trabalho ap\u00f3s o kubefed v1 e decidiu abordar o problema de outra forma.<\/p>\n<p><\/p>\n<p><strong>Em vez de anota\u00e7\u00f5es, decidiram lan\u00e7ar um controlador, que \u00e9 instalado nos clusters. Ele pode ser configurado usando defini\u00e7\u00f5es de recursos personalizados (Custom Resource Definition, CRD).<\/strong><\/p>\n<p><\/p>\n<p>Para cada recurso que far\u00e1 parte da federa\u00e7\u00e3o, voc\u00ea tem uma defini\u00e7\u00e3o personalizada de CRD composta por tr\u00eas se\u00e7\u00f5es:<\/p>\n<p><\/p>\n<ul>\n<li>defini\u00e7\u00e3o padr\u00e3o de recurso, como um deployment;<\/li>\n<li>se\u00e7\u00e3o <code>placement<\/code>, onde voc\u00ea define como o recurso ser\u00e1 distribu\u00eddo na federa\u00e7\u00e3o;<\/li>\n<li>se\u00e7\u00e3o <code>override<\/code>, onde para um recurso espec\u00edfico voc\u00ea pode sobrescrever o peso e os par\u00e2metros de placement.<\/li>\n<\/ul>\n<p><\/p>\n<p>Aqui est\u00e1 um exemplo de entrega combinada com as se\u00e7\u00f5es placement e 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>Como voc\u00ea pode ver, a entrega est\u00e1 distribu\u00edda entre dois clusters: <code>cluster1<\/code> e <code>cluster2<\/code>.<\/p>\n<p><\/p>\n<p>O primeiro cluster fornece tr\u00eas r\u00e9plicas, enquanto o segundo tem o valor definido como 5.<\/p>\n<p><\/p>\n<p>Se voc\u00ea precisar de mais controle sobre o n\u00famero de r\u00e9plicas, o kubefed2 oferece um novo objeto ReplicaSchedulingPreference, onde as r\u00e9plicas podem ser distribu\u00eddas conforme o peso:<\/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>A estrutura do CRD e do API ainda n\u00e3o est\u00e1 totalmente pronta, e o reposit\u00f3rio oficial do projeto est\u00e1 em ativo desenvolvimento.<\/p>\n<p><\/p>\n<p><strong>Fique de olho no kubefed2, mas lembre-se que ele ainda n\u00e3o \u00e9 adequado para um ambiente de produ\u00e7\u00e3o.<\/strong><\/p>\n<p><\/p>\n<p>Saiba mais sobre kubefed2 no <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/12\/12\/kubernetes-federation-evolution\/\">artigo oficial sobre kubefed2<\/a><\/noindex> no blog sobre Kubernetes e no <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">reposit\u00f3rio oficial do projeto kubefed<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-2-obedinenie-klasterov-v-stile-bookingcom\">Op\u00e7\u00e3o 2: combina\u00e7\u00e3o de clusters no estilo Booking.com<\/h3>\n<p><\/p>\n<p>Os desenvolvedores do Booking.com n\u00e3o trabalharam no kubefed v2, mas criaram o Shipper - um operador para entrega em m\u00faltiplos clusters, em v\u00e1rias regi\u00f5es e em diversas nuvens.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> \u00e9 um pouco semelhante ao kubefed2.<\/p>\n<p><\/p>\n<p>Ambas as ferramentas permitem configurar a estrat\u00e9gia de deploy em m\u00faltiplos clusters (quais clusters s\u00e3o usados e quantas r\u00e9plicas eles t\u00eam).<\/p>\n<p><\/p>\n<p>Mas <strong>A tarefa do Shipper \u00e9 reduzir o risco de erros durante a entrega.<\/strong><\/p>\n<p><\/p>\n<p>No Shipper, voc\u00ea pode definir uma s\u00e9rie de etapas que descrevem a divis\u00e3o das r\u00e9plicas entre o deployment anterior e o atual, al\u00e9m do volume de tr\u00e1fego que est\u00e1 entrando.<\/p>\n<p><\/p>\n<p>Quando voc\u00ea envia um recurso para um cluster, o controlador Shipper realiza essa altera\u00e7\u00e3o passo a passo em todos os clusters combinados.<\/p>\n<p><\/p>\n<p><em>Al\u00e9m disso, o Shipper \u00e9 bastante limitado.<\/em><\/p>\n<p><\/p>\n<p>Por exemplo, <strong>ele aceita gr\u00e1ficos Helm como entrada.<\/strong> e n\u00e3o suporta recursos vanilla.<br \/>\nEm termos gerais, o Shipper funciona da seguinte maneira.<\/p>\n<p><\/p>\n<p>Em vez da entrega padr\u00e3o, \u00e9 necess\u00e1rio criar um recurso de aplicativo que inclua o 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>O Shipper \u00e9 uma boa op\u00e7\u00e3o para gerenciar v\u00e1rios clusters, mas sua liga\u00e7\u00e3o estreita com o Helm apenas atrapalha.<\/strong><\/p>\n<p><\/p>\n<p><em>E se todos n\u00f3s migr\u00e1ssemos do Helm para <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/05\/29\/introducing-kustomize-template-free-configuration-customization-for-kubernetes\/\">(a prop\u00f3sito, seu desenvolvimento agora \u00e9 feito em um reposit\u00f3rio separado), ou seja, para processar arquivos YAML adicionais de diret\u00f3rios especiais de kustomization (detalhes sobre seu uso podem ser encontrados em<\/a><\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deepmind\/kapitan\">kapitan<\/a><\/noindex>?<\/em><\/p>\n<p><\/p>\n<p>Saiba mais sobre o Shipper e sua filosofia em <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/booking-com-infrastructure\/introducing-shipper-daf9244e3882\">este comunicado oficial \u00e0 imprensa<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Se voc\u00ea quiser explorar o c\u00f3digo, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">v\u00e1 para o reposit\u00f3rio oficial do projeto<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Op\u00e7\u00e3o 3: \"uni\u00e3o m\u00e1gica\" de clusters<\/h3>\n<p><\/p>\n<p>Kubefed v2 e Shipper trabalham com a federa\u00e7\u00e3o de clusters, fornecendo novos recursos aos clusters por meio de defini\u00e7\u00f5es de recursos personalizadas.<\/p>\n<p><\/p>\n<p><em>Mas e se voc\u00ea n\u00e3o quiser reescrever todas as entregas, StatefulSets, DaemonSets, etc., para a jun\u00e7\u00e3o?<\/em><\/p>\n<p><\/p>\n<p><em>Como incluir um cluster existente na federa\u00e7\u00e3o sem mudar o YAML?<\/em><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">o multi-cluster-scheduler \u00e9 um projeto Admirality<\/a><\/noindex>, que lida com cargas de trabalho de agendamento em clusters.<\/p>\n<p><\/p>\n<p>Mas em vez de criar uma nova maneira de interagir com o cluster e envolver recursos em defini\u00e7\u00f5es personalizadas, o multi-cluster-scheduler se incorpora ao ciclo de vida padr\u00e3o do Kubernetes e intercepta todas as chamadas que criam pods.<\/p>\n<p><\/p>\n<p><strong>Cada pod criado \u00e9 imediatamente substitu\u00eddo por um placeholder.<\/strong><\/p>\n<p><\/p>\n<blockquote><p>O multi-cluster-scheduler usa <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/\">web hooks para modificar o acesso<\/a><\/noindex>, a fim de interceptar a chamada e criar um pod placeholder ocioso.<\/p><\/blockquote>\n<p>O pod original passa por mais um ciclo de agendamento, onde, ap\u00f3s consultar toda a federa\u00e7\u00e3o, \u00e9 tomada uma decis\u00e3o sobre o local de coloca\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p>Finalmente, o pod \u00e9 entregue no cluster de destino.<\/p>\n<p><\/p>\n<p>No final, voc\u00ea termina com um pod extra que n\u00e3o faz nada, apenas ocupa espa\u00e7o.<\/p>\n<p><\/p>\n<p>A vantagem \u00e9 que voc\u00ea n\u00e3o teve que escrever novos recursos para a jun\u00e7\u00e3o das entregas.<\/p>\n<p><\/p>\n<p><strong>Cada recurso que cria um pod est\u00e1 automaticamente pronto para a jun\u00e7\u00e3o.<\/strong><\/p>\n<p><\/p>\n<p>Isso \u00e9 interessante, pois de repente voc\u00ea tem entregas distribu\u00eddas por v\u00e1rias regi\u00f5es, e nem percebeu. No entanto, isso \u00e9 bastante arriscado, pois tudo depende da magia.<\/p>\n<p><\/p>\n<p>Mas se o Shipper se esfor\u00e7a principalmente para mitigar as consequ\u00eancias das entregas, o multi-cluster-scheduler desempenha fun\u00e7\u00f5es mais gerais e, possivelmente, \u00e9 mais adequado para tarefas em lote.<\/p>\n<p><\/p>\n<p>Ele n\u00e3o possui um mecanismo avan\u00e7ado de entregas graduais.<\/p>\n<p><\/p>\n<p>Voc\u00ea pode saber mais sobre o multi-cluster-scheduler na <noindex>p\u00e1gina do reposit\u00f3rio oficial.<\/noindex>.<\/p>\n<p><\/p>\n<p>Se voc\u00ea quiser ler sobre o multi-cluster-scheduler em a\u00e7\u00e3o, a Admiralty tem um <noindex><a rel=\"nofollow\" href=\"https:\/\/admiralty.io\/blog\/running-argo-workflows-across-multiple-kubernetes-clusters\/\">caso interessante de aplica\u00e7\u00e3o com o Argo<\/a><\/noindex> \u2014 fluxos de trabalho, eventos, CI e CD do Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">Outras ferramentas e solu\u00e7\u00f5es<\/h3>\n<p><\/p>\n<p>Conectar e gerenciar m\u00faltiplos clusters \u00e9 uma tarefa complexa; n\u00e3o existe uma solu\u00e7\u00e3o universal.<\/p>\n<p><\/p>\n<p>Se voc\u00ea deseja explorar esse assunto em mais detalhes, aqui est\u00e3o alguns recursos:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/submariner.io\/\">Submariner da Rancher<\/a><\/noindex> \u2014 uma ferramenta que conecta redes overlay de diferentes clusters Kubernetes.<\/li>\n<li>A rede de varejo Target utiliza <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix em combina\u00e7\u00e3o com o Spinnaker para orquestrar implanta\u00e7\u00f5es em m\u00faltiplos clusters.<\/a><\/noindex>.<\/li>\n<li>Tente usar IPV6 e <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">uma rede \u00fanica em v\u00e1rias regi\u00f5es.<\/a><\/noindex>.<\/li>\n<li>Voc\u00ea pode usar uma service mesh, como <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio, para conectar v\u00e1rios clusters.<\/a><\/noindex>.<\/li>\n<li>O Cilium, um plugin de interface de rede para cont\u00eaineres, oferece <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">a fun\u00e7\u00e3o de cluster mesh<\/a><\/noindex>, que permite combinar v\u00e1rios clusters.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vot-i-vse-na-segodnya\">\u00c9 isso por hoje.<\/h3>\n<p><\/p>\n<p><em>Obrigado por ler at\u00e9 o final!<\/em><\/p>\n<p><\/p>\n<p>Se voc\u00ea souber como conectar v\u00e1rios clusters de forma mais eficaz, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">nos conte.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Adicionaremos seu m\u00e9todo aos links.<\/p>\n<p><\/p>\n<p>Agradecimentos especiais a Chris Nesbitt-Smith (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/chrisns\">Chris Nesbitt-Smith<\/a><\/noindex>) e Vincent De Smet (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/so0k\">Vincent De Smet<\/a><\/noindex>) (engenheiro de confiabilidade na <noindex><a rel=\"nofollow\" href=\"https:\/\/swatmobile.io\/\">swatmobile.io<\/a><\/noindex>) por ler o artigo e compartilhar informa\u00e7\u00f5es \u00fateis sobre como a federa\u00e7\u00e3o funciona.<\/p>\n<p>Fonte: <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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Como conectar clusters Kubernetes em diferentes data centers | ProHoster","description":"Bem-vindo \u00e0 s\u00e9rie.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/34825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=34825"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/34825\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/26226"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=34825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=34825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=34825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}