Kubernetes

Autoscaler de pods horizontaux Kubernetes

Autoscaler de pods horizontaux Kubernetes
Les pods peuvent être créés en tant qu'objets autonomes, ou dans le cadre d'un jeu de réplicas évolutif ou d'un déploiement. Chacun de ces deux derniers objets est utilisé pour déployer non pas un seul pod, mais une multitude d'entre eux. L'objectif ici est que les gousses puissent être fongibles si l'une a trop de trafic, deux autres peuvent apparaître et supporter la charge supplémentaire. Cependant, une chose importante à noter ici est que le jeu de réplicas et les objets de déploiement ont un nombre codé en dur de réplicas de pod qu'ils ont l'intention d'exécuter.

Si le nombre de réplicas est défini sur 100 et que la demande est trop faible, même dans ce cas, les 100 pods seront opérationnels. Cela entraîne un gaspillage de ressources CPU et mémoire. Oui, il offre de la fiabilité, dans le sens où si un nœud tombe en panne et que les pods qu'il contient meurent, le contrôleur Replica Set essaierait de ramener le nombre de pods à 100 en créant des pods dans d'autres nœuds. L'application reste en ligne.

Dans un sens plus abstrait, le Replica Set essaierait d'atteindre un état désiré du cluster et examinerait la état actuel et comprendre comment il peut atteindre l'état souhaité.

Cependant, nous aimerions quelque chose d'un peu plus sensible à la demande du monde réel. Entrer Autoscaler de pod horizontal. C'est le travail de Horizontal Pod Autoscaler de faire évoluer l'application lorsque cela est nécessaire, puis de la réduire une fois la charge de travail réduite.

Pourquoi utiliser un autoscaler horizontal pour pods?

Comme son nom l'indique, ce composant mettra automatiquement votre application à l'échelle. Dans le cloud, cela peut vraiment vous aider à réduire les ressources de calcul et de mémoire qui vous seront facturées. Étant donné que l'autoscaler est sensible à l'utilisation des ressources, lorsqu'il constate que de nombreux pods sont simplement inactifs, il réduit l'application et lorsque la demande sur ces pods augmente, il augmente l'application en créant de nouveaux pods et la charge est distribuée à ceux.

Cela peut vous faire gagner un temps précieux et des ressources de calcul. Vous n'aurez pas à vous soucier de ce que devrait être le nombre de réplicas pour vos pods lors de l'écriture d'un déploiement, l'autoscaler le gérerait pour vous.

La configuration initiale

La première et principale exigence serait que vous disposiez d'un cluster Kubernetes en cours d'exécution. Utilisez Katacoda Playground qui est parfait pour l'expérimentation et l'apprentissage de Kubernetes. La prochaine chose dont vous auriez besoin est un serveur métrique.

Ce module complémentaire à votre système Kubernetes (espace de noms kube-system) rassemblerait des métriques telles que l'utilisation du processeur et de la mémoire sous deux angles différents :

  1. Ressource utilisée par chaque pod
  2. Ressource consommée à chaque nœud

Les métriques des deux points de vue sont cruciales pour aider Autoscaler à décider quelle devrait être sa prochaine étape. Pour ajouter un serveur de métriques à votre cluster Kubernetes, suivez ce guide. Nous sommes maintenant prêts à voir l'autoscaler horizontal en action.

Utilisation de l'autoscaler

Pour voir l'Autoscaler fonctionner, nous avons besoin d'une application de test. Créons un simple serveur php-apache et exposons-le en tant que service.

$ kubectl lance php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose
--port=80

L'image utilisée ici est l'un des exemples d'images fournis par le projet Kubernetes. Il effectue certaines tâches gourmandes en CPU et rend le processus beaucoup plus apparent en le faisant.

Pour faire évoluer automatiquement ce déploiement, nous devons informer l'autoscaler du nombre minimum et maximum de pods que nous autoriserons et du pourcentage de CPU qu'ils sont autorisés à utiliser. Vous pouvez également prendre en compte de nombreux autres facteurs, tels que la mémoire, le stockage et le réseau.

$ kubectl autoscale deploiements/php-apache --cpu-percent=50 --min=1 --max=10

Dans l'état actuel, puisque personne ne consomme ce service, il préférera rester à la valeur minimale. Vous pouvez vérifier l'état de tous les déploiements autoscalés dans l'espace de noms par défaut en exécutant :

$ kubectl obtenir hpa
NOM         RÉFÉRENCE               CIBLES   MINPODS   MAXPODS   RÉPLIQUES   ÂGE
php-apache   Déploiement/php-apache   0%/50%    1         10        1          2 m

Génération de charge et test de la fonction de mise à l'échelle automatique

Vous pouvez voir que le nombre de répliques n'est toujours qu'un et que la charge du processeur est insignifiante. Nous pouvons créer une charge supplémentaire et voir comment l'autoscaler y répond. Le service qui expose nos pods php-apache n'est pas exposé au monde extérieur, nous allons donc créer un pod temporaire et ouvrir une session shell interactive dans ce pod.

Cela nous permettra de communiquer avec tous les services disponibles dans le cluster, dont le service php-apache.

$ kubectl run -i --tty busybox --image=busybox --restart=Jamais -- sh
/ #

Vous remarquerez que l'invite changera indiquant que nous sommes à l'intérieur de ce conteneur. Essayons maintenant de mettre un peu de charge sur notre service en faisant des demandes à plusieurs reprises. Dans la nouvelle invite, exécutons la boucle while suivante :

/ # tant que vrai; faire wget -q -O- http://php-apache.défaut.svc.groupe.local; Fini

Ouvrez un nouveau terminal, car nous ne pouvons pas laisser cette boucle se terminer pour l'instant. En inspectant l'autoscaler, vous verrez l'utilisation du processeur et en répertoriant les pods, vous verrez qu'il y a maintenant plusieurs instances du serveur php-apache,

$ kubectl obtenir hpa
NOM         RÉFÉRENCE               OBJECTIFS    MINPODS   MAXPODS   RÉPLIQUES   ÂGE
php-apache   Déploiement/php-apache   121%/50%   1         10        4          1h
 
$ kubectl obtenir des pods
NOM                          PRÊT     STATUT    REDÉMARRE   ÂGE
busybox                       1/1       Course à pied   0          6 min
php-apache-8699449574-7qwxd   1/1       En cours d'exécution   0          28s
php-apache-8699449574-c9v54   1/1       En cours d'exécution   0          10h
php-apache-8699449574-h9s5f   1/1       En cours d'exécution   0          28s
php-apache-8699449574-sg4hz   1/1       En cours d'exécution   0          28s

Terminez la boucle while et le nombre de pods tombera à un en quelques minutes.

Conclusion

C'est donc une simple démonstration de l'autoscaler horizontal de pods. N'oubliez pas d'avoir un serveur de métriques fonctionnel pour votre cluster et lors de la création d'un déploiement, gardez le nombre de réplicas à 1. L'autoscaler horizontal à dosettes s'occupera du reste.

Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...
Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...