Introduction
La plate-forme SCIGNE propose un service de conteneurs à la demande (container as a service) basé sur le projet OpenStack Magnum. Ce service permet de créer simplement un cluster de conteneurs Docker.
Les technologies Docker supportées sont Kubernetes et Swarm. D’autres technologies peuvent être ajoutées sur simple demande aux administrateurs de la plate-forme SCIGNE.
L’object de ce document est de fournir une information concise pour débuter dans l’utilisation du service de conteneurs (Magnum) d’OpenStack. Toutes les options ne sont pas traitées et peuvent être retrouvées dans la documentation officielle de ce module.
Environnement
L’accès à ce service nécessite que vous ayez un compte sur la plate-forme SCIGNE de l’IPHC et que votre client OpenStack soit correctement configuré. Une documentation dédiée détaille ces points.
Installation avec les paquets de la distribution
Nous recommendons d’utiliser les paquets de votre distribution Linux pour installer le client magnum.
Si vous avez un système d’exploitation Red Hat Linux ou dérivés (CentOS, Scientific Linux, …), le client magnum peut être installé avec la commande suivante :
$ sudo yum install python2-openstackclient python-magnumclient
Si vous avez un système d’exploitation Debian ou dérivés (Ubuntu, Linux Mint, …), le client magnum peut être installé avec la commande suivante :
$ sudo apt-get install python-openstackclient python-magnumclient
Installation avec PIP
Si votre système d’exploitation ne fournit pas de client OpenStack ou bien que la version est trop ancienne, vous pouvez utiliser PIP pour installer le client magnum :
$ sudo pip install python-openstackclient python-magnumclient
Vérification de l’installation
Pour vérifier que les commandes magnum et openstack sont bien installées, les commandes suivantes peuvent être utilisées :
$ magnum --version 2.8.0 $ openstack --version 3.14.2
La version qui est affichée peut être différente de celle qui est indiquée ci-dessus (ces valeurs correspondent à la version Pike d’OpenStack).
Gestion d’un cluster Kubernetes
Kubernetes (K8s)est un outil pour gérer le déploiement, la configuration et la montée en charge des applications conteneurisées. Le site Web de Kubernetes propose différents tutoriels sur l’utilisation de cette technologie.
Le service Cloud Computing de la plateforme SCIGNE est préconfiguré avec différents templates utilisables pour la création de clusters. Ces templates utilisent la technologie Docker pour fournir des conteneurs :
$ openstack coe cluster template list +--------------------------------------+-----------------------+ | uuid | name | +--------------------------------------+-----------------------+ | 1d6fcc5e-104e-475f-9254-f1e6f9a71896 | swarm-fedora-atomic29 | | eb8c8d8f-7359-4177-bcb8-3abe7d0ec3b8 | k8s-fedora-atomic29 | +--------------------------------------+-----------------------+
La valeur des uuid peuvent varier en fonction des projets (cette valeur est unique pour chaque projet). La sélection du template se fait par le nom. Dans ce tutoriel, le template k8s-fedora-atomic29 sera utilisé pour créer un cluster Kubernetes.
Création d’un cluster
La création d’un nouveau cluster est réalisée en une seule commande :
$ openstack coe cluster create --cluster-template k8s-fedora-atomic29 \ --node-count 2 --keypair cloudkey myk8s Request to create cluster 162ff0ac-b592-45f6-adde-2ac22dec0bf9 has been accepted. $ openstack coe cluster show myk8s +---------------------+------------------------------------------------------------+ | Field | Value | +---------------------+------------------------------------------------------------+ | status | CREATE_IN_PROGRESS | | cluster_template_id | afd84046-5e4e-495c-a5fa-38538aabe848 | | node_addresses | [] | | uuid | 162ff0ac-b592-45f6-adde-2ac22dec0bf9 | | stack_id | 23fdef04-9f54-475d-af20-ff62051a9730 | | status_reason | None | | created_at | 2019-08-28T04:37:19+00:00 | | updated_at | 2019-08-28T04:39:10+00:00 | | coe_version | None | | labels | {} | | faults | | | keypair | cloudkey | | api_address | None | | master_addresses | [] | | create_timeout | 60 | | node_count | 2 | | discovery_url | https://discovery.etcd.io/0102c375ecd5a7f96a1623dc0d292a4d | | master_count | 1 | | container_version | None | | name | myk8s | | master_flavor_id | m1.large | | flavor_id | m1.small | +---------------------+------------------------------------------------------------+
Il est important de remplacer la valeur cloudkey par le nom de votre clé SSH, utilisée pour vous connecter aux machines virtuelles du cloud OpenStack de la plateforme SCIGNE.
Le paramètre node-count permet de faire varier le nombre de noeuds qui sont créés. D’autres paramètres, détailles sur la page du projet Magnum, peuvent également être spécifiés lors de la création de ce cluster.
Le suivi de création du cluster est réalisée à l’aide de la commande précédente. Une fois que l’état est CREATE_COMPLETE (il faut attendre environ cinq minutes), le cluster est opérationnel et prêt à être utilisé :
$ openstack coe cluster show myk8s +---------------------+------------------------------------------------------------+ | Field | Value | +---------------------+------------------------------------------------------------+ | status | CREATE_COMPLETE | | cluster_template_id | afd84046-5e4e-495c-a5fa-38538aabe848 | | node_addresses | [u'134.158.151.214', u'134.158.151.216'] | | uuid | 162ff0ac-b592-45f6-adde-2ac22dec0bf9 | | stack_id | 23fdef04-9f54-475d-af20-ff62051a9730 | | status_reason | Stack CREATE completed successfully | | created_at | 2019-08-28T04:37:19+00:00 | | updated_at | 2019-08-28T04:43:10+00:00 | | coe_version | v1.11.1 | | labels | {} | | faults | | | keypair | cloudkey | | api_address | https://134.158.151.152:6443 | | master_addresses | [u'134.158.151.152'] | | create_timeout | 60 | | node_count | 2 | | discovery_url | https://discovery.etcd.io/0102c375ecd5a7f96a1623dc0d292a4d | | master_count | 1 | | container_version | 1.12.6 | | name | myk8s | | master_flavor_id | m1.large | | flavor_id | m1.small | +---------------------+------------------------------------------------------------+
L’adresse du master est celle qui nous intéresse (134.158.151.152). Elle nous permettra de nous connecter au cluster à l’aide de la clé SSH utilisée lors de la création du cluster et de vérifier que Kubernetes fonctionne correctement :
$ ssh -i ${HOME}/.novacreds/cloudkey fedora@134.158.151.152 [fedora@myk8s-vgsse252uk2f-master-0 ~]$ kubectl cluster-info Kubernetes master is running at http://localhost:8080 To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. [fedora@myk8s-vgsse252uk2f-master-0 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION myk8s-vgsse252uk2f-master-0 Ready master 11m v1.11.1 myk8s-vgsse252uk2f-minion-0 Ready <none> 11m v1.11.1 myk8s-vgsse252uk2f-minion-1 Ready <none> 11m v1.11.1
Les paramètres de connexion au cluster Kubernetes peuvent aussi être récupérées en utilisant le client OpenStack :
$ openstack coe cluster config myk8s export KUBECONFIG=/home/user/config
Il faut noter que le chemin /home/user est donné à titre d’exemple et sera différent sur votre système d’exploitation.
Le fichier /home/user/config contient les paramètres du cluster :
apiVersion: v1 clusters: - cluster: certificate-authority: /home/user/ca.pem server: https://134.158.151.152:6443 name: myk8s contexts: - context: cluster: myk8s user: myk8s name: myk8s current-context: myk8s kind: Config preferences: {} users: - name: myk8s user: client-certificate: /home/user/cert.pem client-key: /home/user/key.pem
Modification du cluster
Le cluster Kubernetes peut être facilement agrandi :
$ openstack coe cluster update myk8s replace node_count=4 Request to update cluster k8s-cluster4 has been accepted. $ openstack coe cluster show myk8s +---------------------+------------------------------------------------------------+ | Field | Value | +---------------------+------------------------------------------------------------+ | status | UPDATE_IN_PROGRESS | | cluster_template_id | afd84046-5e4e-495c-a5fa-38538aabe848 | | node_addresses | [u'134.158.151.214', u'134.158.151.216'] | | uuid | 162ff0ac-b592-45f6-adde-2ac22dec0bf9 | | stack_id | 23fdef04-9f54-475d-af20-ff62051a9730 | | status_reason | None | | created_at | 2019-08-28T04:37:19+00:00 | | updated_at | 2019-08-28T04:57:42+00:00 | | coe_version | v1.11.1 | | labels | {} | | faults | | | keypair | cloudkey | | api_address | https://134.158.151.152:6443 | | master_addresses | [u'134.158.151.152'] | | create_timeout | 60 | | node_count | 4 | | discovery_url | https://discovery.etcd.io/0102c375ecd5a7f96a1623dc0d292a4d | | master_count | 1 | | container_version | 1.12.6 | | name | myk8s | | master_flavor_id | m1.large | | flavor_id | m1.small | +---------------------+------------------------------------------------------------+
Après quelques minutes, les nouveaux noeuds sont utilisables :
$ openstack coe cluster show myk8s -c status +--------+-----------------+ | Field | Value | +--------+-----------------+ | status | UPDATE_COMPLETE | +--------+-----------------+
Les nouveaux noeuds sont également visibles depuis le master :
$ ssh -i ${HOME}/.novacreds/cloudkey fedora@134.158.151.152 [fedora@myk8s-vgsse252uk2f-master-0 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION myk8s-vgsse252uk2f-master-0 Ready master 18m v1.11.1 myk8s-vgsse252uk2f-minion-0 Ready <none> 18m v1.11.1 myk8s-vgsse252uk2f-minion-1 Ready <none> 18m v1.11.1 myk8s-vgsse252uk2f-minion-2 Ready <none> 1m v1.11.1 myk8s-vgsse252uk2f-minion-3 Ready <none> 1m v1.11.1
Arrêt du cluster
Le cluster Kubernetes peut être supprimé avec la commande suivante :
$ openstack coe cluster delete myk8s
Documentation complémentaire
Les sites suivants peuvent être consultés pour obtenir plus d’informations concernant l’utilisation de Magnum et de Kubernetes :