Labos de clusters Kubernetes

 

Souvent quand on parle de cluster k8s de test on tombe sur le projet minikube. J'ai choisi ici de présenter d'autre projets permettant de mettre en place des clusters k8s de test. Je vais aborder les projets kind, k3d et microk8s, il en existe bien sûr d'autres, hésitez pas à les rajouter dans les commentaires.

kind

kind est un outils permettant de déployer Kubernetes en local avec des noeuds dans des conteneurs Dockers.

Prérequis

  • Docker
  • Go

Installation

go get -u sigs.k8s.io/kind
kind version

Créer un cluster

kind create cluster --name kindclust
Creating cluster "kindclust" ...
✓ Ensuring node image (kindest/node:v1.14.1) 
✓ Preparing nodes 
✓ Creating kubeadm config 
✓ Starting control-plane 
✓ Installing CNI 
✓ Installing StorageClass 

Utiliser le cluster

$ export KUBECONFIG="$(kind get kubeconfig-path --name="kindclust")"

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kindclust-control-plane Ready master 4m19s v1.14.1

Supprimer le cluster

$ kind delete cluster --name kindclust

k3d et k3s

k3s est une version très light de Kubernetes dont le but est principalement de tourner sur de petites architectures telles que raspberry, odroid, etc …

Mais il est tout à fait envisageable de faire tourner k3s sur une machine bureautique pour monter un cluster Kubernetes de développement/test. Ce qui peut permettre par rapport à Minukube de “simuler” plusieurs noeuds.

k3d est un outils permettant de bootstapper k3s avec dind.

Prérequis

Il faut bien sûr avec une machine avec Docker d’installé.

Installation de k3d

wget -q -O - https://raw.githubusercontent.com/rancher/k3d/master/install.sh | bash
k3d -version

Utiliser le cluster

Mettre à jour la variable KUBECONFIG

export KUBECONFIG=$KUBECONFIG:"$(k3d get-kubeconfig --name='k3s01')"

Changer de contexte avec kubectx (quoi vous utilisez pas kubectx ????)

kubectl get nodes
NAME STATUS ROLES AGE VERSION
2e9a5ab7eaa7 Ready 13h v1.14.1-k3s.4
4e4a4094e578 Ready 13h v1.14.1-k3s.4
6fd901d815be Ready 13h v1.14.1-k3s.4
7c26601aab2d Ready 13h v1.14.1-k3s.4
9ac365b71ae3 Ready 13h v1.14.1-k3s.4
a09b44d6afd9 Ready 13h v1.14.1-k3s.4
bdeaac1d2fd6 Ready 13h v1.14.1-k3s.4
c684254a2c5c Ready 13h v1.14.1-k3s.4
c964f37a64a5 Ready 13h v1.14.1-k3s.4
dc1c7080ed4f Ready 13h v1.14.1-k3s.4
eb2b259c3866 Ready 13h v1.14.1-k3s.4
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-695688789-6fqcg 1/1 Running 1 13h
kube-system helm-install-traefik-v5ckn 0/1 Completed 0 13h
kube-system svclb-traefik-2mlbf 2/2 Running 2 13h
kube-system svclb-traefik-6g4p8 2/2 Running 2 13h
kube-system svclb-traefik-72qp5 2/2 Running 2 13h
kube-system svclb-traefik-8cs7n 2/2 Running 2 13h
kube-system svclb-traefik-cjbqs 2/2 Running 2 13h
kube-system svclb-traefik-f6bql 2/2 Running 2 13h
kube-system svclb-traefik-fdrs7 2/2 Running 2 13h
kube-system svclb-traefik-g9k9l 2/2 Running 2 13h
kube-system svclb-traefik-kp488 2/2 Running 2 13h
kube-system svclb-traefik-pg7ql 2/2 Running 2 13h
kube-system svclb-traefik-tc9bs 2/2 Running 2 13h
kube-system traefik-55bd9646fc-n79gb 1/1 Running 1 13h

Lister les clusters

k3d l -a
+-------+------------------------------+--------+---------+
| NAME | IMAGE | STATUS | WORKERS |
+-------+------------------------------+--------+---------+
| k3s01 | docker.io/rancher/k3s:v0.5.0 | exited | 0/10 |
+-------+------------------------------+--------+---------+

Stopper un cluster

k3d stop --name k3s01

Démarrer un cluster

k3d start --name k3s01

Supprimer un cluster

k3d delete --name k3s01

Ma conclusion

Ces projets en complément de Minikube sont très intéressants pour expérimenter des cluster Kubernetes sur son poste de travail, mon préféré c'est kind, bien que k3s soit aussi très light à utiliser.

Hésitez pas à expérimenter et jouer avec les contextes kubectl pour passer d'un cluster à un autre.