Version imprimable multipages. Cliquer ici pour imprimer.
Solutions Cloud personnalisées
1 - CoreOS sur AWS ou GCE
Il existe plusieurs guides permettant d'utiliser Kubernetes avec CoreOS.
Guides officiels CoreOS
Ces guides sont maintenus par CoreOS et déploient Kubernetes à la "façon CoreOS" avec du TLS, le composant complémentaire pour le DNS interne, etc. Ces guides passent les tests de conformité Kubernetes et nous vous recommendons de [les tester vous-même] (https://coreos.com/kubernetes/docs/latest/conformance-tests.html).
Guide et outil en ligne de commande pour créer un cluster multi-noeuds sur AWS. CloudFormation est utilisé pour créer un noeud maitre ("master") et plusieurs noeuds de type "worker".
Multi-noeuds sur serveurs physiques (Bare Metal)
Guide et service HTTP / API pour l'initialisation et l'installation d’un cluster à plusieurs nœuds bare metal à partir d'un PXE. Ignition est utilisé pour provisionner un cluster composé d'un master et de plusieurs workers lors du démarrage initial des serveurs.
Guide pour l'installation d'un cluster multi-noeuds sur Vagrant. L'outil de déploiement permet de configurer indépendemment le nombre de noeuds etcd, masters et workers afin d'obtenir un control plane en haute disponibilité.
C'est la façon la plus rapide d'installer un environnement de développement local Kubernetes. Il suffit simplement de
git clone
,vagrant up
puis configurerkubectl
.Un guide générique qui permet de déployer un cluster en haute disponibilité (avec du TLS) sur n'importe cloud ou sur du bare metal. Répéter les étapes pour obtenir plus de noeuds master ou worker
Guide de la communauté
Ces guides sont maintenus par des membres de la communauté et couvrent des besoins et cas d'usages spécifiques. Ils proposent différentes manières de configurer Kubernetes sur CoreOS.
Cluster multi-noeuds facile sur Google Compute Engine
Installation scriptée d'un master unique et de plusieurs workers sur GCE. Les composants Kubernetes sont gérés par fleet
Cluster multi-noeuds en utilisant cloud-config et Weave sur Vagrant
Configure un cluster de 3 machines sur Vagrant, le réseau du cluster étant fourni par Weave.
Cluster multi-noeuds en utilisant cloud-config et Vagrant
Configure un cluster local composé d'un master et de plusieurs workers sur l'hyperviseur de votre choix: VirtualBox, Parallels, ou VMware
Cluster d'un seul noeud en utilisant une application macOS
Guide permettant d'obtenir un cluster d'un seul noeud faisant office de master et worker et contrôlé par une application macOS menubar. (basé sur xhyve et CoreOS)
Cluster multi-noeuds avec Vagrant et fleet en utilisant une petite application macOS
Guide permettant d'obtenir un cluster composé d'un master, de plusieurs workers contrôlés par une application macOS menubar.
Multi-node cluster using cloud-config, CoreOS and VMware ESXi
Configure un cluster composé d'un master et de plusieurs workers sur VMWare ESXi
Cluster Unique/Multi noeuds en utilisant cloud-config, CoreOS et Foreman
Configure un cluster composé d'un ou de plusieurs noeuds avec Foreman.
Niveau de support
IaaS Provider | Config. Mgmt | OS | Networking | Docs | Conforms | Support Level |
---|---|---|---|---|---|---|
GCE | CoreOS | CoreOS | flannel | docs | Community (@pires) | |
Vagrant | CoreOS | CoreOS | flannel | docs | Community (@pires, @AntonioMeireles) |
Pour le niveau de support de toutes les solutions se référer au Tableau des solutions.
2 - Installer Kubernetes avec Kubespray (on-premises et fournisseurs de cloud)
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.
Kubespray se base sur des outils de provisioning, des paramètres et playbooks Ansible 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, 20.04, 22.04
- CentOS/RHEL 7, 8
- 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 avec kubeadm et kops.
Créer un cluster
(1/5) Prérequis
Les serveurs doivent être installés en s'assurant des éléments suivants:
- Ansible v2.11 (ou version plus récente) et python-netaddr installés sur la machine qui exécutera les commandes Ansible
- Jinja 2.11 (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)
- 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
oub
à la ligne de commande.
Afin de vous aider à préparer votre de votre environnement, Kubespray fournit les outils suivants:
(2/5) Construire un fichier d'inventaire Ansible
Lorsque vos serveurs sont disponibles, créez un fichier d'inventaire Ansible (inventory). 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.
(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. 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.
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 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. 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 cluster
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 cluster en exécutant le playbook scale
. Pour plus d'informations se référer à Adding nodes.
vous pouvez retirer des noeuds de votre cluster en exécutant le playbook remove-node
. Se référer à 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.
Nettoyage
Vous pouvez réinitialiser vos noeuds et supprimer tous les composants installés par Kubespray en utilisant le playbook reset.
reset
, assurez-vous de ne pas cibler accidentellement un cluster de production !Retours
- Channel Slack: #kubespray
- Issues GitHub
A suivre
Jetez un oeil aux travaux prévus sur Kubespray: roadmap.
3 - Installer Kubernetes sur AWS avec kops
Cette documentation pour un démarrage rapide montre comment facilement installer un cluster Kubernetes sur AWS.
L'outil utilisé est kops
.
kops est un système de provisionnement dont les principes sont:
- Une installation totalement automatisée
- Utilisation du DNS pour identifier les clusters
- Auto-guérison: tous les composants tournent dans des groupe de mise à l'échelle automatique (auto-scaling)
- Support de plusieurs systèmes d'exploitation (Debian, Ubuntu 16.04 supportés, Centos & RHEL, Amazon Linux et CoreOS) - se référer à images.md
- Haute disponibilité - se référer à high_availability.md
- Peut provisionner directement, ou générer des manifests terraform - se référer à terraform.md
Si ces principes ne vous conviennent pas, vous préférerez probablement construire votre propre cluster selon votre convenance grâce à kubeadm.
Créer un cluster
(1/5) Installer kops
Pré-requis
Il est nécessaire d'avoir kubectl d'installé pour que kops puisse fonctionner.
Installation
Télécharger kops à partir de la page de releases (Il est aussi facile à construire à partir des sources):
Sur macOS:
Téléchargez la dernière version avec la commande:
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-darwin-amd64
Pour télécharger une version spécifique, remplacez le
$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)
partie de la commande avec la version spécifique.
Par exemple, pour télécharger la version 1.15.0 de kops, tapez:
curl -LO https://github.com/kubernetes/kops/releases/download/1.15.0/kops-darwin-amd64
Rendre le binaire exécutable kops.
chmod +x kops-darwin-amd64
Déplacez le fichier binaire kops dans votre chemin.
sudo mv kops-darwin-amd64 /usr/local/bin/kops
Vous pouvez également installer kops en utilisant [Homebrew] (https://brew.sh/).
brew update && brew install kops
Sur Linux:
Téléchargez la dernière version avec la commande:
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
Pour télécharger une version spécifique, remplacez le
$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)
partie de la commande avec la version spécifique.
Par exemple, pour télécharger la version 1.15.0 de kops, tapez:
curl -LO https://github.com/kubernetes/kops/releases/download/1.15.0/kops-linux-amd64
Rendre le binaire exécutable kops
chmod +x kops-linux-amd64
Déplacez le fichier binaire kops dans votre chemin.
sudo mv kops-linux-amd64 /usr/local/bin/kops
Vous pouvez également installer kops en utilisant [Homebrew] (https://docs.brew.sh/Homebrew-on-Linux).
brew update && brew install kops
(2/5) Créer un domaine route53 pour votre cluster
kops utilise le DNS pour la découverte, que ce soit à l'intérieur du cluster ou pour pouvoir communiquer avec l'API de kubernetes à partir des clients.
Pour kops le nom du cluster doit impérativement être un nom de domaine valide. De cette façon vous ne confondrez pas vos cluster et vous pourrez les partager avec vos collègues sans ambiguïté. Par ailleurs vous pourrez vous y connecter sans avoir à vous rappeler une adresse IP.
Vous pouvez, et vous devriez certainement, utiliser des sous-domaines afin de séparer vos clusters.
Dans notre exemple nous utiliserons useast1.dev.example.com
. Le point d'accès au serveur API sera donc api.useast1.dev.example.com
.
Une zone hébergée Route53 peut servir les sous-domaines. Votre zone hébergée pourrait être useast1.dev.example.com
,
mais aussi dev.example.com
ou même example.com
. kops fonctionne avec n'importe lequel d'entre eux, le choix dépend de vos contraintes d'organisation (ex: Vous êtes autorisés à créer des enregistrements dns dans dev.example.com
mais pas dans example.com
)
Supposons que vous utilisiez dev.example.com
comme zone hébergée. Vous créeriez cette zone hébergée en utilisant la méthode normal, ou avec une ligne de commande telle que aws route53 create-hosted-zone --name dev.example.com --caller-reference 1
.
Vous devrez ensuite configurer vos enregistrements NS dans le domaine parent afin que vous puissiez résoudre dans ce domaine.
Vous créeriez donc des enregistrements NS dans le domaine example.com
pour dev
.
S'il s'agit d'un nom de domaine racine, vous devrez configurer les enregistrements NS chez votre hébergeur de nom de domaine (là où vous avez acheté votre nom de domaine example.com
).
Cette étape est délicate, soyez vigilants (c’est la première cause de problèmes !). Vous pouvez vérifier que votre cluster est configuré correctement avec l'outil dig, en exécutant:
dig NS dev.example.com
Vous devriez voir les 4 enregistrements NS attribués à votre zone hébergée sur Route53.
(3/5) Créez un conteneur (bucket) S3 pour stocker l'état de vos clusters.
kops vous permet de gérer vos clusters même lorsque ceux-ci sont déjà installés. Pour ce faire, il est nécessaire de conserver une trace des clusters que vous avez créé, avec leur configuration, les clés qu’ils utilisent, etc. Ces informations sont stockées dans un bucket S3. Les autorisations S3 sont utilisées pour contrôler l'accès au bucket.
Plusieurs clusters peuvent utiliser le même bucket S3 et vous pouvez aussi le partager avec vos collègues qui administrer les mêmes clusters - c'est beaucoup plus facile que de faire circuler des fichiers kubecfg. Cependant quiconque ayant accès au bucket S3 aura un accès complet (permissions élevées) à tous vos clusters. Vous souhaiterez donc limiter l'accès à l'équipe opérationnelle.
Plus généralement, vous auriez un bucket S3 pour chaque équipe ops (et le nom correspondrait souvent au nom de la zone hébergée ci-dessus!)
Dans notre exemple, nous avons choisi dev.example.com
comme zone hébergée. Nous allons donc choisir clusters.dev.example.com
comm le nom du bucket S3.
Exportez
AWS_PROFILE
(si vous devez sélectionner un profil pour que l'outil en ligne de commande d'AWS fonctionne).Créez le compartiment S3 en utilisant
aws s3 mb s3://clusters.dev.example.com
Vous pouvez
export KOPS_STATE_STORE=s3://clusters.dev.example.com
afin que kops utilise cet emplacement par défaut. Nous vous suggérons de le mettre dans votre profil bash ou similaire.
(4/5) Construisez votre configuration de cluster
Exécutez "kops create cluster" pour créer votre configuration de cluster:
kops create cluster --zones=us-east-1c useast1.dev.example.com
kops créera la configuration pour votre cluster. Notez que cela génère uniquement la configuration, la création des ressources cloud se fait à l'étape suivante avec kops update cluster
. Cela vous permettra d'analyser la configuration ou de la modifier avant de l'appliquer.
Voici quelques commandes qui vous permettent de visualiser ou éditer:
- Listez vos clusters avec:
kops get cluster
- Éditez ce cluster avec:
kops edit cluster useast1.dev.example.com
- Modifiez votre groupe d'instances de nœuds:
kops edit ig --name=useast1.dev.example.com nodes
- Éditez votre groupe d'instances maître (master):
kops edit ig --name=useast1.dev.example.com master-us-east-1c
Si vous utilisez kops pour la première fois, prenez quelques minutes pour les essayer! Un groupe d'instances est un ensemble d'instances, qui seront enregistrées en tant que noeuds kubernetes. Sur AWS, cela est implémenté via des groupes de mise à l'échelle automatique (auto-scaling). Vous pouvez avoir plusieurs groupes d'instances, par exemple si vous voulez des nœuds combinant des instances ponctuelles (spot instances) et à la demande, ou éventuellement des instances GPU et non-GPU.
(5/5) Créer le cluster dans AWS
Exécutez "kops update cluster" pour créer votre cluster dans AWS :
kops update cluster useast1.dev.example.com --yes
Cela prend quelques secondes à s'exécuter, et ensuite votre cluster prendra probablement quelques minutes pour être réellement opérationnel.
kops update cluster
sera l'outil que vous utiliserez à chaque fois que vous modifierez la configuration de votre cluster.
Il applique les modifications que vous avez apportées à la configuration sur votre cluster (reconfiguration d'AWS ou de kubernetes au besoin).
Par exemple, après un kops edit ig nodes
, puis un kops update cluster --yes
pour appliquer votre configuration, parfois, vous devrez également exécuter un kops rolling-update cluster
pour déployer la configuration immédiatement.
Sans l'argument --yes
, kops update cluster
vous montrera un aperçu de ce qu’il va faire. C'est pratique
pour les clusters de production !
Explorer d'autres composants additionnels (add-ons)
Reportez-vous à la [liste des add-ons] (/docs/concepts/cluster-administration/addons/) pour explorer d'autres add-ons, y compris des outils de journalisation, de surveillance, de stratégie réseau, de visualisation ou de contrôle de votre cluster Kubernetes.
Nettoyer
- Pour supprimer votre cluster:
kops delete cluster useast1.dev.example.com --yes
Retour d'information
- Channel Slack: [#kops-users] (https://kubernetes.slack.com/messages/kops-users/)
- [Problèmes GitHub] (https://github.com/kubernetes/kops/issues)
A suivre
- En apprendre davantages sur les concepts Kubernetes et
kubectl
. - En savoir plus sur les utilisations avancées de
kops
. - Pour les bonnes pratiques et les options de configuration avancées de
kops
se référer à la documentation