Quand Buster pilote le porte conteneurs

 

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 😉