125 lines
7.0 KiB
Markdown
125 lines
7.0 KiB
Markdown
|
---
|
|||
|
title: Installer Kubernetes avec Kubespray (on-premises et fournisseurs de cloud)
|
|||
|
content_template: templates/concept
|
|||
|
---
|
|||
|
|
|||
|
{{% capture overview %}}
|
|||
|
|
|||
|
Cette documentation permet d'installer rapidement un cluster Kubernetes hébergé sur GCE, Azure, Openstack, AWS, vSphere, Oracle Cloud Infrastructure (expérimental) ou sur des serveurs physiques (bare metal) grâce à [Kubespray](https://github.com/kubernetes-incubator/kubespray).
|
|||
|
|
|||
|
Kubespray se base sur des outils de provisioning, des [paramètres](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/ansible.md) et playbooks [Ansible](http://docs.ansible.com/) ainsi que sur des connaissances spécifiques à Kubernetes et l'installation de systèmes d'exploitation afin de fournir:
|
|||
|
|
|||
|
* Un cluster en haute disponibilité
|
|||
|
* des composants modulables
|
|||
|
* Le support des principales distributions Linux:
|
|||
|
* Container Linux de CoreOS
|
|||
|
* Debian Jessie, Stretch, Wheezy
|
|||
|
* Ubuntu 16.04, 18.04
|
|||
|
* CentOS/RHEL 7
|
|||
|
* Fedora/CentOS Atomic
|
|||
|
* openSUSE Leap 42.3/Tumbleweed
|
|||
|
* des tests d'intégration continue
|
|||
|
|
|||
|
Afin de choisir l'outil le mieux adapté à votre besoin, veuillez lire [cette comparaison](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/comparisons.md) avec [kubeadm](/docs/admin/kubeadm/) et [kops](../kops).
|
|||
|
|
|||
|
{{% /capture %}}
|
|||
|
|
|||
|
{{% capture body %}}
|
|||
|
|
|||
|
## Créer un cluster
|
|||
|
|
|||
|
### (1/5) Prérequis
|
|||
|
|
|||
|
Les serveurs doivent être installés en s'assurant des éléments suivants:
|
|||
|
|
|||
|
* **Ansible v2.6 (ou version plus récente) et python-netaddr installés sur la machine qui exécutera les commandes Ansible**
|
|||
|
* **Jinja 2.9 (ou version plus récente) est nécessaire pour exécuter les playbooks Ansible**
|
|||
|
* Les serveurs cibles doivent avoir **accès à Internet** afin de télécharger les images Docker. Autrement, une configuration supplémentaire est nécessaire, (se référer à [Offline Environment](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/downloads.md#offline-environment))
|
|||
|
* Les serveurs cibles doivent être configurés afin d'autoriser le transfert IPv4 (**IPv4 forwarding**)
|
|||
|
* **Votre clé ssh doit être copiée** sur tous les serveurs faisant partie de votre inventaire Ansible.
|
|||
|
* La configuration du **pare-feu n'est pas gérée**. Vous devrez vous en charger en utilisant votre méthode habituelle. Afin d'éviter tout problème pendant l'installation nous vous conseillons de le désacttiver.
|
|||
|
* Si Kubespray est exécuté avec un utilisateur autre que "root", une méthode d'autorisation appropriée devra être configurée sur les serveurs cibles (exemple: sudo). Il faudra aussi utiliser le paramètre `ansible_become` ou ajouter `--become` ou `b` à la ligne de commande.
|
|||
|
|
|||
|
Afin de vous aider à préparer votre de votre environnement, Kubespray fournit les outils suivants:
|
|||
|
|
|||
|
* Scripts [Terraform](https://www.terraform.io/) pour les fournisseurs de cloud suivants:
|
|||
|
* [AWS](https://github.com/kubernetes-incubator/kubespray/tree/master/contrib/terraform/aws)
|
|||
|
* [OpenStack](https://github.com/kubernetes-incubator/kubespray/tree/master/contrib/terraform/openstack)
|
|||
|
|
|||
|
### (2/5) Construire un fichier d'inventaire Ansible
|
|||
|
|
|||
|
Lorsque vos serveurs sont disponibles, créez un fichier d'inventaire Ansible ([inventory](http://docs.ansible.com/ansible/intro_inventory.html)).
|
|||
|
Vous pouvez le créer manuellement ou en utilisant un script d'inventaire dynamique. Pour plus d'informations se référer à [Building your own inventory](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/getting-started.md#building-your-own-inventory).
|
|||
|
|
|||
|
### (3/5) Préparation au déploiement de votre cluster
|
|||
|
|
|||
|
Kubespray permet de personnaliser de nombreux éléments:
|
|||
|
|
|||
|
* Choix du mode: kubeadm ou non-kubeadm
|
|||
|
* Plugins CNI (réseau)
|
|||
|
* Configuration du DNS
|
|||
|
* Choix du control plane: natif/binaire ou dans un conteneur docker/rkt
|
|||
|
* Version de chaque composant
|
|||
|
* "route reflectors" Calico
|
|||
|
* Moteur de conteneur
|
|||
|
* docker
|
|||
|
* rkt
|
|||
|
* cri-o
|
|||
|
* Méthode de génération des certificats (**Vault n'étant plus maintenu**)
|
|||
|
|
|||
|
Ces paramètres Kubespray peuvent être définis dans un fichier de [variables](http://docs.ansible.com/ansible/playbooks_variables.html).
|
|||
|
Si vous venez juste de commencer à utiliser Kubespray nous vous recommandons d'utiliser les paramètres par défaut pour déployer votre cluster et découvrir Kubernetes
|
|||
|
|
|||
|
### (4/5) Déployer un Cluster
|
|||
|
|
|||
|
Vous pouvez ensuite lancer le déploiement de votre cluster:
|
|||
|
|
|||
|
Déploiement du cluster en utilisant l'outil en ligne de commande [ansible-playbook](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/getting-started.md#starting-custom-deployment).
|
|||
|
|
|||
|
```shell
|
|||
|
ansible-playbook -i your/inventory/hosts.ini cluster.yml -b -v \
|
|||
|
--private-key=~/.ssh/private_key
|
|||
|
```
|
|||
|
|
|||
|
Pour des déploiements plus importants (>100 noeuds) quelques [ajustements](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/large-deployments.md) peuvent être nécessaires afin d'obtenir de meilleurs résultats.
|
|||
|
|
|||
|
### (5/5) Vérifier le déploiement
|
|||
|
|
|||
|
Kubespray fournit le moyen de vérifier la connectivité inter-pods ainsi que la résolution DNS grâce à [Netchecker](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/netcheck.md).
|
|||
|
Les pods netchecker-agents s'assurent que la résolution DNS (services Kubernetes) ainsi que le ping entre les pods fonctionnent correctement.
|
|||
|
Ces pods reproduisent un comportement similaire à celui des autres applications et offrent un indicateur de santé du cluster.
|
|||
|
|
|||
|
## Opérations sur le clutser
|
|||
|
|
|||
|
Kubespray fournit des playbooks supplémentaires qui permettent de gérer votre cluster: _scale_ et _upgrade_.
|
|||
|
|
|||
|
### Mise à l'échelle du cluster
|
|||
|
|
|||
|
Vous pouvez ajouter des noeuds à votre cluter en exécutant le playbook `scale`. Pour plus d'informations se référer à [Adding nodes](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/getting-started.md#adding-nodes).
|
|||
|
vous pouvez retirer des noeuds de votre cluster en exécutant le playbook `remove-node`. Se référer à [Remove nodes](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/getting-started.md#remove-nodes).
|
|||
|
|
|||
|
### Mise à jour du cluster
|
|||
|
|
|||
|
Vous pouvez mettre à jour votre cluster en exécutant le playbook `upgrade-cluster`. Pour plus d'informations se référer à [Upgrades](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/upgrades.md).
|
|||
|
|
|||
|
## Nettoyage
|
|||
|
|
|||
|
Vous pouvez réinitialiser vos noeuds et supprimer tous les composants installés par Kubespray en utilisant le playbook [reset](https://github.com/kubernetes-incubator/kubespray/blob/master/reset.yml).
|
|||
|
|
|||
|
{{< caution >}}
|
|||
|
Quand vous utilisez le playbook `reset`, assurez-vous de ne pas cibler accidentellement un cluster de production !
|
|||
|
{{< /caution >}}
|
|||
|
|
|||
|
## Retours
|
|||
|
|
|||
|
* Channel Slack: [#kubespray](https://kubernetes.slack.com/messages/kubespray/)
|
|||
|
* [Issues GitHub](https://github.com/kubernetes-incubator/kubespray/issues)
|
|||
|
|
|||
|
{{% /capture %}}
|
|||
|
|
|||
|
{{% capture whatsnext %}}
|
|||
|
|
|||
|
Jetez un oeil aux travaux prévus sur Kubespray: [roadmap](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/roadmap.md).
|
|||
|
|
|||
|
{{% /capture %}}
|