cloud:2017:tp_kubernetes

Kubernetes

Kubernetes est un orchestrateur de conteneur souvent utilisé avec docker. Vous devez aujourd'hui créer un cluster kubernetes en utilisant l'instaleur RKE (Rancher Kubernetes Engine). RKE est un instaleur qui utilise docker pour contenir les différents composant de Kubernetes. Il est donc nécessaire de disposer de machines où docker est installé et fonctionnel.

Dans le projet openstack ASR5/7, créez 3 machines :

  • basées sur l'instantané d'instance snap-docker-ready
  • avec le flavor m1-small

Nous allons suivre ce tutoriel L'une des machines utilisées sera le master assumant les rôles de control-pane et etcd et les 2 autres seront des workers.

Modifiez ces machines pour que l'utilisateur ubuntu soit utilisateur de docker (c'est à dire dans le groupe docker). Vérifiez bien le fonctionnement et la possibilité de télécharger quelquechose avec la commande docker search. La version de docker utilisée doit être compatible avec RKE : 17.03.x, pour cela vous devrez peut-être modifier cette version en réinstallant docker avec les commandes

// Pour mettre a jour la base des paquets
apt-get update
// pour voir les versions disponibles de docker
apt-cache madison docker-engine
// pour installer la bonne version de docker 
apt-get install docker-engine=<version>

Ensuite, chaque machine avoir un moyen de se connecter par ssh sur les autres. Pour cela :

  • Créez une paire de clefs ssh sur le master (commande ssh-keygen) et placez les à la position par défaut dans le fichier .ssh/id_rsa et .ssh/id_rsa.pub.
  • Copiez la clef secrette sur les autres machines dans le même répertoire
  • Ajoutez la clef au fichier des clefs autorisées (.ssh/authorized_keys). Attention de conserver les clefs déjà présentes (celles qui vous permettent de vous connecter à ces serveurs).

Enfin, les machines sont configurées pour utiliser le proxy de l'université. Mais cela n'est pas souhaitable lorsqu'elles se connectent entre elle. Il vous faut donc ajouter la variable d'environnement

NO_PROXY=127.0.0.1,localhost,192.168.76.XX,192.168.76.YY,192.168.76.ZZ

192.168.76.XX,192.168.76.YY et 192.168.76.ZZ sont les adresses de vos machines.

Installez RKE depuis le dépot : releases C'est un simple fichier exécutable. Utilisez le avec la commande :

./rke config

Cette commande est un script interactif qui pose des question pour créer le fichier de configuration du cluster. Créer un cluster sur vos 3 machines, la première devant assurer le rôle de controle-pane et celui de etcd, les deux autres seront worker. Attention, dans la plupart des cas, il faut utiliser les réponses par défaut, mais contrairement à ce qui est proposé, il ne faut pas que les adresses du cluster utilisent le réseau 10.42.0.0/16 car ce sont celle du réseau wifi à l'université ce qui pourrait poser des problèmes de connexions.

Cette commande crée le fichier de configuration du cluster cluster.yml.

L'installation se lance simplement avec la commande

./rke up

depuis le répertoire où se trouve le fichier cluster.yml.

Si tout se passe bien, la commande se termine par

...
INFO[0075] [addons] User addon deployed successfully..
INFO[0075] Finished building Kubernetes cluster successfully

Le cluster est maintenant en place. Il faut un logiciel client pour le piloter.

Installez le package kubectl comme indiqué ici.

La génération du cluster à créé un fichier de description kube_config_cluster.yml. C'est un fichier qui permet à kubectl de contacter le cluster. Vous pouvez soit copier ce fichier sous le nom ~/.kube/config soit ajouter –kubeconfig nomdufichier à chaque commande.

Vous pouvez tester le cluster avec un premier pod (l'exemple est pris ici.

Créer un fichier de description test_www.yml :

apiVersion: v1
kind: Pod
metadata:
  name: www
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80
          hostPort: 8080

Et utiliser les commandes :

// pour créer le pod
kubectl create -f kube-nginx.yml
// pour voir les pods éxistant
kubectl get pods
// pour voir les détails d'un pod
kubectl describe pod <nomdupod>
  • cloud/2017/tp_kubernetes.txt
  • Dernière modification : 2019/01/14 11:31
  • de fabien.rico