Peut-ĂȘtre que vous n'avez pas besoin de Kubernetes

Peut-ĂȘtre que vous n'avez pas besoin de Kubernetes
Fille sur un scooter. Illustration freepik, logo Nomad de HashiCorp

Kubernetes est un gorille de 300 kilos pour l'orchestration des conteneurs. Il fonctionne dans certains des plus grands systÚmes de conteneurs au monde, mais cela coûte cher.

Surtout cher pour les petites équipes, qui devront passer beaucoup de temps à le maintenir et à faire face à une lourde courbe d'apprentissage. Pour notre équipe de quatre personnes, c'est trop de frais généraux. Nous avons donc commencé à rechercher des alternatives et sommes tombés amoureux de Nomad.

Ce dont nous avons besoin

Notre équipe prend en charge divers services typiques pour la surveillance et l'analyse des performances : points de terminaison API pour les métriques écrites en Go, exportation Prometheus, parseurs de journaux comme Logstash et Gollum, ainsi que des bases de données comme InfluxDB ou Elasticsearch. Chacune de ces services fonctionne dans son propre conteneur. Nous avons besoin d'un systÚme simple pour maintenir tout cela opérationnel.

Nous avons commencé par une liste de critÚres pour l'orchestration des conteneurs :

  • Lancement d'un ensemble de services sur plusieurs machines.
  • Vue d'ensemble des services en cours d'exĂ©cution.
  • Liens entre les services.
  • RedĂ©marrage automatique en cas de panne de service.
  • Maintenance de l'infrastructure par une petite Ă©quipe.

De plus, les éléments suivants seraient agréables, mais non obligatoires :

  • Étiquetage des machines par leurs capacitĂ©s (par exemple, Ă©tiquetage des machines avec des disques rapides pour les services lourds en E/S).
  • CapacitĂ© Ă  lancer des services indĂ©pendamment de l'orchestrateur (par exemple, lors du dĂ©veloppement).
  • Endroit commun pour partager des configurations et des secrets.
  • Point de terminaison pour les mĂ©triques et les journaux.

Pourquoi Kubernetes ne nous convient pas

Lors de la création d'un prototype avec Kubernetes, nous avons remarqué que nous commencions à ajouter des couches de logique de plus en plus complexes, sur lesquelles nous comptions irrévocablement.

Par exemple, Kubernetes prend en charge des configurations de services intĂ©grĂ©es Ă  travers ConfigMaps. Vous pouvez rapidement vous perdre, en particulier lors de la fusion de plusieurs fichiers de configuration ou de l'ajout de services supplĂ©mentaires dans un pod. Kubernetes (ou helm Dans ce cas, cela permet d'intĂ©grer dynamiquement des configurations externes pour sĂ©parer les intĂ©rĂȘts. Cependant, cela crĂ©e un lien rigide et cachĂ© entre votre projet et Kubernetes. Cela dit, Helm et ConfigMaps sont des options supplĂ©mentaires, donc vous n'ĂȘtes pas obligĂ© de les utiliser. Vous pouvez simplement copier la configuration dans l'image Docker. NĂ©anmoins, il est tentant de suivre cette voie et de crĂ©er des abstractions inutiles, ce dont vous pourriez regretter par la suite.

De plus, l'Ă©cosystĂšme Kubernetes Ă©volue rapidement. Il faut beaucoup de temps et d'Ă©nergie pour se tenir au courant des meilleures pratiques et des outils les plus rĂ©cents. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - la liste continue et continue. Au dĂ©but, tous ces outils ne sont pas nĂ©cessaires, mais vous ne savez pas ce dont vous aurez besoin, donc il faut ĂȘtre au courant de tout. Cela rend la courbe d'apprentissage assez raide.

Quand utiliser Kubernetes

Dans notre entreprise, beaucoup utilisent Kubernetes et en sont tout à fait satisfaits. Ces instances sont gérées par Google ou Amazon, qui ont les ressources nécessaires pour les soutenir.

Kubernetes est livré avec des fonctionnalités surprenantes, qui rendent l'orchestration à grande échelle des conteneurs plus gérable :

La question est de savoir si vous avez vraiment besoin de toutes ces fonctionnalités. Vous ne pouvez pas simplement compter sur les abstractions ; vous devrez découvrir ce qui se passe sous le capot..

Notre équipe fournit la plupart des services à distance (en raison d'un lien étroit avec l'infrastructure sous-jacente), donc nous ne voulions pas mettre en place notre propre cluster Kubernetes. Nous voulions simplement fournir des services.

Piles non incluses

Nomad est 20 % d'orchestration, qui fournit 80 % du nécessaire. Tout ce qu'il fait, c'est gérer les déploiements. Nomad s'occupe des déploiements, redémarre les conteneurs en cas de problÚmes... et c'est tout.

Le sens de Nomad réside dans ce qu'il fait : pas de gestion détaillée des permissions ou minimumde politiques réseau avancées , c'est fait intentionnellement. Ces composants sont fournis de maniÚre externe ou pas du tout., c'est intentionnel. Ces composants sont fournis par des tiers ou ne sont pas fournis du tout.

Je pense que Nomad a trouvĂ© le compromis parfait entre simplicitĂ© d'utilisation et utilitĂ©. Il est idĂ©al pour de petits services indĂ©pendants. Si vous avez besoin de plus de contrĂŽle, vous devrez les gĂ©rer vous-mĂȘme ou adopter une autre approche. Nomad est tout simplement un orchestrateur.

Ce qui est le meilleur dans Nomad, c'est sa facilité remplacer. La dépendance à un fournisseur est pratiquement inexistante, car ses fonctionnalités s'intÚgrent facilement dans tout autre systÚme de gestion des services. Il fonctionne simplement comme un binaire ordinaire sur chaque machine du cluster, c'est tout !

L'écosystÚme de Nomad est constitué de composants faiblement couplés

La vĂ©ritable force de Nomad rĂ©side dans son Ă©cosystĂšme. Il s'intĂšgre trĂšs bien avec d'autres produits — totalement optionnels — tels que Consul (stockage clĂ©-valeur) ou Vault (gestion des secrets). Dans le fichier Nomad, il y a des sections pour extraire des donnĂ©es de ces services :

template {
  data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH

  destination = "secrets/file.env"
  env         = true
}

Ici, nous lisons la clé service/geo-api/log-verbosity de Consul et, pendant l'exécution, nous la présentons comme une variable d'environnement LOG_LEVEL. Nous présentons également la clé secret/geo-api-key de Vault comme API_KEY. Simple, mais puissant !

GrĂące Ă  sa simplicitĂ©, Nomad peut facilement ĂȘtre Ă©tendu avec d'autres services via l'API. Par exemple, des balises sont supportĂ©es pour les tĂąches. Nous Ă©tiquetons tous les services avec des mĂ©triques avec la balise trv-metrics. Ainsi, Prometheus peut facilement trouver ces services via Consul et vĂ©rifier pĂ©riodiquement le point de terminaison /metrics pour de nouvelles donnĂ©es. Il en va de mĂȘme, par exemple, pour les journaux, en utilisant Loki.

Il y a de nombreux autres exemples d'extensibilité :

  • Lancer une tĂąche Jenkins Ă  l'aide d'un hook, et Consul surveille le redĂ©ploiement de la tĂąche Nomad lors de changements de configuration du service.
  • Ceph ajoute Ă  Nomad un systĂšme de fichiers distribuĂ©.
  • fabio pour la rĂ©partition de charge.

Tout cela permet de faire évoluer l'infrastructure sans lien particulier avec un fournisseur.

Avertissement honnĂȘte

Aucun systĂšme n'est parfait. Je ne recommande pas d'implĂ©menter immĂ©diatement les fonctionnalitĂ©s les plus rĂ©centes en production. Bien sĂ»r, il existe des bogues et des fonctionnalitĂ©s manquantes, mais il en va de mĂȘme pour Kubernetes.

ComparĂ© Ă  Kubernetes, la communautĂ© de Nomad n'est pas aussi grande. Kubernetes a dĂ©jĂ  prĂšs de 75 000 commits et 2000 contributeurs, tandis que Nomad en a environ 14 000 et 300. Il sera difficile pour Nomad de suivre le rythme de Kubernetes, mais peut-ĂȘtre que cela n'est pas nĂ©cessaire ! C'est un systĂšme plus spĂ©cialisĂ©, et une communautĂ© plus petite signifie aussi que votre pull request sera probablement remarquĂ©e et acceptĂ©e plus rapidement qu'avec Kubernetes.

Résumé

Conclusion : n'utilisez pas Kubernetes simplement parce que tout le monde le fait. Évaluez soigneusement vos besoins et vĂ©rifiez quel outil est le plus avantageux.

Si vous prĂ©voyez de dĂ©ployer un grand nombre de services homogĂšnes sur une infrastructure Ă  grande Ă©chelle, Kubernetes est une bonne option. Gardez simplement Ă  l'esprit la complexitĂ© supplĂ©mentaire et les coĂ»ts d'exploitation. Certains frais peuvent ĂȘtre Ă©vitĂ©s en utilisant un environnement Kubernetes gĂ©rĂ©, comme Google Kubernetes Engine ou Amazon EKS.

Si vous cherchez simplement un orchestrateur fiable, facile Ă  maintenir et Ă©volutif, pourquoi ne pas essayer Nomad ? Vous pourriez ĂȘtre surpris de l'ampleur de ce que cela peut vous apporter.

Si l'on compare Kubernetes Ă  une voiture, Nomad serait un scooter. Parfois, vous avez besoin de l'un, et parfois de l'autre. Les deux ont leur raison d'ĂȘtre.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster