Débuter avec Kubernetes¶
Ce tutoriel a pour objectif de présenter les principes de base de la kubernetisation avec Kubernetes
que l'on va appeler k8s
par la suite. Nous verrons un aperçu des ressources de l'API standard de k8s : namespace, pods, services, déploiements, volumes, configmaps et secrets.
Une brève introduction de k8s (diapositifs)
Prérequis¶
Pour suivre ce tutoriel, deux prérequis sont nécessaires :
- avoir installé Kubernetes (voir ci-dessous) via la distribution
K3s
/K3d
(VM vs conteneur) - docker est requis pour installer via
k3d
- kubectl pour interagir avec un cluster
- avoir un compte sur le gitlab de l'IN2P3 (https://gitlab.in2p3.fr)
Installation de Kubernetes avec K3d
¶
K3s est une distribution minimaliste de Kubernetes fournie par Rancher Lab basée sur des machines virtuelles. K3d est un wrapper léger de k3s pour fonctionner avec Docker.
Pour installer k3d, suivez les instructions en fonction du système d'exploitation que vous utilisez.
- Linux : Instructions officielles
- Mac :
Initialisation d'un cluster k8s¶
Vous pouvez à présent instancier localement un cluster k8s :
Cela crée 3 conteneurs Docker (un utilitaire, un loadbalancer basé sur Nginx, un serveur qui joue le rôle de master et worker):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41820d57c14c ghcr.io/k3d-io/k3d-tools:5.8.2 "/app/k3d-tools noop" 2 days ago Up 2 days k3d-k3s-default-tools
2e001a6247a1 ghcr.io/k3d-io/k3d-proxy:5.8.2 "/bin/sh -c nginx-pr…" 2 days ago Up 2 days 80/tcp, 0.0.0.0:54670->6443/tcp k3d-k3s-default-serverlb
01bc06102764 rancher/k3s:v1.31.5-k3s1 "/bin/k3d-entrypoint…" 2 days ago Up 2 days k3d-k3s-default-server-0
Pour tester si k8s
est correctement installé, exécutez dans un terminal l'utilitaire kubectl
qui nous permet de contrôler un cluster k8s via l'API :
La sortie devrait ressembler à quelque chose comme :
Un répertoir .kube
dans lequel sont stockés les configurations permettant d'accéder aux clusters (adresse de l'API et certificats TLS pour s'authentifier) est aussi crée :
Il est aussi possible d'accéder aux informations de configuration via :
Lorsque l'on souhaite changer de cluster, il est aussi possible d'exporter le chemin du fichier de configuration via la variable KUBECONFIG
:
Remarque
Un fichier config
peut contenir la configuration des plusieurs clusters. S'il existe déjà, k3d
y ajoutera une configuration.
Pour vérifier l'accès au cluster via kubectl
:
Cela doit renvoyer vers les 3 services du cluster : Kubernetes control plane, CoreDNS, Metrics-server et le noeud qui les hébergent k3d-k3s-default-server-0
.
Configuration¶
Il est utile de configurer un peu son environnement de développement avec des alias et des plugins.
Alias¶
Remarque
A partir de cette section la commande kubectl
sera notée comme k
.
Voici quelques alias très utiles et la liste complète des alias de kubectl
.
alias k='kubectl'
alias kg='kubectl get'
alias kgpo='kubectl get pod'
alias kall='kubectl get all'
alias ksysgpo='kubectl --namespace=kube-system get pod'
alias krm='kubectl delete'
alias krmf='kubectl delete -f'
alias krming='kubectl delete ingress'
alias krmingl='kubectl delete ingress -l'
alias krmingall='kubectl delete ingress --all-namespaces'
alias kgsvcoyaml='kubectl get service -o=yaml'
alias kgsvcwn='kubectl get service --watch --namespace'
alias kgsvcslwn='kubectl get service --show-labels --watch --namespace'
alias kgwf='kubectl get --watch -f'
...
Remarque
Il est aussi possible d'utiliser des raccourcis pour les objets de k8s : pod
=> po
, namespace
=> ns
...
Plugins et outils¶
L'écosystème de k8s
est très important et voici donc quelques plugins utiles.
-
Krew :
Gestion des plugins de
kubectl
. Quelques exemples utiles :ctx
: quick context (current cluster) changesns
: quick current namespace changeswhoami
: who the cluster thinks you are from your authenticationwho-can
: RBAC rules introspection
Instructions officielles d'installation
Exemple d'utilisation :
-
Kubens :
Utilitaire de gestion de namespace. Même que
kubectl ns
si installé viakrew
. -
Kubectx :
Utilitaire de gestion de contexte. Permet de changer de cluster k8s. Même que
kubectl ctx
. -
Stern :
Multi pod and container log tailing for k8s.
Peut être installé via
kubectl krew install stern
et utilisé après commek stern ...
Pour voir la liste complète des plugins :
Les outils additionnels :
-
Helm :
Gestionnaire de paquet de k8s que nous utiliserons dans une section ultérieure.