Kind (Kubernetes in Docker) permet de déployer un cluster Kubernetes de façon à ce que chacun des nodes du cluster tourne dans un container Docker.

Pour l’utiliser il suffit simplement d’installer Docker ainsi que le binaire kind. Ce dernier peut-être installé via un package manager ou bien en récupérant le binaire déja buildée. Les différentes options d’installation sont présentés dans la documentation

Les Commandes

Une fois installé, la liste des commandes disponibles peut être obtenue avec la commande suivante:

kind

Vous obtiendrez un résultat similaire à celui ci-dessous:

kind creates and manages local Kubernetes clusters using Docker container 'nodes'

Usage:
  kind [command]

Available Commands:
  build       Build one of [node-image]
  completion  Output shell completion code for the specified shell (bash, zsh or fish)
  create      Creates one of [cluster]
  delete      Deletes one of [cluster]
  export      Exports one of [kubeconfig, logs]
  get         Gets one of [clusters, nodes, kubeconfig]
  help        Help about any command
  load        Loads images into nodes
  version     Prints the kind CLI version

Flags:
  -h, --help              help for kind
      --loglevel string   DEPRECATED: see -v instead
  -q, --quiet             silence all stderr output
  -v, --verbosity int32   info log verbosity, higher value produces more output
      --version           version for kind

Use "kind [command] --help" for more information about a command.

Création d’un cluster composé d’un seul node

Il suffit de lancer la commande suivante pour créer un cluster (seulement un node ici) en quelques dizaines de secondes:

kind create cluster --name k8s

Kind a automatiquement créé un context et l’a définit en tant que context courant de notre client kubectl.

$ kubectl config get-contexts
CURRENT   NAME         CLUSTER      AUTHINFO     NAMESPACE
*         kind-k8s     kind-k8s     kind-k8s
...

Nous pouvons alors lister les nodes du cluster (un seul ici)

kubectl get nodes

HA Cluster

Kind permet également de mettre en place un cluster comportant plusieurs nodes, pour cela il faut utiliser un fichier de configuration. Par exemple, le fichier suivant (config.yaml) définit un cluster de 3 nodes: 1 master et 2 workers.

# config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

Pour mettre en place ce nouveau cluster, il suffit de préciser le fichier de configuration dans les paramètres de lancement de la commande de création.

kind create cluster --name k8s-2 --config config.yaml

Comme précédemment, Kind a automatiquement créé un context et l’a définit en tant que context courant.

$ kubectl config get-contexts
CURRENT   NAME         CLUSTER      AUTHINFO     NAMESPACE
          kind-k8s     kind-k8s     kind-k8s
*         kind-k8s-2   kind-k8s-2   kind-k8s-2
...

Nous pouvons dont directement lister les nodes, qui sont au nombre de 3 dans ce nouveau cluster:

kubectl get nodes

La commande suivante permet de lister les clusters présents:

kind get clusters

Celle-ci devrait renvoyer la liste suivante:

k8s
k8s-2

Cleanup

Afin de supprimer un cluster créé avec Kind, il suffit de lancer la commande kind delete cluster --name CLUSTER_NAME.

Les commandes suivantes suppriment les 2 clusters créés précédemment:

kind delete cluster --name k8s
kind delete cluster --name k8s-2