{"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\/fr\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","title":{"rendered":"Comment connecter des clusters Kubernetes dans diff\u00e9rents centres de donn\u00e9es","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Comment connecter des clusters Kubernetes dans diff\u00e9rents centres de donn\u00e9es\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Bienvenue dans cette s\u00e9rie de guides rapides sur Kubernetes.<\/strong> C'est une chronique r\u00e9guli\u00e8re avec les questions les plus int\u00e9ressantes que nous recevons en ligne et lors de nos formations. R\u00e9pond \u00e0 l'expert Kubernetes.<\/p>\n<p><\/p>\n<blockquote><p>L'expert d'aujourd'hui est Daniele Polencic (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/danielepolencic\">Daniele Polencic<\/a><\/noindex>). Daniele travaille comme instructeur et d\u00e9veloppeur logiciel chez <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Si vous souhaitez obtenir une r\u00e9ponse \u00e0 votre question dans le prochain post, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">contactez-nous par e-mail<\/a><\/noindex> ou sur <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/learnk8s\">Twitter : @learnk8s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Vous avez manqu\u00e9 les posts pr\u00e9c\u00e9dents ? <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/visualise-dependencies-kubernetes\">Cherchez-les ici<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kak-soedinit-klastery-kubernetes-v-raznyh-data-centrah\">Comment connecter des clusters Kubernetes dans diff\u00e9rents centres de donn\u00e9es ?<\/h3>\n<p><\/p>\n<blockquote><p><strong>En r\u00e9sum\u00e9<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">Kubefed v2 sortira bient\u00f4t<\/a><\/noindex>, et je vous recommande \u00e9galement de lire sur le <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">projet Shipper<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">multi-cluster-scheduler<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Il est assez courant que l'infrastructure soit r\u00e9pliqu\u00e9e et distribu\u00e9e sur diff\u00e9rentes r\u00e9gions, surtout dans des environnements contr\u00f4l\u00e9s.<\/p><\/blockquote>\n<p><strong>Si une r\u00e9gion est inaccessible, le trafic est redirig\u00e9 vers une autre pour \u00e9viter les interruptions.<\/strong><\/p>\n<p><\/p>\n<p>Avec Kubernetes, vous pouvez utiliser une strat\u00e9gie similaire et r\u00e9partir les charges de travail sur diff\u00e9rentes r\u00e9gions.<\/p>\n<p><\/p>\n<p>Vous pouvez avoir un ou plusieurs clusters par \u00e9quipe, r\u00e9gion, environnement ou une combinaison de ces \u00e9l\u00e9ments.<\/p>\n<p><\/p>\n<p>Vos clusters peuvent \u00eatre h\u00e9berg\u00e9s dans diff\u00e9rents clouds et dans un environnement local.<\/p>\n<p><\/p>\n<p><em>Mais comment planifier l'infrastructure pour un tel \u00e9talement g\u00e9ographique ?<br \/>\nFaut-il cr\u00e9er un grand cluster sur plusieurs clouds via un r\u00e9seau unique ?<br \/>\nOu cr\u00e9er de nombreux petits clusters et trouver un moyen de les contr\u00f4ler et de les synchroniser ?<\/em><\/p>\n<p><\/p>\n<h3 id=\"odin-rukovodyaschiy-klaster\">Un cluster centralis\u00e9<\/h3>\n<p><\/p>\n<p><em>Cr\u00e9er un seul cluster sur un r\u00e9seau unique n'est pas si simple.<\/em><\/p>\n<p><\/p>\n<p>Imaginez, vous avez un incident, la connectivit\u00e9 entre les segments du cluster est perdue.<\/p>\n<p><\/p>\n<p>Si vous avez un serveur ma\u00eetre, la moiti\u00e9 des ressources ne pourra pas recevoir de nouvelles commandes, car elles ne parviennent pas \u00e0 se connecter au ma\u00eetre.<\/p>\n<p><\/p>\n<p>Et \u00e0 cela, vous avez des anciennes tables de routage (<code>kube-proxy<\/code> ne peut pas charger de nouvelles) et aucun pod suppl\u00e9mentaire (kubelet ne peut pas demander de mises \u00e0 jour).<\/p>\n<p><\/p>\n<p>Ce qui est encore pire, c'est que si Kubernetes ne voit pas un n\u0153ud, il le marque comme perdu et r\u00e9partit les pods manquants sur les n\u0153uds existants.<\/p>\n<p><\/p>\n<p><strong>En fin de compte, vous avez deux fois plus de pods.<\/strong><\/p>\n<p><\/p>\n<p>Si vous faites un serveur ma\u00eetre pour chaque r\u00e9gion, il y aura des probl\u00e8mes avec l'algorithme d'atteinte du consensus dans la base de donn\u00e9es etcd. (<em>note de l'\u00e9diteur \u2014 En r\u00e9alit\u00e9, la base de donn\u00e9es etcd n'a pas besoin d'\u00eatre sur les serveurs ma\u00eetres. Elle peut \u00eatre lanc\u00e9e sur un groupe s\u00e9par\u00e9 de serveurs dans une m\u00eame r\u00e9gion. Cela dit, cela cr\u00e9e un point de d\u00e9faillance pour le cluster. Mais c'est rapide.<\/em>)<\/p>\n<p><\/p>\n<p>etcd utilise <noindex><a rel=\"nofollow\" href=\"http:\/\/thesecretlivesofdata.com\/raft\/\">l'algorithme raft<\/a><\/noindex>, pour parvenir \u00e0 un consensus sur la valeur avant de l'\u00e9crire sur le disque.<br \/>\nEn d'autres termes, la majorit\u00e9 des instances doivent parvenir \u00e0 un consensus avant que l'\u00e9tat puisse \u00eatre \u00e9crit dans etcd.<\/p>\n<p><\/p>\n<p>Si le temps de latence entre les instances etcd augmente rapidement, comme dans le cas de trois instances etcd dans diff\u00e9rentes r\u00e9gions, il faut beaucoup de temps pour parvenir \u00e0 un consensus et \u00e9crire la valeur sur le disque.<br \/>\nCela se refl\u00e8te \u00e9galement sur les contr\u00f4leurs Kubernetes.<\/p>\n<p><\/p>\n<p>Le gestionnaire de contr\u00f4leurs a besoin de plus de temps pour d\u00e9tecter le changement et \u00e9crire la r\u00e9ponse dans la base de donn\u00e9es.<\/p>\n<p><\/p>\n<p>Et comme il n'y a pas un seul contr\u00f4leur, mais plusieurs, <strong>cela entra\u00eene une r\u00e9action en cha\u00eene et tout le cluster commence \u00e0 fonctionner tr\u00e8s lentement.<\/strong>.<\/p>\n<p><\/p>\n<p>etcd est si sensible \u00e0 la latence que <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/etcd\/docs\/latest\/faq.html#deployment\">la documentation officielle recommande d'utiliser des SSD au lieu de disques durs classiques.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Il n'existe actuellement pas de bons exemples de grands r\u00e9seaux pour un seul cluster.<\/strong><\/p>\n<p><\/p>\n<p>Principalement, la communaut\u00e9 des d\u00e9veloppeurs et le groupe SIG-cluster essaient de comprendre comment orchestrer des clusters comme Kubernetes orchestre des conteneurs.<\/p>\n<p><\/p>\n<h3 id=\"variant-1-federaciya-klasterov-s-kubefed\">Option 1 : f\u00e9d\u00e9ration de clusters avec kubefed<\/h3>\n<p><\/p>\n<p>La r\u00e9ponse officielle du SIG-cluster est \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, la nouvelle version du client open source et de l'op\u00e9rateur de kube federation.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>La premi\u00e8re tentative de gestion d'une collection de clusters comme un objet unique a \u00e9t\u00e9 r\u00e9alis\u00e9e \u00e0 l'aide de l'outil kube federation.<\/p>\n<p><\/p>\n<p>Le d\u00e9but \u00e9tait prometteur, mais finalement, kube federation n'est pas devenu populaire car il ne prenait pas en charge toutes les ressources.<\/p>\n<p><\/p>\n<p>Il prenait en charge les d\u00e9ploiements combin\u00e9s et les services, mais, par exemple, pas les StatefulSets.<br \/>\nDe plus, la configuration de la f\u00e9d\u00e9ration \u00e9tait transmise sous forme d'annotations et manquait de flexibilit\u00e9.<\/p>\n<p><\/p>\n<p><em>Imaginez comment d\u00e9crire le partage des r\u00e9plicas pour chaque cluster dans la f\u00e9d\u00e9ration \u00e0 l'aide d'annotations uniques.<\/em><\/p>\n<p><\/p>\n<p><strong>Cela a donn\u00e9 un v\u00e9ritable fouillis.<\/strong><\/p>\n<p><\/p>\n<p>Le SIG-cluster a accompli un grand travail apr\u00e8s kubefed v1 et a d\u00e9cid\u00e9 d'aborder le probl\u00e8me sous un autre angle.<\/p>\n<p><\/p>\n<p><strong>Au lieu d'annotations, ils ont choisi de publier un contr\u00f4leur qui s'installe sur les clusters. Celui-ci peut \u00eatre configur\u00e9 \u00e0 l'aide de d\u00e9finitions de ressources personnalis\u00e9es (Custom Resource Definition, CRD).<\/strong><\/p>\n<p><\/p>\n<p>Pour chaque ressource qui fera partie de la f\u00e9d\u00e9ration, vous avez une d\u00e9finition CRD personnalis\u00e9e en trois sections :<\/p>\n<p><\/p>\n<ul>\n<li>la d\u00e9finition de ressource standard, par exemple un d\u00e9ploiement ;<\/li>\n<li>avec un commutateur de pseudo-classe <code>placement<\/code>, o\u00f9 vous d\u00e9finissez comment la ressource sera distribu\u00e9e dans la f\u00e9d\u00e9ration ;<\/li>\n<li>avec un commutateur de pseudo-classe <code>override<\/code>, o\u00f9 pour une ressource sp\u00e9cifique, vous pouvez red\u00e9finir le poids et les param\u00e8tres du placement.<\/li>\n<\/ul>\n<p><\/p>\n<p>Voici un exemple de d\u00e9ploiement f\u00e9d\u00e9r\u00e9 avec les sections placement et 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>Comme vous pouvez le voir, le d\u00e9ploiement est r\u00e9parti sur deux clusters : <code>cluster1<\/code> et <code>cluster2<\/code>.<\/p>\n<p><\/p>\n<p>Le premier cluster fournit trois r\u00e9pliques, tandis que le deuxi\u00e8me en a sp\u00e9cifi\u00e9 cinq.<\/p>\n<p><\/p>\n<p>Si vous avez besoin de plus de contr\u00f4le sur le nombre de r\u00e9pliques, kubefed2 fournit un nouvel objet ReplicaSchedulingPreference o\u00f9 les r\u00e9pliques peuvent \u00eatre r\u00e9parties en fonction du poids :<\/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>La structure CRD et l'API ne sont pas encore tout \u00e0 fait pr\u00eates, et un travail actif est en cours dans le d\u00e9p\u00f4t officiel du projet.<\/p>\n<p><\/p>\n<p><strong>Suivez kubefed2, mais gardez \u00e0 l'esprit qu'il n'est pas encore pr\u00eat pour un environnement de production.<\/strong><\/p>\n<p><\/p>\n<p>D\u00e9couvrez-en plus sur kubefed2 dans <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/12\/12\/kubernetes-federation-evolution\/\">l'article officiel sur kubefed2<\/a><\/noindex> dans le blog Kubernetes et dans <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">le d\u00e9p\u00f4t officiel du projet kubefed<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-2-obedinenie-klasterov-v-stile-bookingcom\">Option 2 : fusion des clusters \u00e0 la fa\u00e7on de Booking.com<\/h3>\n<p><\/p>\n<p>Les d\u00e9veloppeurs de Booking.com ne se sont pas occup\u00e9s de kubefed v2, mais ont cr\u00e9\u00e9 Shipper \u2014 un op\u00e9rateur pour la livraison sur plusieurs clusters, dans plusieurs r\u00e9gions et sur plusieurs clouds.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">projet Shipper<\/a><\/noindex> qui ressemble \u00e0 kubefed2.<\/p>\n<p><\/p>\n<p>Les deux outils permettent de configurer la strat\u00e9gie de d\u00e9ploiement sur plusieurs clusters (quels clusters sont utilis\u00e9s et combien de r\u00e9pliques ils ont).<\/p>\n<p><\/p>\n<p>Mais <strong>la t\u00e2che de Shipper est de r\u00e9duire le risque d'erreurs lors du d\u00e9ploiement.<\/strong><\/p>\n<p><\/p>\n<p>Avec Shipper, vous pouvez d\u00e9finir plusieurs \u00e9tapes d\u00e9crivant la r\u00e9partition des r\u00e9pliques entre le d\u00e9ploiement pr\u00e9c\u00e9dent et actuel ainsi que le volume de trafic entrant.<\/p>\n<p><\/p>\n<p>Lorsque vous envoyez une ressource dans un cluster, le contr\u00f4leur Shipper d\u00e9ploie progressivement ce changement sur tous les clusters f\u00e9d\u00e9r\u00e9s.<\/p>\n<p><\/p>\n<p><em>Et Shipper est aussi tr\u00e8s limit\u00e9.<\/em><\/p>\n<p><\/p>\n<p>Par exemple, <strong>il accepte les charts Helm comme entr\u00e9es<\/strong> et ne prend pas en charge les ressources vanilla.<br \/>\nEn gros, Shipper fonctionne de la mani\u00e8re suivante.<\/p>\n<p><\/p>\n<p>Au lieu de la livraison standard, vous devez cr\u00e9er une ressource d'application, comprenant un 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 est une bonne option pour g\u00e9rer plusieurs clusters, mais son lien \u00e9troit avec Helm ne fait que compliquer les choses.<\/strong><\/p>\n<p><\/p>\n<p><em>Et si nous passions tous de Helm \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/05\/29\/introducing-kustomize-template-free-configuration-customization-for-kubernetes\/\">kustomize<\/a><\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deepmind\/kapitan\">kapitan<\/a><\/noindex>?<\/em><\/p>\n<p><\/p>\n<p>D\u00e9couvrez-en plus sur Shipper et sa philosophie dans <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/booking-com-infrastructure\/introducing-shipper-daf9244e3882\">ce communiqu\u00e9 de presse officiel<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Si vous souhaitez fouiller dans le code, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">direction le d\u00e9p\u00f4t officiel du projet<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Option 3 : \u00ab l'union magique \u00bb des clusters<\/h3>\n<p><\/p>\n<p>Kubefed v2 et Shipper fonctionnent avec la f\u00e9d\u00e9ration de clusters, fournissant aux clusters de nouvelles ressources via une d\u00e9finition de ressources personnalis\u00e9e.<\/p>\n<p><\/p>\n<p><em>Mais que faire si vous ne souhaitez pas r\u00e9\u00e9crire toutes les livraisons, StatefulSets, DaemonSets, etc. pour la f\u00e9d\u00e9ration ?<\/em><\/p>\n<p><\/p>\n<p><em>Comment inclure un cluster existant dans la f\u00e9d\u00e9ration sans toucher au YAML ?<\/em><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">multi-cluster-scheduler est un projet d'Admirality<\/a><\/noindex>, qui s'occupe des charges de travail en mati\u00e8re de planification dans les clusters.<\/p>\n<p><\/p>\n<p>Mais au lieu de trouver un nouveau moyen d'interagir avec le cluster et d'envelopper les ressources dans des d\u00e9finitions personnalis\u00e9es, multi-cluster-scheduler s'int\u00e8gre au cycle de vie standard de Kubernetes et intercepte tous les appels qui cr\u00e9ent des pods.<\/p>\n<p><\/p>\n<p><strong>Chaque pod cr\u00e9\u00e9 est imm\u00e9diatement remplac\u00e9 par un espace r\u00e9serv\u00e9.<\/strong><\/p>\n<p><\/p>\n<blockquote><p>multi-cluster-scheduler utilise <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/\">des webhooks pour modifier l'acc\u00e8s<\/a><\/noindex>, afin d'intercepter l'appel et de cr\u00e9er un pod vide inactif.<\/p><\/blockquote>\n<p>Le pod original passe par un autre cycle de planification, o\u00f9 apr\u00e8s sondage de toute la f\u00e9d\u00e9ration, une d\u00e9cision est prise quant au placement.<\/p>\n<p><\/p>\n<p>Enfin, le pod est livr\u00e9 au cluster cible.<\/p>\n<p><\/p>\n<p>Au final, vous vous retrouvez avec un pod suppl\u00e9mentaire qui ne fait rien, juste un peu de place.<\/p>\n<p><\/p>\n<p>L'avantage est que vous n'avez pas eu besoin d'\u00e9crire de nouvelles ressources pour f\u00e9d\u00e9rer les livraisons.<\/p>\n<p><\/p>\n<p><strong>Chaque ressource qui cr\u00e9e un pod est automatiquement pr\u00eate pour la f\u00e9d\u00e9ration.<\/strong><\/p>\n<p><\/p>\n<p>C'est int\u00e9ressant, car vous avez soudainement des livraisons r\u00e9parties sur plusieurs r\u00e9gions, et vous ne l'avez m\u00eame pas remarqu\u00e9. Toutefois, c'est assez risqu\u00e9, car tout repose ici sur de la magie.<\/p>\n<p><\/p>\n<p>Mais si Shipper essaie principalement d'att\u00e9nuer les cons\u00e9quences des livraisons, le multi-cluster-scheduler s'occupe de t\u00e2ches plus g\u00e9n\u00e9rales et peut-\u00eatre est-il mieux adapt\u00e9 aux travaux par lots.<\/p>\n<p><\/p>\n<p>Il n'a pas de m\u00e9canisme avanc\u00e9 de livraisons progressives.<\/p>\n<p><\/p>\n<p>Pour en savoir plus sur le multi-cluster-scheduler, vous pouvez consulter <noindex>la page du d\u00e9p\u00f4t officiel.<\/noindex>.<\/p>\n<p><\/p>\n<p>Si vous souhaitez lire sur le multi-cluster-scheduler en action, Admiralty a un <noindex><a rel=\"nofollow\" href=\"https:\/\/admiralty.io\/blog\/running-argo-workflows-across-multiple-kubernetes-clusters\/\">cas d'utilisation int\u00e9ressant avec Argo<\/a><\/noindex> \u2014 des workflows, des \u00e9v\u00e9nements, CI et CD Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">D'autres outils et solutions<\/h3>\n<p><\/p>\n<p>Connecter et g\u00e9rer plusieurs clusters est une t\u00e2che complexe, il n'existe pas de solution universelle.<\/p>\n<p><\/p>\n<p>Si vous voulez explorer ce sujet plus en d\u00e9tail, voici quelques ressources :<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/submariner.io\/\">Submariner de Rancher<\/a><\/noindex> \u2014 un outil qui connecte les r\u00e9seaux overlay de diff\u00e9rents clusters Kubernetes.<\/li>\n<li>La cha\u00eene de magasins Target utilise <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix en combinaison avec Spinnaker pour orchestrer le d\u00e9ploiement sur plusieurs clusters.<\/a><\/noindex>.<\/li>\n<li>Essayez d'utiliser IPV6 et <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">un r\u00e9seau unique dans plusieurs r\u00e9gions.<\/a><\/noindex>.<\/li>\n<li>Vous pouvez utiliser un service mesh, par exemple <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio pour connecter plusieurs clusters.<\/a><\/noindex>.<\/li>\n<li>Cilium, un plugin pour l'interface r\u00e9seau des conteneurs, propose <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">une fonction de cluster mesh<\/a><\/noindex>, qui permet de combiner plusieurs clusters.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vot-i-vse-na-segodnya\">C'est tout pour aujourd'hui.<\/h3>\n<p><\/p>\n<p><em>Merci d'avoir lu jusqu'\u00e0 la fin !<\/em><\/p>\n<p><\/p>\n<p>Si vous connaissez une m\u00e9thode plus efficace pour connecter plusieurs clusters, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">faites-le nous savoir.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Nous ajouterons votre m\u00e9thode aux liens.<\/p>\n<p><\/p>\n<p>Remerciements sp\u00e9ciaux \u00e0 Chris Nesbitt-Smith (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/chrisns\">Chris Nesbitt-Smith<\/a><\/noindex>) et Vincent De Smet (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/so0k\">Vincent De Smet<\/a><\/noindex>) (ing\u00e9nieur de fiabilit\u00e9 chez <noindex><a rel=\"nofollow\" href=\"https:\/\/swatmobile.io\/\">swatmobile.io<\/a><\/noindex>) pour avoir lu l'article et partag\u00e9 des informations utiles sur le fonctionnement de la f\u00e9d\u00e9ration.<\/p>\n<p>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Comment connecter des clusters Kubernetes dans diff\u00e9rents centres de donn\u00e9es | ProHoster","description":"Bienvenue dans la s\u00e9rie.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/34825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=34825"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/34825\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/26226"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=34825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=34825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=34825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}