Kubernetes --- Théorie de base et diagramme d'architecture

Préface

  • Kubernetes est un outil de gestion de clusters d'applications en conteneur. Dans le domaine informatique, ce processus est généralement appelé orchestration;

  • Il convient d'utiliser l'analogie de la chorégraphie orchestrale avec la chorégraphie de service ci-dessus. Tout comme le chef d'orchestre, Kubernetes combine de manière coordonnée de nombreux microservices pour former une application. Kubernetes surveillera automatiquement et en permanence le cluster et ajustera sa composition;

  • La compréhension de l'architecture Kubernetes est essentielle pour déployer et maintenir des applications conteneurisées.

1. Qu'est-ce que Kubernetes

  • Kubernetes, ou k8s pour faire court, est un système de gestion de cluster de conteneurs open source par Google en 2014;

  • K8s est un système d'automatisation du déploiement d'applications. Les applications modernes sont dispersées entre le cloud, les machines virtuelles et les serveurs, et la gestion manuelle des applications n'est plus une option viable.

  • K8s convertit les machines virtuelles et les machines physiques en aspects API unifiés. Ensuite, les développeurs peuvent utiliser l'API Kubernetes pour déployer, étendre et gérer des applications conteneurisées.

    • Son architecture fournit également un cadre flexible pour les systèmes distribués. K8s coordonne automatiquement l'expansion et le basculement de votre application et fournit un mode de déploiement.

    • Il permet de gérer les conteneurs qui exécutent les applications et de garantir qu'il n'y a pas de temps d'arrêt dans l'environnement de production. Par exemple, si un conteneur échoue, un autre conteneur prendra automatiquement sa place et l'utilisateur final ne le remarquera pas du tout.

  • Kubernetes n'est pas seulement un système d'orchestration. Il s'agit d'un ensemble de processus de contrôle indépendants et interdépendants. Sa fonction est de travailler en continu dans l'état actuel et de faire avancer le processus dans la direction souhaitée;

  • K8s fournit une série de fonctions telles que l'orchestration de conteneurs, la planification des ressources, la mise à l'échelle élastique, la gestion du déploiement et la découverte de services;

  • L'objectif de Kubernetes est de rendre les applications conteneurisées simples et efficaces. Les services, l'assistance et les outils Kubernetes sont largement disponibles.

Deuxièmement, le développement des K8

  • L'ère du déploiement traditionnel

    • Au début, les organisations exécutaient des applications sur des serveurs physiques. Impossible de définir les limites des ressources pour les applications sur les serveurs physiques, ce qui peut entraîner des problèmes d'allocation de ressources.
    • Inconvénients: lors de l'exécution de plusieurs applications sur un serveur physique, une application peut occuper la plupart des ressources et, par conséquent, les performances des autres applications peuvent diminuer. Et le coût pour les organisations de maintenir de nombreux serveurs physiques est élevé
  • L'ère du déploiement virtualisé

    • En tant que solution, la virtualisation est introduite, qui vous permet d'exécuter plusieurs machines virtuelles (VM) sur le processeur d'un seul serveur physique. La fonction de virtualisation permet d'isoler les applications entre les VM et fournit un niveau de sécurité car les informations d'une application ne peuvent pas être librement accessibles par une autre application.
    • Étant donné que la virtualisation peut facilement ajouter ou mettre à jour des applications, réduire les coûts matériels, etc., la virtualisation peut mieux utiliser les ressources des serveurs physiques et obtenir une meilleure évolutivité;
  • L'ère du déploiement de conteneurs

    • Les conteneurs sont similaires aux machines virtuelles, mais ils ont des propriétés d'isolation légères et peuvent partager des systèmes d'exploitation (OS) entre les applications. Par conséquent, le conteneur est considéré comme léger.
    • Les conteneurs sont similaires aux machines virtuelles, avec leur propre système de fichiers, CPU, mémoire, espace de processus, etc. Parce qu'ils sont séparés de l'infrastructure, ils peuvent être portés dans le cloud et la distribution du système d'exploitation;

3. Caractéristiques des K8

  • 1) auto-réparation

    • ① Redémarrez le conteneur défaillant lorsqu'un nœud tombe en panne, remplacez-le et redéployez-le pour garantir le nombre de copies attendu;
    • ②Tuez le conteneur qui échoue à la vérification de l'état et ne traitera pas les demandes des clients tant qu'il ne sera pas prêt à garantir que les services en ligne ne sont pas interrompus.
  • 2) Mise à l'échelle élastique

    • Utilisez les commandes, l'interface utilisateur ou développez et réduisez automatiquement et rapidement les instances d'application en fonction de l'utilisation du processeur pour garantir une haute disponibilité pendant les pics de concurrence de l'activité applicative; récupérer les ressources lorsque les pics d'activité sont faibles et exécuter les services à un coût minimum;
  • 3) Déploiement et restauration automatiques

    • K8s utilise une stratégie de mise à jour continue pour mettre à jour les applications, en mettant à jour un pod à la fois au lieu de supprimer tous les pods en même temps; s'il y a un problème dans le processus de mise à jour, les modifications seront annulées pour s'assurer que la mise à niveau n'est pas affectée par l'entreprise;
  • 4) Découverte de service et équilibrage de charge

    • K8s fournit une entrée d'accès unifiée (adresse IP interne et un nom DNS) pour plusieurs conteneurs et équilibre la charge de tous les conteneurs associés, de sorte que les utilisateurs n'aient pas besoin de prendre en compte les problèmes d'IP de conteneur;
  • 5) Confidentialité et gestion de la configuration

    • Gérez les données confidentielles et la configuration des applications sans exposer les données sensibles dans le miroir, améliorant ainsi la sécurité des données sensibles. Et certaines configurations couramment utilisées peuvent être stockées dans K8, ce qui est pratique pour les applications;
  • 6) Orchestration du stockage

    • Montez des systèmes de stockage externes, qu'ils proviennent du stockage local, des clouds publics (tels que AWS) ou du stockage réseau (tels que NFS, GlusterFS, Ceph) dans le cadre des ressources du cluster, ce qui améliore considérablement la flexibilité du stockage;
  • 7) Traitement par lots

    • Fournir des tâches ponctuelles et des tâches chronométrées; répondre aux scénarios de traitement et d'analyse des données par lots.

Quatre, diagramme d'architecture K8 et composants de base

4.1 Diagramme d'architecture de cluster Kubernetes

Insérez la description de l'image ici

4.2 Explication détaillée des composants Kubernetes

  • À partir du diagramme d'architecture, nous pouvons voir:
    • ①Le nœud maître est principalement composé de trois composants, apiserver, contrôleur-gestionnaire et planificateur, et un service de stockage etcd pour le stockage de l'état du cluster;
    • ② Et chaque nœud de nœud comprend principalement des composants tels que kubelet, kube-proxy et le moteur de conteneur. En outre, le service de cluster complet dépend également de certains composants supplémentaires, tels que kubedns.

4.2.1 Composants du nœud maître

  • Composant principal: fournit le centre de contrôle de gestion du cluster.

    • Le composant Master peut s'exécuter sur n'importe quel nœud du cluster, mais pour plus de simplicité, tous les composants Master sont généralement démarrés sur une VM / machine, et aucun conteneur utilisateur ne s'exécutera sur cette VM / machine.
  • ① kube-apiServer (composant principal)

    • L'API Kubernetes, le port unifié du cluster et le coordinateur de chaque composant, fournissent des services d'interface avec l'API RESTful. Toutes les opérations d'ajout, de suppression, de modification et de surveillance des ressources d'objets sont appelées à APIServer pour traitement, puis soumises à Etcd pour espace de rangement.
  • ② kube-controller-manager

    • Pour gérer les tâches d'arrière-plan régulières dans le cluster, une ressource correspond à un contrôleur et ControllerManaager est responsable de la gestion de ces contrôleurs
    • Le contrôleur comprend (pièces):
1. 节点控制器:负责在节点出现故障时进行通知和响应;

2. 复制控制器:负责为系统中的每个复制控制器对象维护正确数量的Pod;

3. 端点控制器:填充“端点”对象(即,加入“服务和窗格”);

4. 服务帐户和令牌控制器:为新的名称空间创建默认帐户和API访问令牌。
  • ③ planificateur kube

    • Selon l'algorithme de planification, sélectionnez un nœud de nœud pour le pod nouvellement créé, qui peut être déployé de manière arbitraire; il peut être déployé sur le même nœud ou sur un nœud différent.
    • Les algorithmes de planification comprennent: l'algorithme de présélection, les nœuds de filtrage; l'algorithme préféré, les nœuds de notation
  • ④ Etcd

    • Système de stockage de clé-valeur distribué, utilisé pour stocker les données d'état du cluster, telles que le pod, le service et d'autres informations sur les objets;
    • Etcd dispose d'un système de découverte de services, qui n'est pas disponible dans les verrous de base de données mysql et Oracle. Il présente également les fonctionnalités suivantes:
1. 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单

2. 安全:支持SSL证书验证

3. 快速:根据官方提供的benchmark数据,单实例支持每秒2K+读操作

4. 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

4.2.2 Composants du nœud de nœud

  • Les composants de nœud s'exécutent sur Node, fournissent un environnement d'exécution Kubernetes et gèrent le pod.

  • ① kublet

    • Le kubelet est l'agent du maître sur le nœud Node, qui gère le cycle de vie du conteneur local en cours d'exécution. Par exemple, créez des conteneurs, montez des volumes de données de pod, téléchargez des secrets, obtenez l'état du conteneur et du nœud, etc. kubelet convertit chaque pod en un ensemble de conteneurs
  • ② kube-proxy

    • Implémentez le proxy réseau du pod sur le nœud Node, gérez les règles de réseau et le travail d'équilibrage de charge à quatre couches.
  • ③ docker ou fusée

    • Moteur de conteneur, exécutez le conteneur

4.2.3 Modules complémentaires

1. kube-dns:负责为整个集群提供DNS服务;

2. Ingress Controller:为服务提供外网入口;

3. Heapster:提供资源监控;

4. Dashboard:提供GUI;

5. Federation:提供跨可用区的集群;

6. Fluentd-elasticsearch:提供集群日志采集、存储与查询

Cinq, architecture à nœud unique K8

5.1 Graphique simple d'un seul nœud

Insérez la description de l'image ici

5.2 Processus détaillé

1. 假设用户需创建 tomcat 资源(网站/调度);

2. 请求发送至master 首先需要经过apiserver(资源控制请求的唯一入口);

3. apiserver 接收到请求后首先会先记载在Etcd中;

4. Etcd的数据库根据controllers manager(控制器) 查看创建的资源状态(有无状态化);

5. 通过controllers 触发 scheduler (调度器)6. scheduler 通过验证算法 验证架构中的nodes节点,筛选出最适合创建该资源,接着分配给这个节点进行创建;

7. node节点中的kubelet 负责执行master给与的资源请求,根据不同指令,执行不同操作;

8. 对外提供服务则由kube-proxy开设对应的规则(代理);

9. container 容器开始运行(runtime 生命周期开始计算);

10. 外界用户进行访问时,需要经过kube-proxy 访问到container;

11. 如果container 因故障而被销毁了,master节点的controllers 会再次通过scheduler 资源调度通过kubelet再次创建容器,恢复基本条件限制。

Six explications détaillées des concepts de base de Kubernetes

  • Sous

    • ① Unité de déploiement minimum
    • ② Une collection de conteneurs
    • ③ Les conteneurs d'un pod partagent l'espace de noms réseau (naturellement dans le même réseau local)
    • ④ Le pod est de courte durée (a un cycle de vie)
  • Contrôleurs

    • ① ReplicaSet: pour garantir le nombre attendu de répliques de pod (les paramètres peuvent être définis)

    • ② Déploiement: application sans état (par exemple: web, nignx, apache, tomcat)

    • ③ StatefulSet: déploiement d'application avec état, l'application est unique et ne peut pas être recréée pour un remplacement parfait, comme les bases de données mysql et Oracle

    • ④ DaemonSet: assurez-vous que tous les nœuds exécutent le même pod (définissez tous les nœuds sur le même espace de noms)

    • ⑤ Job: tâche ponctuelle (linux analogique: at)

    • ⑥ Cronjob: Tâche de chronométrage (linux analogique: crontab)

    • Objets de niveau supérieur, déployez et gérez des pods

  • Un service

    • ① Empêcher le pod de perdre la connexion
    • ② Définir un ensemble de stratégies d'accès aux pods (rôle principal)
    • ③ Assurer l'indépendance entre chaque Pod (sécurité)
  • Étiqueter

    • Balises, attachées à une ressource, utilisées pour associer des objets, interroger et filtrer
  • Espaces de noms

    • Espace de noms, isoler logiquement les objets
  • Annotations

    • Annotation

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42449832/article/details/114961464
conseillé
Classement