Bootstrap Kubernetes


Une fois Talos installé, l’étape suivante c’est de bootstrapper Kubernetes. C’est le moment où ton serveur devient un cluster.

Le bootstrap

Avec Talos, le bootstrap c’est une commande :

# Configurer talosctl pour parler au node
export TALOSCONFIG=./talosconfig

# Vérifier que le node est prêt
talosctl -n 192.168.1.100 health

# Bootstrap le cluster
talosctl -n 192.168.1.100 bootstrap

Tu lances ça et… tu attends. Talos initialise etcd, démarre le control plane, configure tout.

Ça prend 2-3 minutes. Quand c’est fini, t’as un cluster Kubernetes fonctionnel.

Récupérer le kubeconfig

# Générer le kubeconfig
talosctl -n 192.168.1.100 kubeconfig ./kubeconfig

# L'utiliser
export KUBECONFIG=./kubeconfig

# Vérifier
kubectl get nodes

Et là, magie :

NAME              STATUS   ROLES           AGE   VERSION
r430-k8s-master   Ready    control-plane   1m    v1.29.1

Mon premier cluster Kubernetes. Sur mon propre hardware. Je dois avouer que j’ai fait un petit screenshot.

Premier pod

Évidemment, faut tester :

kubectl run nginx --image=nginx
kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          10s

Un pod qui tourne ! Bon ok c’est juste un nginx, mais quand même.

Comprendre ce qui tourne

Sur un cluster Talos fresh, t’as déjà pas mal de trucs qui tournent :

kubectl get pods -n kube-system
NAME                                      READY   STATUS    
coredns-5dd5756b68-xxxxx                  1/1     Running   
coredns-5dd5756b68-yyyyy                  1/1     Running   
kube-apiserver-r430-k8s-master            1/1     Running   
kube-controller-manager-r430-k8s-master   1/1     Running   
kube-flannel-xxxxx                        1/1     Running   
kube-proxy-xxxxx                          1/1     Running   
kube-scheduler-r430-k8s-master            1/1     Running   
  • kube-apiserver : L’API Kubernetes
  • etcd : La base de données du cluster
  • kube-scheduler : Décide où placer les pods
  • kube-controller-manager : Gère l’état du cluster
  • coredns : DNS interne
  • kube-flannel : Le réseau overlay
  • kube-proxy : Le proxy réseau

Single node vs Multi node

J’ai un seul serveur, donc un seul node. C’est pas “production ready” (pas de HA), mais pour un homelab c’est parfait.

Le control plane et les workloads tournent sur la même machine. Si j’avais plusieurs serveurs, je pourrais avoir des masters séparés des workers.

Les premières commandes utiles

# Voir tous les pods
kubectl get pods -A

# Voir les logs d'un pod
kubectl logs nginx

# Entrer dans un pod
kubectl exec -it nginx -- /bin/bash

# Décrire une ressource
kubectl describe pod nginx

# Supprimer un pod
kubectl delete pod nginx

Ce qui manque encore

À ce stade, j’ai un cluster qui tourne mais :

  • Pas de LoadBalancer : Les services de type LoadBalancer restent en “pending”
  • Pas de storage persistant : Les PVCs marchent pas
  • Pas d’ingress : Pas de moyen d’exposer des services en HTTP

C’est les prochaines étapes.

La fierté du premier cluster

Y’a un truc satisfaisant à voir kubectl get nodes et voir ton propre serveur. C’est pas un cluster managé sur le cloud, c’est ta machine, ton réseau, ta config.

Maintenant faut le rendre utile.


Prochain article : MetalLB et le réseau - LoadBalancer sur bare metal.