13.1. CLUSTER KUBERNETES
13.1.1. Vue d'ensemble du cluster Kubernetes
13.1.2. Cluster Kubernetes : configuration système requise
13.1.3. Cluster Kubernetes : installation du package
13.1.1 Vue d'ensemble du cluster Kubernetes
Kubernetes (K8s) est un système open-source conçu pour automatiser le déploiement, le dimensionnement et la gestion des micro-services et des applications conteneurisées. Un pod, qui est la pièce centrale du modèle K8s, est un ensemble de conteneurs Linux avec réseau et stockage partagés. Les plugins réseau et les contrôleurs ingress prennent en charge les équilibreurs de charge internes et externes, tandis que les backends de stockage pluggable automatisent la persistance des données. Kubernetes kubelet orchestre les pods en s'assurant que le cluster est toujours dans un état sain souhaité.
L'installation d'un cluster Kubernetes, ainsi que la configuration du réseau et du stockage, est un processus fastidieux et sujet aux erreurs. RAGNARØKKR PaaS automatise l'installation, la configuration et les mises à jour de Kubernetes, et fournit de multiples services Kubernetes supplémentaires et des composants de cluster :
- Plugin Weave CNI pour permettre la mise en réseau interne
- CoreDNS comme DNS interne
- Contrôleur ingress Traefik avec TLS pré-configuré pour l'accès externe aux services (avec les options NGINX et HAProxy)
- Provisionneur de stockage NFS pour la création automatique de volumes K8s (en option)
- Tableau de bord Kubernetes pour gérer et contrôler le cluster via un client web moderne et intuitif
- Helm et Tiller pour le déploiement en un clic de centaines d'applications populaires
- Utilitaires de lignes de commande K9s, Kubectx, Popeye et Stern pour gérer efficacement votre cluster
- Serveur Metrics, Prometheus et Grafana pour surveiller la santé de votre cluster et de vos applications (facultatif)
- Jaeger pour le monitoring et le dépannage des systèmes distribués basés sur les micro-services (optionnel)
Outre les caractéristiques spécifiques de K8s, les caractéristiques traditionnelles de RAGNARØKKR sont également disponibles, par exemple la scalabilité verticale et horizontale.
13.1.2. Cluster Kubernetes : configuration système requise
La consommation minimale et optimale de RAM, de CPU et de stockage du package Kubernetes Cluster dépend de la taille du cluster, des composants installés, du workload actif, etc.
Notes :
[1] Les mesures ont été effectuées sur les clusters de développement et de production nus sans charge supplémentaire. Ainsi, les valeurs spécifiées sont les exigences minimales du système, qui peuvent être beaucoup plus élevées pour les clusters chargés (en particulier celui de production).
[2] Topologie du cluster de développement : un master, un worker, un nœud de stockage, pas d'outils de monitoring, exemple de déploiement Hello World.
[3] Topologie du cluster de production : équilibreur API, trois masters, deux workers, un nœud de stockage, outils de monitoring, exemple de déploiement Hello World.
[4] Les disques rapides sont essentiels pour les performances de la technologie etcd (stockage à valeur clé utilisé par K8s), tandis que la lenteur de la technologie etcd peut entraîner une instabilité du cluster en raison des workloads défaillants.
Par conséquent, le cluster de développement n'est recommandé que comme un environnement sandbox. Pour la production, une topologie hautement disponible avec des multi-maîtres est l'option à privilégier. Ensuite, en fonction de la charge prévue, le nombre de workers requis peut être ajouté manuellement, ou la scalabilité horizontale automatique appropriée peut être configurée. L'ajout de nœuds maîtres supplémentaires n'a de sens que s'il y a un nombre important de demandes provenant des clients (kubectl, tableau de bord, travail d'intégration continue, applications K8s natives, etc.)
13.1.3. Cluster Kubernetes : installation du package
La solution Kubernetes Cluster est disponible pour une installation automatique via RAGNARØKKR Marketplace dans la catégorie Clusters (ou utilisez la fonction de recherche pour la localiser).
Dans la fenêtre de l'installation ouverte, personnalisez les options disponibles pour obtenir un cluster spécifiquement adapté à vos besoins :
- Déploiement de l'application
- Clean cluster with pre-deployed HelloWorld example
- Deploy custom helm or stack via shell command : choisissez cette option pour fournir manuellement des commandes pour le déploiement de l'application personnalisée à partir du répertoire helm
- Topologie
- Development : one master (1) and one scalable worker (1+)
- Production : multi master (3) with API balancers (2+) and scalable workers (2+)
- Ingress Controller : choisissez entre HAProxy, Nginx et Traefik
- Kubernetes Dashboard : choisissez entre les options v1 (Stable) et v2 (RC)
- Attach dedicated NFS Storage with dynamic volume provisioning : décochez si vous voulez enregistrer votre propre classe de stockage (nécessite une connaissance approfondie du K8s)
- Install Prometheus & Grafana : cochez pour installer ces outils de monitoring (recommandé). Ce déploiement nécessite 5 Go d'espace disque supplémentaire pour les volumes persistants et consomme environ 500 Mo de RAM. Il peut être configuré ultérieurement via le add-on de Monitoring intégré
- Install Jaeger tracing tools : cochez pour installer cet outil. Etant un système de traçage distribué, Jaeger est utilisé pour le monitoring des environnements de micro-services et permet de diagnostiquer et de résoudre les pannes de distribution qui y sont liées
- Enable Remote API Access : cochez si vous comptez utiliser l'outil de ligne de commande Kubectl ou d'autres clients à distance. Il peut être activé ultérieurement via l'add-on Remote API intégré
- Environnement : nom de domaine pour votre environnement
- Display Name : alias à afficher pour l'environnement
- Région : une liste déroulante des régions environnementales disponibles
Cliquez sur Installer et attendez quelques minutes pour que la plateforme configure automatiquement votre cluster Kubernetes.