10 Leçons sur la gestion de cluster kubernetes en production
Au cours des trois dernières années, la gestion des clusters Kubernetes a été pour certains une navigation parfois tumultueuse. Ce parcours, rempli de défis et de découvertes, m’a permis d’acquérir une compréhension approfondie de cette technologie de pointe et de ses multiples facettes. Dans cet article, les dix leçons les plus précieuses que j’ai apprises en tant que gestionnaire de clusters Kubernetes sont partagées.
Ces leçons couvrent divers sujets, de la gestion de l’infrastructure sous-jacente à l’optimisation des processus de déploiement, et incluent les meilleures pratiques pour assurer la scalabilité et la sécurité de vos clusters. Que vous soyez novice dans le monde de Kubernetes ou expert chevronné, ces perspectives enrichissantes vous aideront à gérer efficacement vos clusters Kubernetes.
Explorons ensemble ces enseignements, fruit de trois années d’expériences, de succès et de défis surmontés.
Leçon 1 : Utilisez Kubernetes dans le cloud
À moins de contraintes extrêmes, il est inutile de gérer vous-même l’infrastructure sous-jacente de Kubernetes. Passer du temps à déboguer des problèmes qui n’ajoutent pas de valeur à votre entreprise est contre-productif. Être expert dans kube-api, kube-apiserver, kubelet, etcd, kube-proxy, etc., est bénéfique, mais assurer leur maintenance quotidienne ne l’est pas. Dé Laissez aux fournisseurs de services cloud (AWS, Azure, GCP, OVH, etc.) le soin de le faire, ils le font mieux que vous. À HK-TECH, nous avons opté pour AWS et le cluster EKS (ECS n’est pas Kubernetes!).
Leçon 2 : Déployez toute votre infrastructure liée à Kubernetes avec du code.
Aucune partie de votre cluster ne devrait être configurée manuellement sur la console, pas même un simple tag. Évitez particulièrement la mentalité du « je règle rapidement sur la console, je mettrai à jour le code plus tard ». Mythe : Vous ne le ferez jamais.
Leçon 3 : Évitez d’abuser des charts Helm que vous ne maîtrisez pas complètement.
Oui, ils sont excellents, ils fonctionnent rapidement et vous n’avez pas besoin de vous casser la tête à écrire vos YAMLs, sauf le jour où une mise à jour casse tout. Si vous êtes vraiment paresseux ou à court de temps, faites au moins l’effort de comprendre chaque variable du fichier values.yaml et évitez les valeurs par défaut. Chez HK-Tech, la règle est pas de chart Helm ; au pire, nous récupérons les modèles.
Leçon 4 : Kubernetes n’aime pas le lift and shift.
Vous devrez donc mettre les mains dans le cambouis avec vos anciennes applications pour les redessiner afin qu’elles soient compatibles avec le cloud. Ce n’est pas à Kube de s’adapter à votre application, mais à l’application de s’adapter. Si vous n’êtes pas en mesure de recoder vos applications, il vaut peut-être mieux rester avec vos anciennes VM.
Leçon 5 : Mesh or not to mesh?
N’installez pas de service mesh si vous n’en avez pas besoin. Comment savoir si vous en avez besoin ? Posez-vous deux questions : Les applications de mon cluster communiquent-elles entre elles ? Les échanges entre les applications de mon cluster doivent-ils être sécurisés ? Si la réponse est oui aux deux, alors installer un service mesh peut être utile. Je n’ai pas de recommandation spécifique ; en général, ils sont tous similaires.
Leçon 6 : Évitez de multiplier les outils.
Kubernetes offre une multitude d’outils auxiliaires qui promettent monts et merveilles pour une meilleure gestion de vos clusters : argocd, lens, k9s, keda, krew, kubectx, kubens, kail… Évitez de les empiler, le bon vieux kubectl répond à 90 % des besoins. Personnellement, je me limite à kubectx, kubens, k9s pour un véritable gain dans l’administration de mes clusters.
Leçon 7 : Vous devez toujours définir les limites des ressources (mémoire et CPU) allouées à vos pods.
Cela évitera le risque qu’une application mal codée ou mal configurée consomme toutes les ressources de votre cluster et fasse tomber vos applications les unes après les autres parce que certains pods sont trop gourmands. C’est également l’une des raisons de se méfier des charts Helm et de toujours vérifier le code source des manifestes derrière l’emballage attrayant.
Leçon 8 : Pensez Stateless. Idéalement, il vaut mieux éviter de persister les données dans vos pods.
Si pour une raison quelconque ce n’est pas possible autrement, privilégiez les montages sur NAS plutôt que sur disques. Sinon, vous serez désagréablement surpris de constater que certains pods de votre déploiement n’ont pas accès aux ressources persistantes. Oui, un disque dur ne peut être monté que sur un nœud, donc si vos pods sont répartis sur plusieurs nœuds, les pods sur le même nœud verront les mêmes données mais pas ceux sur les autres nœuds. Avec un montage de type NAS comme EFS, vous éviterez ce problème.
Leçon 9 : Configurez HPA (Horizontal Pod Autoscaler).
Si vous souhaitez arrêter de travailler comme dans le vieux monde et bénéficier de la capacité de Kubernetes à gérer automatiquement l’utilisation des ressources en fonction de la demande, vous devrez configurer HPA sur tous vos projets d’application. (Une autre limite des charts Helm, où il est malheureusement souvent très absent).
Leçon 10 : N’ayez pas peur du changement.
En moyenne, vous devriez planifier trois mises à jour de version de votre cluster par an, soit environ une mise à jour tous les quatre mois. Certaines mises à jour sont transparentes, mais souvent il y aura des changements avec des impacts. Pour mieux vous préparer à ces mises à jour, je recommande de lire, relire et revisiter les notes de version et les expériences de ceux qui ont déjà effectué la mise à jour avant vous. Ce que je recommande et ce que nous avons mis en œuvre chez HK-TECH, c’est d’être toujours une version en dessous de la dernière (sauf en cas de modifications de sécurité).
Conclusion
En conclusion, la gestion des clusters Kubernetes requiert une approche stratégique et bien planifiée. En tirant parti des leçons partagées, vous pouvez optimiser vos pratiques de déploiement, améliorer la scalabilité et renforcer la sécurité de vos applications. Que vous débutiez ou que vous soyez déjà expérimenté dans ce domaine, l’adoption de bonnes pratiques telles que l’automatisation, la limitation des dépendances aux outils tiers et la mise à jour régulière des infrastructures techniques garantira une gestion efficace et fluide de vos clusters Kubernetes. Restez agile et prêt au changement pour maximiser les bénéfices de cette technologie dynamique.
Si vous souhaitez être formé ou accompagné sur la mise en place, l’audit et la gestion des clusters kubernetes n’hésitez pas à nous écrire à contact@thehktech.com ou à remplir ce formulaire
Ecouter le Podcast : https://www.youtube.com/watch?v=OE-WM5hxxZo
L’article en Anglais sur Medium (14.000 Lectures ) : https://medium.com/@hervekhg/3-years-managing-kubernetes-clusters-my-10-lessons-b565a5509f0e