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.