kubectl sur une distribution « Ubuntu 20.04 ».La mise en place d’un environnement pour apprendre Kubernetes n’est pas une opération simple et réclame de nombreuses connaissances au niveau système. Il est par ailleurs fortement recommandé d’avoir de solides connaissances sur Linux ou au moins Unix en général:
Il existe des alternatives tout à fait viables pour surpasser ces difficultés et la possibilité d’avoir un cluster « Kubernetes » clés en main, en utilisant par exemple:
Pour la mise en place de K8s note choix s’est porté sur « Minikube ».
Minikube est un projet qui a pour but de fournir un environnement bac à sable à un utilisateur pour expérimenter le fonctionnement de Kubernetes. Ce mécanisme n’a pas vocation à servir à l’hébergement d’application en production, mais à expérimenter en toute sécurité le fonctionnement de Kubernetes. À noter qu’il existe des alternatives comme k3s, kind et MicroK8s.
L’installation du cluster Kubernetes par Minikube utilise un driver pour approvisionner les instances « nodes ». Ces instances peuvent être soit des containers Docker ou des machines virtuelles (pilotée par un hyperviseur). À noter qu’il existe de nombreux choix d’hyperviseurs comme VirtualBox ou KVM sous Linux. Dans cet atelier on a choisi docker.
Docker propose ses propres binaires sous forme de paquets. Dans le cas des distributions compatibles Ubuntu, cette installation se fait à l’aide des instructions illustrées dans le script suivant:
#!/bin/sh
sudo apt-get update -y
# Install required packages
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# Set up the repository
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Install Docker Engine
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Add user access
sudo usermod -aG docker ubuntu
Relancez ensuite la session de l’utilisateur afin de prendre en compte la configuration des accès à Docker avec l’utilisateur régulier « ubuntu ».
« kubectl » est le point d’entré universel pour contrôler tous les types de cluster Kubernetes. C’est un client en ligne de commande qui communique en REST avec l’API d’un cluster K8s.
L’administration de Kubernetes réclame de nombreux utilitaires qui sont rarement disponibles sous forme de paquets système prêts à l’emploi ou, lorsque c’est le cas, avec des versions qui ne sont pas à jour. D’autant plus que chaque outil va réclamer une suite d’actions immuables :
De fait, disposer d’outils prêts à l’emploi à la bonne version peut réclamer un certain effort. Cette situation a poussé Alex Ellis à créer Arkade.
L’installation se fait avec cette instruction :
curl -sLS https://get.arkade.dev | sudo sh
Ensuite il faut configurer arkade
export PATH=$PATH:$HOME/.arkade/bin
echo "export PATH=$PATH:$HOME/.arkade/bin" >> ~/.bashrc
Ensuite il faut rafraichir la session avec:
source ~/.bashrc
La commande arkade est maintenant disponible. Afin d’installer kubectl, utilisez le mot-clé get suivi de son nom:
arkade get kubectl
sudo mv ~/.arkade/bin/kubectl /usr/local/bin/
Afin de vous assurer que l’installation est correcte, lancez la commande:
kubectl version -o yaml
Une autre alternative des instructions d’installation sont récupérables sur l’emplacement suivant: kubectl
Minikube se présente sous la forme d’un binaire à télécharger. Il faut le placer dans les chemins de l’utilisateur (variable d’environnement PATH) afin de pouvoir s’en servir. Dans le cas où Arkade serait déjà présent, utilisez l’instruction suivante:
arkade get minikube
sudo mv ~/.arkade/bin/minikube /usr/local/bin/
On peut aussi utiliser le site officiel minikube. Afin de vous assurer que l’installation est correcte, lancez la commande:
minikube version
Pour permettre à « kubectl » et « minikube » de compléter le nom des commandes et ressources avec , il est utile d’installer l’autocomplétions pour Bash et de la configurer avec les commandes suivantes:
sudo apt-get install bash-completion
source /usr/share/bash-completion/bash_completion
Ensuite exécutez les commandes suivantes:
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source <(minikube completion bash)
echo "source <(minikube completion bash)" >> ~/.bashrc
source /usr/share/bash-completion/bash_completion
On peut aussi créer des alias et ajouter l’autocomplétions avec les instructions suivantes:
alias kc='kubectl'
complete -o default -F __start_kubectl k
Ensuite rafraichir la session avec la commande suivante:
source ~/.bashrc
L’instruction start de minikube permet deux choses: le démarrage du cluster et la création de la machine Minikube. On va créer un nouveau profile « kubelabs ».
minikube start -p kubelabs --kubernetes-version v1.25.0 --vm-driver docker --container-runtime containerd --memory 3072 --cni calico
Listez les profiles
minikube profile list
Basculez dans le nouveau profile « kubelabs »
minikube profile kubelabs
Vérifier le « status » du cluster K8s
minikube status
Pour explorer notre cluster K8s on va commencer par Lister les « nodes » du cluster
kubectl get nodes
Ajoutez un node avec la commande suivante:
minikube node add --worker
Accédez à la machine (node) contrôle plane
minikube ssh
Sortez de la machine master (CTRL + D) Accédez à la machine (node) worker
minikube ssh -n kubelabs-m02
Sortez de la machine worker (CTRL + D)
Minikube embarque des extensions qui permettent de prendre en charge certaines fonctions, comme :
L’instruction « addons » suivie du mot-clé « list » permet de récupérer les extensions (plugins) disponibles. Ci-dessous la commande correspondante:
minikube addons list