Archives de catégorie : Kubernetes

Débuter avec les commandes dans la CLI Kubernetes

Lors d’un précédent article, nous avions découvert les principes de kubernetes et quelques définitions. Il est temps pour nous de débuter dans les commandes kubernetes.

Si vous le souhaitez, vous pouvez retrouver plus de 70 vidéos gratuites dans cette playlist que je mets à votre disposition. Cette formation kubernetes vous permet de découvrir l’outil tranquillement à votre rythme et de bénéficier du code de chacun des tutos pour reproduire cela de votre côté sur votre laptop.

Premier pod et premier run

La couche logique nommée pod qu’apporte k8s est inévitable lorsque vous utilisez cet orchestrateur. Si vous avez pratiqué docker ou un autre conteneur runtime, imaginez un pod comme une couche supérieure. Cette couche dispose de la description des conteneurs qui vont être lancés et de leur environnement.

Nous le verrons plus tard, les objets k8s sont souvent lancés via des manifests. Ces derniers sont des fichiers descriptifs en format yaml. Mais pour débuter souvent on apprend dans un premier temps à lancer ces éléments à partir de la ligne de commande.

Alors comment lancer le plus simplement du monde un pod dans kubernetes ?

Suivant la version de kub qu evous utilisez vous pourrez réaliser un simple « kubectl run » à la manière d’un docker run de cette manière :

kubectl run mycontainer --image busybox

De cette manière nous venons de lancer un pod qui va lancer un conteneur dont l’image source est une busybox. Alors comme pour un run docker, vous pouvez aussi passer des commandes et par exemple vous connecter à un terminal :

kubectl run anothershell -it --image busybox -- sh

Là nous venons de lancer un pod et nous entrons directement dans le conteneur en question avec un shell à notre disposition. Mais nous pouvons également venir nous connecter à un shell d’un conteneur existant. Pour cela et comme pour docker, nous pouvons lancer un kubectl exec :

kubectl exec -ti <monpod> -- sh

Tout cela est assez facile à retenir si vous avez déjà pratiqué un peu de docker.

Comment lister les pods ?

kubectl get pods

Je vous invite à bien retenir la combinaison « kubectl get » qui revient en permanence sur kub. Elle permet de lister les objets d’un type donné.

Si vous êtes sur un cluster kubernetes, il est intéressant d’en revenr aux fondamentaux qu’il faut toujours garder en tête et notamment : kubernetes est un orchestrateur de conteneurs.

Ainsi, je vous invite à faire un :

kubectl get pods -o wide

L’option -o wide permet d’avoir plus d’information et notamment les les noeuds sur lesquels les conteneur ont été déployés. Ainsi poru aller plus loin vous pouvez vous rendre sur le serveur des pods que nous venons de lancer et lancer un simple

docker ps | grep "mycontainer\|another"

Vous devriez retrouver les conteneurs déployés par notre fameuse couche logique qui est le pod.

Vous pouvez aussi supprimer ces pods à l’aide de la commande :

kubectl delete pods <nom_du_pod>

Et un peu plus loin le deployment et le service

Alors maintenant nous allons encore empiler une brique logique sur les pods à savoir le deployement. Un deployment permet de lancer les pods de manière automatisée si on devait le résumer. Le deployment a des capacités étendues.

Ainsi, dans le deployment, nous le verrons plus tard, nous aurons un template de pods. C’est à dire la capcité à lancer et relancer des pods du même type… et même proposer de l’autoscaling de pod en fonction de la sollicitation des ressources ou non.

Alors comment créer un deployment qui va lancer un pod ?

Simplement avec la ligne de commande :

kubectl create deployment monnginx --image nginx

Avec cette ligne nous créons un déploiement de la manière la plus réduite qu’il existe à savoir en spécifiant juste l’image qui servira dans le pod à créer le ou les conteneurs. Dans notre cas, cette image est une nginx.

Je vous invite à lister ce nouvelle object de cette manière :

kubectl get deployment

Vous découvrez donc votre déploiement et si vous lancez un :

kubectl get pods

Vous retrouvez un pod préfixé du nom du déploiement.

Simple non ? Dans la pratique vous le verrez on ne lance presque jamais un pod seul mais vous le ferez par un deployment. Ce dernier apporte aussi de la persistance à votre pod notamment via un autre object créé par le deployment qui se nomme le replicaset. Il a principalement en charge l’existence de vos pods et le respect du bon nombre. Vous pouvez également lister les replicaset

kubectl get replicasets

Et si vous le souhaitez vous pouvez faire le test de supprimer un pod créé par votre deployment.

kubectl delete pods <nom_du_pod>

Que se passe-t-il si vous relisté les pods ensuite ? Kubernetes va recréer le nombre de pods que vous avez demandé de maintenir au deployment.

Alors comment supprimer définitivement les pods ? Simplement en supprimant le pod (il y a d’autres moyens pour d’autres cas de figures).

kubectl delete deployment monginx

Et là kubernetes va supprimer lui même les pods et replicaset.

Voici donc nos premier pas dans un cluster kubernetes réalisés. Si vous souhaitez progresser reportez vous à la playlist de formation kubernetes, c’est gratuit. Vous pouvez aussi retrouver le code pour faire vos tests ici. A bientôt !!

Raspberry et Kubernetes : tuto de montage et installation

Avant toute chose je tiens à remercier toute la communauté de xavki qui a participée à ce projet par le biais de dons.

Pour récapituler voici le matériel utilisé :

  • 3 Raspberry Pi 3 Modèle B
  • 3 Raspberry Pi 4 4G ram
  • 6 dissipateurs
  • Plaque cluster 6
  • Transfo USB
  • Swith 8 ports
  • 10 Cable RJ45
  • 6 Cables USB

Remarques :

  • les raspberry 4 s’alimente à partir d’usb c à la différence des Pi3
  • les pi 4 utilisent des connectiques micro-hdmi

1ère étape : le montage

L’étape la plus fun surement avec un petit jeu de lego. Dans cette vidéo, je vous explique les astuces et la manière d’assembler le tout.

2ème étape : l’installation de l’OS

Pour l’OS, j’ai choisi de faire simple avec un raspbian. Concernant la version j’ai préféré partir vers une stretch. En effet, lors de l’installation de docker celle-ci est la 18.09 avec la stretch et cette version est la maximum acceptée pour le moment par kubernetes.

Autre élément à retenir, la possibilité d’activé le ssh sans écrant et de configurer l’ip statique. Pour cela je vous explique tout dans la vidéo.

3ème étape : l’installation automatisée de kubernetes

Ansible est reconnu. J’ai pu confectionner un rôle à partir des informations recueillies à droite et à gauche. Vous pouvez trouver ce playbook dans ce dépôt.

Et voilà l’installation est terminée. Finalement elle est plutôt simple et relativement accessible.