Kubernetes

De Justine's wiki
Aller à la navigation Aller à la recherche

Présentation vite fait

Kubernetes (communément appelé « K8s2 ») est un système open source qui vise à fournir une « plate-forme permettant d'automatiser le déploiement, la montée en charge et la mise en œuvre de conteneurs d'application sur des clusters de serveurs »3. Il fonctionne avec toute une série de technologies de conteneurisation, et est souvent utilisé avec Docker. Il a été conçu à l'origine par Google, puis offert à la Cloud Native Computing Foundation.

Un cluster k8s contient deux types de machines (ou nodes):

  • Un Master qui coordonne le cluster: scheduling, maintien de leur état recherché, scaling, application des mises à jour...
  • Des workers, où tournent les applications: Cela peut être une VM ou une machine physique, utilisé comme worker et managée par le Master. Typiquement, un worker contient des outils pour gérer les opérations sur le conteneur (Docker, rkt) et Kubelet, un agent servant à manager le noeud. Un cluster de prod devrait avoir au moins trois noeuds.

Mise en oeuvre

Je pars d'un cluster à 2 machines sous Debian 11.

Je vais utiliser k3s pour la mise en place, une distribution légère de k8s très rapide à installer.

MEP

Prérequis

  • ici
  • 2 nodes ne peuvent pas avoir le même hostname
  • 512Mo de RAm et 1 CPU
  • SSD recommandé

Ports:

  • 6443 pour tous les nodes (protocole ?)
  • 8472/udp si utilisation de VXLAN Flannel
  • Port 10250 pour le serveur de métriques
  • Ports 2379 et 2380 si utilisation de etcd

Install

Mon premier node sera master, le second un simple node. Tout se fait en root.

Sur le master:

curl -sfL https://get.k3s.io | sh -
kubectl get node

Le script installe kubernetes et je vois que mon serveur est désormais noeud du cluster.

Mon cluster est identifié par un token présent sur le master. Je vais le récupérer:

/var/lib/rancher/k3s/server/node-token

Sur le worker, c'est un peu la même chose, mais on ajoute l'adresse du master et le token:

curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -

Je peux voir mes 2 machines sur le worker:

kubectl get node

Désinstallation si besoin

Pour un master:

/usr/local/bin/k3s-uninstall.sh

Pour un worker:

/usr/local/bin/k3s-agent-uninstall.sh