Bases de k8s (Kubernetes)

Pourquoi utiliser k8s

Les applications de production impliquent plusieurs conteneurs. Ces conteneurs doivent être déployés sur plusieurs hôtes de serveur

Peut créer des services d'application qui s'étendent sur plusieurs conteneurs, planifier et mettre à l'échelle ces conteneurs sur des clusters et gérer la santé de ces conteneurs sur le long terme

Basé sur la technologie Docker, il fournit aux applications conteneurisées une série de fonctions complètes telles que le déploiement et l'exploitation, la planification des ressources, la découverte de services et la mise à l'échelle dynamique, ce qui améliore la commodité de la gestion des clusters de conteneurs à grande échelle.

est une plate-forme open source pour automatiser les opérations de conteneur, y compris le déploiement, la planification et la mise à l'échelle du cluster de nœuds.

1. Modifier la configuration d'ubuntu
Tout d'abord, k8s nécessite que notre ubuntu effectue certaines configurations qui répondent à ses exigences. C'est très simple et comprend les deux étapes suivantes : désactiver la mémoire d'échange et configurer la connexion sans mot de passe. Dans cette étape, les deux hôtes doivent être configurés.

Désactiver la mémoire d'échange
Ce swap peut en fait être comparé à la mémoire virtuelle sous Windows, il peut maintenir le serveur en fonctionnement inefficace lorsque la mémoire est pleine, au lieu d'être bloqué directement. Mais les nouvelles versions de k8 nécessitent que le swap soit désactivé. Alors faisons-le directement et modifions le fichier /etc/fstab :

sudo vi /etc/fstab,
vous devriez pouvoir voir le contenu suivant, commentez simplement le deuxième élément avec #, faites attention à ne pas commenter le premier élément, sinon le système peut signaler une erreur de lecture seule du système de fichiers après le redémarrage .

UUID=e2048966-750b-4795-a9a2-7b477d6681bf / ext4 errors=remount-ro 0 1
# /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
Puis entrez reboot pour redémarrer, après le redémarrage Utiliser la commande supérieure pour afficher le gestionnaire de tâches. Si vous voyez le KiB Swap suivant et tous les 0, cela signifie que l'arrêt est réussi.

Gestionnaire des tâches après la fermeture de l'échange Ce
qui précède est de fermer définitivement la mémoire d'échange, en fait, elle peut également être fermée temporairement, utilisez simplement la commande swapoff -a, l'effet disparaîtra après le redémarrage.

Décrivez brièvement la relation entre Kubernetes et Docker

Avant de présenter Kubernetes en détail, je dois mentionner à nouveau Docker. Si vous avez utilisé Docker pour déployer des programmes, vous apprécierez certainement l'expérience soyeuse qu'il vous apporte, et il est associé à la nécessité d'écrire divers scripts avant de publier un programme. , La mauvaise expérience de faire correspondre divers environnements, alors je crois que votre sentiment sera plus fort.

La raison pour laquelle Docker peut y parvenir est qu'il résout le problème technique de l'empaquetage et de la publication des applications, qui tourmente l'industrie depuis de nombreuses années, d'un seul coup avec la méthode de "l'image Docker", et réduit considérablement le seuil pour les développeurs ordinaires. pour exploiter, maintenir et déployer des applications. C'est précisément en raison de la résolution du problème fondamental de l'empaquetage des applications que Docker a été rapidement accepté par la majorité du personnel de développement/d'exploitation et de maintenance, est rapidement devenu une technologie en vogue et a mené la vague de développement de la technologie des conteneurs dans un certain laps de temps.
Le fait est que Docker, en tant qu'outil technologique de conteneur unique, ne peut pas bien définir la "méthode d'organisation" et les "normes de gestion" des conteneurs, et il est difficile de prendre en charge indépendamment les exigences du déploiement de conteneurs à grande échelle au niveau de la production. Par conséquent, le développement de la technologie des conteneurs s'est rapidement déplacé vers la voie technique de "l'orchestration des conteneurs" représentée par Kubernetes, et c'est également la principale raison pour laquelle les conteneurs Docker ne sont pas directement déployés à grande échelle dans les environnements de production.
Décrivez brièvement ce qu'est Minikube, Kubectl, Kubelet dans Kubernetes

Minikube est un outil qui facilite l'exécution locale d'un cluster Kubernetes à nœud unique.
Kubectl est un outil de ligne de commande qui peut être utilisé pour contrôler le gestionnaire de cluster Kubernetes, comme l'inspection des ressources du cluster, la création, la suppression et la mise à jour des composants et l'affichage des applications.
Kubelet est un service proxy qui s'exécute sur chaque nœud et permet aux esclaves de communiquer avec le maître.

Décrire brièvement comment Kubernetes implémente la gestion des clusters

Kubernetes divise les machines du cluster en un nœud maître et un groupe de nœuds de travail Node. Parmi eux, un groupe de processus liés à la gestion du cluster, kube-apiserver, kube-controller-manager et kube-scheduler, s'exécutent sur le nœud maître.Ces processus réalisent la gestion des ressources, la planification des pods, la mise à l'échelle élastique, le contrôle de la sécurité, la surveillance du système. et La correction des erreurs et les autres capacités de gestion sont entièrement automatisées.

Décrire brièvement les composants associés du cluster Kubernetes

Composant principal

Serveur API

La seule interface externe de K8S fournit l'API RESTful HTTP/HTTPS, c'est-à-dire l'API kubernetes. Toutes les demandes doivent communiquer via cette interface. Il est principalement responsable de la réception, de la vérification et de la réponse à toutes les requêtes REST. Le statut du résultat est stocké de manière persistante dans etcd, et c'est la seule entrée pour ajouter, supprimer, modifier et vérifier toutes les ressources.

etcd

Responsable de la sauvegarde des informations de configuration du cluster k8s et des informations d'état de diverses ressources. Lorsque les données changent, etcd notifiera rapidement les composants liés au k8s. etcd est un composant de service indépendant et n'appartient pas au cluster K8S. Dans un environnement de production, etcd doit s'exécuter dans un cluster pour garantir la disponibilité du service.

etcd n'est pas seulement utilisé pour fournir un stockage de données clé-valeur, mais fournit également un mécanisme de surveillance pour écouter et pousser les modifications. Dans le système de cluster K8S, lorsque la valeur de clé d'etcd change, le serveur d'API en est informé et il est envoyé au client via l'API watch.

Gestionnaire de contrôleur

Responsable de la gestion des différentes ressources du cluster pour s'assurer que les ressources sont dans l'état attendu. Controller Manager se compose de divers contrôleurs, y compris le contrôleur de réplication, le contrôleur de points de terminaison, le contrôleur d'espace de noms, le contrôleur de comptes de service, etc. Les principales fonctions remplies par le contrôleur comprennent principalement les fonctions de cycle de vie et la logique métier de l'API, comme suit :

Fonctions de cycle de vie : y compris la création et le cycle de vie de l'espace de noms, la récupération de place des événements, la récupération de place liée à la terminaison de pod, la récupération de place en cascade et la récupération de place de nœud, etc.

Logique métier de l'API : par exemple, la mise à l'échelle du pod effectuée par ReplicaSet, etc.

Planificateur

La planification des ressources est chargée de décider sur quel nœud exécuter le pod. Le planificateur analyse la structure du cluster, la charge actuelle de chaque nœud et les exigences de l'application en matière de haute disponibilité et de performances lors de la planification.

Composant de nœud

Kubelet

Le kubelet est l'agent du nœud. Lorsque le planificateur décide d'exécuter le pod sur un nœud, il enverra les informations de configuration spécifiques du pod (image, volume, etc.) Le maître signale l'état d'exécution.

Conteneur d'exécution
Chaque nœud doit fournir un environnement d'exécution de conteneur (Container Runtime), qui est responsable du téléchargement des images et de l'exécution des conteneurs. À l'heure actuelle, l'environnement d'exploitation de conteneurs pris en charge par K8S comprend au moins Docker, RKT, cri-o, Fraki, etc.

Le service Kube-proxy
représente logiquement plusieurs pods sur le backend et accède aux pods via le service. Lorsque le service reçoit la requête, il a besoin de kube-proxy pour terminer le transfert vers le pod. Chaque nœud exécutera le service kube-proxy, qui est responsable de la transmission du flux de données TCP/UDP du service accédé au conteneur principal. S'il y a plusieurs copies, kube-proxy réalisera l'équilibrage de charge. Il y a deux façons : LVS ou Iptables

KubeDNS
planifie et exécute des pods qui fournissent des services DNS dans le cluster K8S, et d'autres pods du même cluster peuvent utiliser les services DNS pour résoudre les noms d'hôte. Depuis la version 1.11, K8S utilise le projet CoreDNS par défaut pour fournir des services de résolution de noms dynamiques pour l'enregistrement et la découverte de services pour le cluster.

Toutes les fonctions du cluster Dashboard
K8S doivent être basées sur l'interface utilisateur Web pour gérer les applications dans le cluster et le cluster lui-même.

Système de surveillance et d'analyse des performances des conteneurs et des nœuds Heapster
, qui collecte et analyse diverses données d'indicateurs, telles que l'utilisation des ressources et la durée du cycle de vie. Dans la dernière version, ses principales fonctions sont progressivement remplacées par Prometheus combiné à d'autres composants.

Ingress Controller
Service est un équilibreur de charge qui fonctionne sur la couche 4, et Ingress est un équilibreur de charge HTTP(S) implémenté au niveau de la couche application. Cependant, la ressource Ingress elle-même ne peut pas pénétrer le trafic, il s'agit simplement d'un ensemble de règles de routage, et ces règles doivent être effectives via le contrôleur d'entrée (contrôleur d'entrée). À l'heure actuelle, les projets de fonctions incluent probablement : Nginx-ingress, Traefik, Envoy et HAproxy, etc. L'image suivante est l'application de Nginx-ingress,

Documentation de référence : documentation Kubernetes | Kubernetes

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42464652/article/details/122238901
conseillé
Classement