Quel titre bizarre pour un article technique ?
En fait non, je rappelle que Buster est le nom de la dernière version de Debian, la version 10. Buster fait référence au chien dans Toy Story.
Le porte conteneur actuel, c'est bien sûr la référence à Kubernetes.
Donc en résumé, cet article présente comment installer un cluster Kubernetes sous Debian 10.
La première version de se cluster va être composée par :
- un manager
- deux workers
Les machines dans mon POC sont des vms sur un Proxmox mais toutes vms ou serveur dédié faisant tourner une Debian Buster est valable. Je privilégie aussi un réseau local pour la communication entre les noeuds.
Préparation des vms
On va sur chaque vms :
- configurer correctement le hostname des machines (fichiers hosts et hostname)
- supprimer le swap : swapoff et suppression dans la fstab
- installer docker
- installer les outils pour kubernetes
Pour Docker
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt-get install docker-ce
Pour kubernetes
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt update
apt-get install kubelet kubeadm kubectl
Mise en place du master
Sur la machine master initialisation du cluster.
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.72.101
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
Ne pas oublier de récupérer le token pour la suite.
Adaptez bien sur le réseau local (--apiserver-advertise-address=192.168.72.101) et le réseau pour les pods (--pod-network-cidr=10.244.0.0/16).
Mettre en place le SNI
Pour ce cas là j'ai mis du Flannel, mais on pourrait mettre du Calico de la même façon.
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
sysctl -p
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
Mise en place des workers
Reste plus qu'à mettre en place les workers. A faire sur chaque machine.
kubeadm join 192.168.72.101:6443 --token ******* --discovery-token-ca-cert-hash sha256:*********
Vérifications
Sur le master, vérifier, après quelques minutes, que les noeuds sont bien intégrés au cluster.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aukube0 Ready master 11m v1.15.1
aukube01 Ready <none> 2m53s v1.15.1
aukube02 Ready <none> 90s v1.15.1
Cluster en fonction
Le cluster fonction, plus qu'à déployer des pods, deployment, services, namespaces, etc ...
Par la suite j’intégrerais ce cluster dans Rancher et petit défi supplémentaire, j’intégrerais un nœud Windows 😉