====== Kubernetes ====== //Kubernetes// est un orchestrateur de conteneur souvent utilisé avec docker. Vous devez aujourd'hui créer un cluster //kubernetes// en utilisant l'instaleur {{https://github.com/rancher/rke/|RKE (Rancher Kubernetes Engine)}}. RKE est un instaleur qui utilise docker pour contenir les différents composants de //Kubernetes//. Il est donc nécessaire de disposer de machines où docker est installé et fonctionnel. =====Préparation===== Dans le projet openstack TIW7, créez 3 machines : * basées sur l'instantané d'instance ''snap-kube'' * avec le flavor ''m1-small'' LE TP est basé sur {{https://rancher.com/an-introduction-to-rke/|ce tutoriel}}. Il a été adapté pour répondre aux contraintes des machines de l'université. Il permet de créer un petit cluster avec 3 machines. L'une des machines sera le master assumant les rôles de //control-pane// et //etcd// et les 2 autres seront des //workers//. Il est important pour ce TP d'utiliser toujours le même utilisateur. Par exemple ''ubuntu''. C'est cette utilisateur qui va exécuter les scripts automatique et si une parti des commandes que vous tapez est fait au nom de ''roo'', cetains fichiers n'auront pas les bon droits ou seront à la mauvaise place. Si cela n'est pas déjà fait, modifiez ces machines pour que l'utilisateur ''ubuntu'' soit utilisateur de docker (c’est-à-dire dans le groupe ''docker''). En tout cas, vérifiez bien le fonctionnement et la possibilité de télécharger quelque chose 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 # réinstaller les dépots docker sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # mettre à jour la base de données des paquets sudo apt-get update # pour voir les versions disponibles de docker sudo apt-cache madison docker-ce # pour installer la bonne version de docker sudo apt-get install docker-ce= Ensuite, L'utilisateur ''ubuntu'' de 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''. NE mettz pas de mots de passe sur la clef ! * Copiez la clef secrète 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 où ''192.168.76.XX'', ''192.168.76.YY'' et ''192.168.76.ZZ'' sont les adresses de vos machines. Pour modifier les variables d’environnement par défaut du système, il y a plusieurs moyens. Par exemple, ajouter la variable dans le fichier ''/etc/environment''. Ce fichier est lu à la connexion, pour que la modification prenne effet, il faut se déloguer et ce reloguer. Attention, quand on modifie une chose comme cela il faut toujours vérifier avec une nouvelle connexion **sans se déloguer de la première** afin de pouvoir réparer en cas de problème. =====Installation de RKE===== Installez RKE depuis le dépot : {{https://github.com/rancher/rke/releases/}}. Les versions de ce logiciel sont importante. Veuillez bien à télécharger une version stable. Par exemple au moment ou ce TP est écrit, la bonne version est ''v0.1.17'', les versions proposée avant (''v0.2.0-rc8'' et ''v0.2.0-rc9'') sont des version //Release Candidate// c'est à dire presque stables mais ne sont utilisables que pour le développement. Le fichier proposé est un simple fichier exécutable. Vous devez le télécharger (commande ''wget''), lui donner le nom ''rke'' et le rendre exécutable (commande ''chmod''). Utilisez-le avec la commande : ./rke config Cette commande est un script interactif qui pose des questions 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''. =====Installation de kubernetes ===== 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é {{https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl|ici}}). La génération du cluster à créer 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 {{http://www.projectatomic.io/docs/gettingstarted/|ici}}. Créer un fichier de description nginx.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 nginx.yml # pour voir les pods éxistant kubectl get pods # pour voir les détails d'un pod kubectl describe pod