{"id":80076,"date":"2020-05-03T01:42:34","date_gmt":"2020-05-02T23:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt"},"modified":"2020-05-03T01:42:34","modified_gmt":"2020-05-02T23:42:34","slug":"proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","title":{"rendered":"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Note de traduction.<\/b>: ce mat\u00e9riel vient d'un projet \u00e9ducatif <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">learnk8s<\/a><\/noindex> \u2014 une r\u00e9ponse \u00e0 une question populaire lors de la conception d'infrastructure bas\u00e9e sur Kubernetes. Nous esp\u00e9rons que les descriptions d\u00e9taill\u00e9es des avantages et des inconv\u00e9nients de chaque option aideront \u00e0 faire le meilleur choix pour votre projet.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/d3cc3b7e686e39032b1f02f3e8b6c46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>TL;DR<\/b>: un m\u00eame ensemble de charges de travail peut \u00eatre ex\u00e9cut\u00e9 sur plusieurs grands clusters (chaque cluster ayant un grand nombre de workloads) ou sur de nombreux petits (avec un petit nombre de charges dans chaque cluster).<\/p>\n<p>Voici un tableau qui \u00e9value les avantages et les inconv\u00e9nients de chaque approche :<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/ab5b5fefc97c3befddbaeb0791f8a90d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLors de l'utilisation de Kubernetes comme plateforme pour l'exploitation des applications, quelques questions fondamentales se posent souvent concernant la configuration des clusters :<\/p>\n<ul>\n<li> <i>Combien de clusters utiliser ?<\/i><\/li>\n<li> <i>Quelle taille leur donner ?<\/i><\/li>\n<li> <i>Que doit inclure chaque cluster ?<\/i><\/li>\n<\/ul>\n<p>\nDans cet article, je vais tenter de r\u00e9pondre \u00e0 toutes ces questions en analysant les avantages et les inconv\u00e9nients de chaque approche.<\/p>\n<h2>\u00c9nonc\u00e9 du probl\u00e8me<\/h2>\n<p>\nEn tant que cr\u00e9ateur de logiciels, vous d\u00e9veloppez s\u00fbrement et exploitez simultan\u00e9ment de nombreuses applications.<\/p>\n<p>De plus, de nombreux exemples de ces applications sont probablement lanc\u00e9s dans divers environnements \u2014 par exemple, cela peut inclure <i>dev<\/i>, <i>test<\/i> et <i>prod<\/i>.<\/p>\n<p>Cela donne donc une matrice compl\u00e8te d'applications et d'environnements :<\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/f2a811fa82e1e433463ba25d29f837e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Applications et environnements<\/i><\/p>\n<p>Dans l'exemple ci-dessus, 3 applications et 3 environnements sont pr\u00e9sent\u00e9s, ce qui donne au total 9 options possibles.<\/p>\n<p>Chaque instance d'application repr\u00e9sente une unit\u00e9 de d\u00e9ploiement autonome, qui peut \u00eatre manipul\u00e9e ind\u00e9pendamment des autres.<\/p>\n<p><i>Veuillez noter que <b>instance d'application<\/b> peut \u00eatre compos\u00e9e de plusieurs <b>sont h\u00e9berg\u00e9s sur le service<\/b>, telles que le frontend, le backend, la base de donn\u00e9es, etc. Dans le cas d'une application microservices, l'instance inclura tous les microservices.<\/i><\/p>\n<p>En cons\u00e9quence, les utilisateurs de Kubernetes se posent plusieurs questions :<\/p>\n<ul>\n<li> Faut-il placer toutes les instances d'application dans un seul cluster ?<\/li>\n<li> Faut-il cr\u00e9er un cluster distinct pour chaque instance d'application ?<\/li>\n<li> Ou bien, peut-\u00eatre, devrions-nous opter pour une combinaison des approches mentionn\u00e9es ci-dessus ?<\/li>\n<\/ul>\n<p>\nToutes ces options sont tout \u00e0 fait viables, car Kubernetes est un syst\u00e8me flexible qui ne limite pas les possibilit\u00e9s de l'utilisateur.<\/p>\n<p>Voici quelques-unes des voies possibles :<\/p>\n<ul>\n<li> un grand cluster commun;<\/li>\n<li> un grand nombre de petits clusters sp\u00e9cialis\u00e9s;<\/li>\n<li> un cluster par application;<\/li>\n<li> un cluster par environnement.<\/li>\n<\/ul>\n<p>\nComme indiqu\u00e9 ci-dessous, les deux premi\u00e8res approches se situent aux extr\u00e9mit\u00e9s oppos\u00e9es de l'\u00e9chelle des options :<\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/99b8fd0d1e4173705e7996cf8ccb6eec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>D'un c\u00f4t\u00e9, plusieurs grands clusters (\u00e0 gauche) et de l'autre, de nombreux petits (\u00e0 droite)<\/i><\/p>\n<p><i>En g\u00e9n\u00e9ral, un cluster est consid\u00e9r\u00e9 comme \u00ab plus grand \u00bb qu'un autre s'il a une somme plus \u00e9lev\u00e9e de n\u0153uds et de pods. Par exemple, un cluster avec 10 n\u0153uds et 100 pods est plus grand qu'un cluster avec 1 n\u0153ud et 10 pods.<\/i><\/p>\n<p>Eh bien, commen\u00e7ons !<\/p>\n<h2>1. Un grand cluster partag\u00e9<\/h2>\n<p>\nLa premi\u00e8re option est de placer toutes les charges de travail dans un seul cluster :<\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/283fc3c3f5ccb40a157ccff600628114.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un grand cluster<\/i><\/p>\n<p>Dans ce cadre, le cluster est utilis\u00e9 comme une <b>plateforme d'infrastructure polyvalente<\/b> \u2014 tout ce dont vous avez besoin est simplement d\u00e9ploy\u00e9 dans le cluster Kubernetes existant.<\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">Namespaces<\/a><\/noindex> Kubernetes permet de s\u00e9parer logiquement les parties du cluster les unes des autres, de sorte qu'un espace de noms distinct puisse \u00eatre utilis\u00e9 pour chaque instance d'application.<\/i><\/p>\n<p><i>Examinons les avantages et les inconv\u00e9nients de cette approche.<\/i><\/p>\n<h3>+ Utilisation efficace des ressources<\/h3>\n<p>\nDans le cas d'un cluster unique, une seule copie de toutes les ressources n\u00e9cessaires au fonctionnement et \u00e0 la gestion du cluster Kubernetes sera requise.<\/p>\n<p>Par exemple, cela est vrai pour les n\u0153uds ma\u00eetres. En g\u00e9n\u00e9ral, chaque cluster Kubernetes dispose de 3 n\u0153uds ma\u00eetres, donc pour un seul cluster, leur nombre restera le m\u00eame (en comparaison, 10 clusters n\u00e9cessiteront 30 n\u0153uds ma\u00eetres).<\/p>\n<p>Cette subtilit\u00e9 s'applique \u00e9galement \u00e0 d'autres services fonctionnant au niveau de l'ensemble du cluster, tels que les \u00e9quilibreurs de charge, les contr\u00f4leurs Ingress, les syst\u00e8mes d'authentification, de journalisation et de surveillance.<\/p>\n<p>Dans un cluster unifi\u00e9, tous ces services peuvent \u00eatre utilis\u00e9s simultan\u00e9ment pour toutes les charges de travail (pas besoin de cr\u00e9er des copies, comme dans le cas de plusieurs clusters).<\/p>\n<h3>+ \u00c9conomie<\/h3>\n<p>\nEn cons\u00e9quence de ce qui pr\u00e9c\u00e8de, un nombre r\u00e9duit de clusters co\u00fbte g\u00e9n\u00e9ralement moins cher, car il y a moins de d\u00e9penses li\u00e9es aux ressources redondantes.<\/p>\n<p>Cela est particuli\u00e8rement vrai pour les n\u0153uds ma\u00eetres, qui peuvent co\u00fbter cher, quelle que soit la solution d'h\u00e9bergement (sur site ou dans le cloud).<\/p>\n<p>Certains services Kubernetes g\u00e9r\u00e9s, tels que <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">Google Kubernetes Engine (GKE)<\/a><\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/\">Azure Kubernetes Service (AKS)<\/a><\/noindex>, fournissant une couche de gestion gratuitement. Dans ce cas, la question des co\u00fbts est moins pressante.<\/p>\n<p>Il existe \u00e9galement des services g\u00e9r\u00e9s qui facturent un tarif fixe pour le fonctionnement de chaque cluster Kubernetes (par exemple, <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service, EKS<\/a><\/noindex>).<\/p>\n<h3>+ Administration efficace<\/h3>\n<p>\nG\u00e9rer un seul cluster est plus facile que plusieurs.<\/p>\n<p>L'administration peut inclure les t\u00e2ches suivantes :<\/p>\n<ul>\n<li> mise \u00e0 jour de la version de Kubernetes ;<\/li>\n<li> configuration du pipeline CI\/CD ;<\/li>\n<li> installation du plugin CNI ;<\/li>\n<li> configuration du syst\u00e8me d'authentification des utilisateurs ;<\/li>\n<li> installation du contr\u00f4leur d'acc\u00e8s ;<\/li>\n<\/ul>\n<p>\net bien d'autres\u2026<\/p>\n<p>Dans le cas d'un seul cluster, vous n'aurez \u00e0 le faire qu'une seule fois.<\/p>\n<p>Pour plusieurs clusters, les op\u00e9rations devront \u00eatre r\u00e9p\u00e9t\u00e9es plusieurs fois, ce qui n\u00e9cessitera probablement une certaine automatisation des processus et des outils pour assurer la coh\u00e9rence et l'uniformit\u00e9 des op\u00e9rations.<\/p>\n<p><i>Maintenant, quelques mots sur les inconv\u00e9nients.<\/i><\/p>\n<h3>\u2212 Point de d\u00e9faillance unique<\/h3>\n<p>\nEn cas de d\u00e9faillance <i>du seul<\/i> cluster, toutes les <i>tout<\/i> charges de travail cesseront de fonctionner !<\/p>\n<p>Il existe de nombreuses situations o\u00f9 quelque chose peut mal tourner :<\/p>\n<ul>\n<li> la mise \u00e0 jour de Kubernetes entra\u00eene des effets secondaires inattendus ;<\/li>\n<li> un composant faisant partie du cluster (comme le plugin CNI) ne fonctionne pas comme pr\u00e9vu ;<\/li>\n<li> un des composants du cluster est mal configur\u00e9 ;<\/li>\n<li> une d\u00e9faillance dans l'infrastructure sous-jacente.<\/li>\n<\/ul>\n<p>\nUn tel incident peut causer de graves dommages \u00e0 toutes les charges de travail h\u00e9berg\u00e9es dans le cluster partag\u00e9.<\/p>\n<h3>\u2212 Absence d'isolement strict<\/h3>\n<p>\nTravailler dans un cluster partag\u00e9 signifie que les applications partagent les ressources mat\u00e9rielles, les capacit\u00e9s r\u00e9seau et le syst\u00e8me d'exploitation sur les n\u0153uds du cluster.<\/p>\n<p>En un sens, deux conteneurs avec deux applications diff\u00e9rentes fonctionnant sur le m\u00eame n\u0153ud ressemblent \u00e0 deux processus ex\u00e9cut\u00e9s sur la m\u00eame machine sous un m\u00eame noyau OS.<\/p>\n<p><i>Les conteneurs Linux offrent une certaine forme d'isolement, mais cela n'est pas aussi robuste que ce que fourniraient, disons, des machines virtuelles. En essence, le processus dans un conteneur est le m\u00eame que le processus ex\u00e9cut\u00e9 dans le syst\u00e8me d'exploitation h\u00f4te.<\/i><\/p>\n<p>Cela peut poser des probl\u00e8mes de s\u00e9curit\u00e9 : une telle organisation permet th\u00e9oriquement \u00e0 des applications non li\u00e9es d'interagir entre elles (intentionnellement ou accidentellement).<\/p>\n<p>De plus, toutes les charges de travail dans le cluster Kubernetes partagent certaines ressources de cluster communes, telles que <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\">DNS<\/a><\/noindex> \u2014 cela permet aux applications de trouver les services d'autres applications dans le cluster.<\/p>\n<p><i>Tous les points mentionn\u00e9s ci-dessus peuvent avoir des significations diff\u00e9rentes selon les exigences de s\u00e9curit\u00e9 des applications.<\/i><\/p>\n<p>Kubernetes fournit divers outils pour pr\u00e9venir les probl\u00e8mes de s\u00e9curit\u00e9, tels que <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\">PodSecurityPolicies<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">NetworkPolicies<\/a><\/noindex>. Cependant, une configuration correcte n\u00e9cessite une certaine exp\u00e9rience et, de plus, ils ne peuvent pas combler compl\u00e8tement toutes les failles de s\u00e9curit\u00e9.<\/p>\n<p>Il est toujours important de garder \u00e0 l'esprit que Kubernetes a \u00e9t\u00e9 initialement con\u00e7u pour <i>un partage<\/i>, pas pour <i>l'isolement et la s\u00e9curit\u00e9<\/i>.<\/p>\n<h3>\u2212 Absence de multi-tenancy stricte<\/h3>\n<p>\n\u00c9tant donn\u00e9 l'abondance de ressources communes dans le cluster Kubernetes, il existe de nombreuses fa\u00e7ons pour diff\u00e9rentes applications de se \u00ab marcher sur les pieds \u00bb.<\/p>\n<p>Par exemple, une application peut monopoliser une ressource commune (comme un processeur ou de la m\u00e9moire) et priver d'autres applications fonctionnant sur le m\u00eame n\u0153ud de l'acc\u00e8s \u00e0 celle-ci.<\/p>\n<p>Kubernetes fournit divers m\u00e9canismes pour contr\u00f4ler ce comportement, tels que <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-compute-resources-container\/\">les demandes de ressources et les limites<\/a><\/noindex> <i>((voir aussi l'article \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\"> Limites CPU et throttling agressif dans Kubernetes <\/a><\/noindex>\u00bb \u2014 note du trad.)<\/i>, <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/\">ResourceQuotas<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/\">LimitRanges<\/a><\/noindex>. Cependant, comme en mati\u00e8re de s\u00e9curit\u00e9, leur configuration est assez complexe et ne peut pas pr\u00e9venir compl\u00e8tement tous les effets secondaires impr\u00e9vus.<\/p>\n<h3>\u2212 Un grand nombre d'utilisateurs<\/h3>\n<p>\nDans le cas d'un seul cluster, il faut y donner acc\u00e8s \u00e0 de nombreuses personnes. Plus leur nombre est important, plus le risque qu'ils \u00ab cassent \u00bb quelque chose est \u00e9lev\u00e9.<\/p>\n<p>\u00c0 l'int\u00e9rieur du cluster, il est possible de contr\u00f4ler qui peut faire quoi \u00e0 l'aide de <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">la gestion des acc\u00e8s bas\u00e9e sur les r\u00f4les (RBAC)<\/a><\/noindex> <i>((voir l'article \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470503\/\"> Utilisateurs et autorisation RBAC dans Kubernetes <\/a><\/noindex>\u00bb \u2014 note du trad.)<\/i>. Cependant, cela n'emp\u00eache pas les utilisateurs de \u00ab casser \u00bb quelque chose dans les limites de leur zone de responsabilit\u00e9.<\/p>\n<h3>\u2212 Les clusters ne peuvent pas cro\u00eetre ind\u00e9finiment<\/h3>\n<p>\nUn cluster utilis\u00e9 pour toutes les charges de travail sera probablement assez grand (en nombre de n\u0153uds et de pods).<\/p>\n<p>Mais cela soul\u00e8ve un autre probl\u00e8me : les clusters dans Kubernetes ne peuvent pas cro\u00eetre ind\u00e9finiment.<\/p>\n<p>Il existe une limite th\u00e9orique \u00e0 la taille du cluster. Dans Kubernetes, elle est d'environ <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">5000 n\u0153uds, 150 000 pods et 300 000 conteneurs<\/a><\/noindex>.<\/p>\n<p>Cependant, dans la vie r\u00e9elle, les probl\u00e8mes peuvent commencer beaucoup plus t\u00f4t \u2014 par exemple, d\u00e8s <noindex><a rel=\"nofollow\" href=\"https:\/\/events19.lfasiallc.com\/wp-content\/uploads\/2017\/11\/BoF_-Not-One-Size-Fits-All-How-to-Size-Kubernetes-Clusters_Guang-Ya-Liu-_-Sahdev-Zala.pdf\">500 n\u0153uds.<\/a><\/noindex>.<\/p>\n<p>Le fait est que de grands clusters exercent une forte pression sur la couche de gestion de Kubernetes. En d'autres termes, pour maintenir le cluster op\u00e9rationnel et utiliser efficacement les ressources, une configuration minutieuse est n\u00e9cessaire.<\/p>\n<p><i>Ce probl\u00e8me est abord\u00e9 dans l'article correspondant dans le blog original intitul\u00e9 \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/kubernetes-node-size\">Architecting Kubernetes clusters \u2014 choosing a worker node size<\/a><\/noindex>\u00bb.<\/i><\/p>\n<p><i>Mais examinons l'approche oppos\u00e9e : de nombreux petits clusters.<\/i><\/p>\n<h2>2. De nombreux petits clusters sp\u00e9cialis\u00e9s<\/h2>\n<p>\nDans cette approche, vous utilisez un cluster distinct pour chaque \u00e9l\u00e9ment d\u00e9ploy\u00e9 :<\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/2320f62d945944f2e26f07252e9b8440.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>De nombreux petits clusters<\/i><\/p>\n<p>Aux fins de cet article, un <i>\u00e9l\u00e9ment d\u00e9ploy\u00e9<\/i> est consid\u00e9r\u00e9 comme une instance d'application \u2014 par exemple, la version de d\u00e9veloppement d'une application distincte.<\/p>\n<p>Dans cette strat\u00e9gie, Kubernetes est utilis\u00e9 comme un <b>environnement d'ex\u00e9cution<\/b> sp\u00e9cialis\u00e9 pour des instances d'application individuelles.<\/p>\n<p><i>Examinons les avantages et les inconv\u00e9nients de cette approche.<\/i><\/p>\n<h3>+ Rayon d'impact limit\u00e9<\/h3>\n<p>\nEn cas de \u00ab d\u00e9faillance \u00bb d'un cluster, les cons\u00e9quences n\u00e9gatives se limitent uniquement aux charges de travail qui \u00e9taient d\u00e9ploy\u00e9es dans ce cluster. Tous les autres workloads restent intouch\u00e9s.<\/p>\n<h3>+ Isolement<\/h3>\n<p>\nLes charges de travail h\u00e9berg\u00e9es dans des clusters individuels ne partagent pas de ressources communes, telles que le processeur, la m\u00e9moire, le syst\u00e8me d'exploitation, le r\u00e9seau ou d'autres services.<\/p>\n<p>Nous obtenons ainsi un isolement strict entre les applications non li\u00e9es, ce qui peut avoir un impact positif sur leur s\u00e9curit\u00e9.<\/p>\n<h3>+ Peu d'utilisateurs<\/h3>\n<p>\n\u00c9tant donn\u00e9 que chaque cluster ne contient qu'un ensemble limit\u00e9 de charges de travail, le nombre d'utilisateurs ayant acc\u00e8s \u00e0 celui-ci est r\u00e9duit.<\/p>\n<p>Moins il y a de personnes ayant acc\u00e8s au cluster, moins le risque que quelque chose \"se casse\" est \u00e9lev\u00e9.<\/p>\n<p><i>Voyons les inconv\u00e9nients.<\/i><\/p>\n<h3>\u2212 Utilisation inefficace des ressources<\/h3>\n<p>\nComme mentionn\u00e9 pr\u00e9c\u00e9demment, chaque cluster Kubernetes n\u00e9cessite un certain ensemble de ressources de gestion : n\u0153uds ma\u00eetres, composants de la couche de contr\u00f4le, solutions de surveillance et de journalisation.<\/p>\n<p>Avec un grand nombre de petits clusters, il faut allouer une plus grande proportion de ressources pour leur gestion.<\/p>\n<h3>\u2212 Co\u00fbt \u00e9lev\u00e9<\/h3>\n<p>\nUne utilisation inefficace des ressources entra\u00eene automatiquement des co\u00fbts \u00e9lev\u00e9s.<\/p>\n<p>Par exemple, avoir 30 n\u0153uds principaux au lieu de trois avec la m\u00eame puissance de calcul impactera certainement les co\u00fbts.<\/p>\n<h3>\u2212 Difficult\u00e9s d'administration<\/h3>\n<p>\nAdministrer plusieurs clusters Kubernetes est beaucoup plus compliqu\u00e9 que de travailler avec un seul.<\/p>\n<p>Par exemple, il faudra configurer l'authentification et l'autorisation pour chaque cluster. La mise \u00e0 jour de la version de Kubernetes devra \u00e9galement se faire plusieurs fois.<\/p>\n<p>Il est probable qu'il soit n\u00e9cessaire d'appliquer l'automatisation pour am\u00e9liorer l'efficacit\u00e9 de toutes ces t\u00e2ches.<\/p>\n<p><i>Examinons maintenant des sc\u00e9narios moins extr\u00eames.<\/i><\/p>\n<h2>3. Un cluster pour chaque application<\/h2>\n<p>\nDans cette approche, vous cr\u00e9ez un cluster distinct pour toutes les instances d'une application sp\u00e9cifique :<\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/238ee74d4e4dc42b7daeadc1ce484905.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un cluster par application<\/i><\/p>\n<p>Cette voie peut \u00eatre consid\u00e9r\u00e9e comme une g\u00e9n\u00e9ralisation du principe \u00ab<b>un cluster par \u00e9quipe<\/b>\u00bb, puisque g\u00e9n\u00e9ralement une \u00e9quipe d'ing\u00e9nieurs travaille sur le d\u00e9veloppement d'une ou plusieurs applications.<\/p>\n<p><i>Examinons les avantages et les inconv\u00e9nients de cette approche.<\/i><\/p>\n<h3>+ Le cluster peut \u00eatre adapt\u00e9 \u00e0 l'application<\/h3>\n<p>\nSi l'application a des besoins sp\u00e9cifiques, ceux-ci peuvent \u00eatre satisfaits dans le cluster, sans affecter les autres clusters.<\/p>\n<p>De tels besoins peuvent inclure des workers avec GPU, certains plugins CNI, des services mesh ou tout autre service.<\/p>\n<p>Chaque cluster peut \u00eatre configur\u00e9 selon l'application qu'il h\u00e9berge, de mani\u00e8re \u00e0 ne contenir que ce qui est n\u00e9cessaire.<\/p>\n<h3>\u2212 Diff\u00e9rentes environnements dans un m\u00eame cluster<\/h3>\n<p>\nL'inconv\u00e9nient de cette approche est que les instances d'applications de diff\u00e9rents environnements coexistent dans un m\u00eame cluster.<\/p>\n<p>Par exemple, la version prod de l'application fonctionne dans le m\u00eame cluster que la version dev. Cela signifie \u00e9galement que les d\u00e9veloppeurs op\u00e8rent dans le m\u00eame cluster que la version production de l'application.<\/p>\n<p>Si en raison des actions des d\u00e9veloppeurs ou des bugs de la version dev, un \u00e9chec se produit dans le cluster, la version prod peut \u00e9galement \u00eatre affect\u00e9e \u2014 un \u00e9norme inconv\u00e9nient de cette approche.<\/p>\n<p><i>Et enfin, le dernier sc\u00e9nario de notre liste.<\/i><\/p>\n<h2>4. Un cluster pour chaque environnement<\/h2>\n<p>\nCe sc\u00e9nario pr\u00e9voit la cr\u00e9ation d'un cluster distinct pour chaque environnement :<\/p>\n<p><img decoding=\"async\" alt=\"Conception de clusters Kubernetes : combien doivent-ils \u00eatre ?\" src=\"\/wp-content\/uploads\/2020\/05\/157da599edf178832b1b15459786fbc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un cluster par environnement<\/i><\/p>\n<p>Par exemple, vous pourriez avoir des clusters <i>dev<\/i>, <i>test<\/i> et <i>prod<\/i>, dans lesquels vous ex\u00e9cuterez toutes les instances d'application destin\u00e9es \u00e0 un environnement particulier.<\/p>\n<p><i>Voici les avantages et les inconv\u00e9nients de cette approche.<\/i><\/p>\n<h3>+ Isolation de l'environnement prod<\/h3>\n<p>\nDans le cadre de cette approche, tous les environnements sont isol\u00e9s les uns des autres. Cependant, cela est particuli\u00e8rement important pour l'environnement de production.<\/p>\n<p>Les versions de production de l'application ne d\u00e9pendent plus de ce qui se passe dans d'autres clusters et environnements.<\/p>\n<p>Ainsi, si un probl\u00e8me survient soudainement dans le cluster de d\u00e9veloppement, les versions de production des applications continueront de fonctionner comme si de rien n'\u00e9tait.<\/p>\n<h3>+ Le cluster peut \u00eatre adapt\u00e9 \u00e0 l'environnement<\/h3>\n<p>\nChaque cluster peut \u00eatre adapt\u00e9 \u00e0 son environnement. Par exemple, il est possible de :<\/p>\n<ul>\n<li> installer des outils de d\u00e9veloppement et de d\u00e9bogage dans le cluster de d\u00e9veloppement ;<\/li>\n<li> installer des frameworks de test et des outils dans le cluster <i>test<\/i>;<\/li>\n<li> utiliser du mat\u00e9riel plus puissant et des canaux r\u00e9seau dans le cluster <i>prod<\/i>.<\/li>\n<\/ul>\n<p>\nCela permet d'am\u00e9liorer l'efficacit\u00e9 tant du d\u00e9veloppement que de l'exploitation des applications.<\/p>\n<h3>+ Limitation de l'acc\u00e8s au cluster de production<\/h3>\n<p>\nLa n\u00e9cessit\u00e9 de travailler directement avec le cluster de production se pr\u00e9sente rarement, il est donc possible de limiter consid\u00e9rablement le nombre de personnes y ayant acc\u00e8s.<\/p>\n<p>On peut aller encore plus loin et priver compl\u00e8tement les gens de l'acc\u00e8s \u00e0 ce cluster, en effectuant tous les d\u00e9ploiements \u00e0 l'aide d'un outil CI\/CD automatis\u00e9. Cette approche permettra de r\u00e9duire au maximum le risque d'erreurs humaines pr\u00e9cis\u00e9ment l\u00e0 o\u00f9 cela est le plus crucial.<\/p>\n<p><i>Maintenant, quelques mots sur les inconv\u00e9nients.<\/i><\/p>\n<h3>\u2212 Absence d'isolement entre les applications<\/h3>\n<p>\nLe principal inconv\u00e9nient de cette approche est l'absence d'isolement mat\u00e9riel et de ressources entre les applications.<\/p>\n<p>Les applications non li\u00e9es utilisent conjointement les ressources du cluster : le noyau syst\u00e8me, le processeur, la m\u00e9moire et certains autres services.<\/p>\n<p>Comme d\u00e9j\u00e0 mentionn\u00e9, cela peut \u00eatre potentiellement dangereux.<\/p>\n<h3>\u2212 Incapacit\u00e9 \u00e0 localiser les d\u00e9pendances des applications<\/h3>\n<p>\nSi une application a des exigences particuli\u00e8res, elles doivent \u00eatre satisfaites dans tous les clusters.<\/p>\n<p>Par exemple, si une application n\u00e9cessite un GPU, chaque cluster doit contenir au moins un worker avec GPU (m\u00eame s'il n'est utilis\u00e9 que par cette application).<\/p>\n<p>En cons\u00e9quence, nous risquons d'avoir des co\u00fbts plus \u00e9lev\u00e9s et une utilisation inefficace des ressources.<\/p>\n<h2>Conclusion<\/h2>\n<p>\nAvec un certain ensemble d'applications, elles peuvent \u00eatre r\u00e9parties dans plusieurs grands clusters ou dans de nombreux petits.<\/p>\n<p>Cet article examine les avantages et les inconv\u00e9nients de diff\u00e9rentes approches, allant d'un cluster global unique \u00e0 plusieurs petits clusters sp\u00e9cialis\u00e9s :<\/p>\n<ul>\n<li> un grand cluster commun;<\/li>\n<li> un grand nombre de petits clusters sp\u00e9cialis\u00e9s;<\/li>\n<li> un cluster par application;<\/li>\n<li> un cluster par environnement.<\/li>\n<\/ul>\n<p>\n<i>Alors, quelle approche choisir ?<\/i><\/p>\n<p>Comme d'habitude, la r\u00e9ponse d\u00e9pend du sc\u00e9nario d'utilisation : il faut peser le pour et le contre des diff\u00e9rentes approches et choisir l'option la plus optimale.<\/p>\n<p>Cependant, le choix ne se limite pas aux exemples ci-dessus \u2014 il est possible d'utiliser n'importe quelle combinaison !<\/p>\n<p>Par exemple, on peut organiser une paire de clusters pour chaque \u00e9quipe : un cluster pour le d\u00e9veloppement (dans lequel se trouveront les environnements <i>dev<\/i> et <i>test<\/i>) et un cluster pour <i>production<\/i> (o\u00f9 sera situ\u00e9e l'environnement de production).<\/p>\n<p>En vous basant sur les informations de cet article, vous pourrez optimiser les avantages et les inconv\u00e9nients pour un sc\u00e9nario sp\u00e9cifique. Bonne chance !<\/p>\n<h2>P.S.<\/h2>\n<p>\nLisez aussi dans notre blog :<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/484954\/\">Guide visuel pour le diagnostic des erreurs dans Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480946\/\">Les journaux dans Kubernetes (et pas uniquement) aujourd'hui : attentes et r\u00e9alit\u00e9<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/478306\/\">Service Mesh : ce que chaque Software Engineer doit savoir sur la technologie la plus tendance<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468679\/\">L'alphabet de la s\u00e9curit\u00e9 dans Kubernetes : authentification, autorisation, audit<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/498100\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 learnk8s \u2014 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 Kubernetes. \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043b\u044e\u0441\u043e\u0432 \u0438 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. TL;DR: \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 (\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80077,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80076","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=\"\u041f\u0440\u0438\u043c.\" \/>\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\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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=\"2020-05-02T23:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-02T23:42:34+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\udd47Conception de clusters Kubernetes : combien en faut-il ? | ProHoster","description":"Ex.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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":"2020-05-02T23:42:34+00:00","article:modified_time":"2020-05-02T23:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80076","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:24:58","updated":"2022-10-02 20:23:35","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\/80076","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=80076"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/80076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/80077"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=80076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=80076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=80076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}