Qu'est-ce qu'AKS ?
Azure Kubernetes Service (AKS) est un service Kubernetes géré de Microsoft Azure qui vise à simplifier le déploiement et la gestion des clusters Kubernetes. À cette fin, AKS délègue les tâches opérationnelles de gestion de cluster à Azure qui prend en charge le plan de contrôle Kubernetes et simplifie la configuration des nœuds de travail. Le service AKS lui-même est gratuit, vous réglez uniquement la période de disponibilité des nœuds de travail.
L'utilisation d'AKS présente de nombreux avantages :
- Développement plus rapide des applications : AKS gère les correctifs, la mise à niveau automatisée, la surveillance, la mise à l'échelle et l'autocorrection. Cela libère les équipes de développement des tâches opérationnelles et leur permet de se concentrer sur la mise en place des services.
- Utilisation dynamique des ressources : en tant que service intégralement managé, AKS vous permet de déployer et d'exécuter rapidement des services conteneurisés grâce à une infrastructure élastique qui s'adapte à la demande, le tout sans nécessité de gérer directement les composants Kubernetes.
- Sécurité et conformité : AKS est conforme à plusieurs normes, notamment PCI-DSS ou SOC.
Qu'est-ce que Kubernetes ?
Kubernetes est un système d'orchestration open source qui simplifie le déploiement et l'évolutivité des workloads conteneurisés. Malgré sa popularité et son usage très répandu, le déploiement et la gestion manuelle d'un cluster Kubernetes reste une tâche complexe. Microsoft Azure Kubernetes Service (AKS) aide les ingénieurs à gérer les clusters Kubernetes. Avec AKS, les tâches opérationnelles de gestion des environnements Kubernetes deviennent plus simples.
Les conteneurs sont un excellent moyen d'assembler et d'exécuter des applications. Cependant, leur exécution au niveau de la production présente notamment les défis suivants :
- Gestion du basculement
- Évolutivité horizontale
- Détection des services
- Implémentation de différents modèles de déploiement
- sécurité des conteneurs
Capacités de Kubernetes
Les principales capacités de Kubernetes sont les suivantes :
Détection des services
Les workloads hébergés de Kubernetes sont automatiquement détectables et exposés via des adresses DNS ou IP. Ceci facilite la détection de ces services par d'autres workloads ainsi que l'établissement de la communication.
Répartition de la charge
Les workloads étant séparés en tant que services par abstraction, Kubernetes peut offrir des capacités basiques de répartition de charge entre de multiples répliques d'un même workload.
Orchestration du stockage
Kubernetes simplifie le montage d'un système de stockage et le rend disponible pour votre conteneur afin d'assurer la persistance des données. Kubernetes peut s'intégrer au stockage local d'un nœud comme à des volumes distants hébergés dans le cloud.
Déploiement de workload
Les workloads hébergés par Kubernetes sont décrits de manière déclarative. De même, le moteur Kubernetes se charge du déploiement proprement dit en s'assurant de la présence de toutes les dépendances requises. En s'appuyant sur des concepts tels que les déploiements, la déclaration des workloads s'effectue aisément, notamment leurs stratégies de déploiement et de restauration.
Assemblage des ressources
Kubernetes vous permet de spécifier la quantité de ressources (requêtes et limites) que chaque réplique de workload peut utiliser. Ainsi, les ressources de calcul s'en trouvent mieux employées, ce qui empêche le gaspillage de ressources et l'utilisation par certains workloads des ressources des autres workloads.
Autocorrection
À l'aide de probes liveness, readiness et de démarrage, Kubernetes garantit l'intégrité des services et leur capacité de réception de trafic, avec des redémarrages en cas de besoin.
Gestion et secrets de configuration
Les ConfigMaps et secrets simplifient l'obtention par les workloads des paramètres de configuration, informations de connexion et identifiants nécessaires à partir d'emplacements centralisés et sécurisés. Cela réduit la dépendance aux gestionnaires tiers de configuration et de secrets.
Composants Kubernetes
Kubernetes intègre plusieurs composants qui s'exécutent entre un plan de contrôle et des nœuds de travail. Les composants du plan de contrôle gèrent les fonctions administratives d'un cluster Kubernetes. Ces composants prennent des décisions qui affectent le fonctionnement global du cluster. Divers composants sont responsables de la gestion de différentes tâches.
Composant | Description |
---|---|
kube-apiserver | Toutes les communications avec un cluster Kubernetes passent par kube-apiserver. Ce composant expose l'API Kubernetes et lui sert de « niveau frontal ». De par sa conception, kube-apiserver bénéficie d'une évolutivité horizontale afin de gérer une charge croissante. |
etcd | Le moteur Kubernetes utilise etcd, un magasin de valeurs de clé, pour stocker toutes les informations relatives au cluster telles que les nouvelles ressources, les mises à jour et bien plus. |
kube-scheduler | Ce composant est responsable de la planification de nouveaux pods. Le composant kube-scheduler recherche les pods sans nœud attribué et décide à quel emplacement les planifier. Il prend des décisions complexes de planification selon des facteurs tels que les exigences matérielles ou les contraintes d'affinités comme d'anti-affinités. |
kube-controller-manager | Le composant kube-controller-manager exécute les processus du contrôleur. Les clusters Kubernetes peuvent avoir plusieurs contrôleurs (par exemple, un contrôleur de nœud ou de tâche) ; kube-controller-manager s'assure du bon fonctionnement des contrôleurs. |
cloud-controller-manager | Le composant cloud-controller-manager exécute les contrôleurs spécifiques aux différents fournisseurs de services cloud. Cela simplifie l'utilisation de la fonctionnalité d'un fournisseur spécifique (telle que la création de volumes de disques) en cas de nécessité. Les composants de nœuds s'exécutent sur chaque nœud de travail, et chaque cluster doit au moins disposer d'un nœud de travail. Les composants de nœuds effectuent des tâches comme la vérification du fait que les pods sont en cours d'exécution ou qu'ils communiquent l'état des nœuds à kube-apiserver. |
kubelet | Le composant kubelet s'exécute sur chaque nœud de travail et confirme l'exécution ainsi que l'intégrité des conteneurs. Il s'appuie sur les caractéristiques des pods pour garantir ces éléments. |
kube-proxy | Ce proxy réseau Kubernetes gère les règles réseau au niveau du nœud et contribue à l'implémentation de la séparation des services par abstraction. |
Runtime de conteneurs | Un runtime de conteneurs exécute des conteneurs. Chaque nœud a besoin d'un runtime de conteneur. Kubernetes prend en charge plusieurs runtimes, comme containerd ou CRI-O. |
8 fonctionnalités d'AKS
Parmi les fonctionnalités d'Azure Kubernetes Services (AKS), citons notamment :
1. Intégration Azure AD
AKS propose une intégration simplifiée grâce au service Azure Active Directory (Azure AD). Vous pouvez donner accès à l'environnement des clusters aux utilisateurs AD via une authentification intégrée, ce qui simplifie la gestion des utilisateurs. Vous pouvez également sécuriser l'accès aux clusters pour ces entités existantes.
2. Journalisation et surveillance intégrées
L'exécution des workloads implique la surveillance de leurs performances et la capacité d'éviter les temps d'arrêt indésirables. Azure Monitor vous permet de collecter des indicateurs à partir des conteneurs, des nœuds, des clusters et des logs des composants AKS. Azure rationalise votre capacité à stocker des données dans un espace de travail Log Analytics et les met à disposition via le Portail Azure, l'interface de ligne de commande Azure ou l'API Azure.
3. Évolutivité des nœuds et des pods des clusters
Les clusters Kubernetes doivent s'adapter en fonction de la demande. Ceci implique l'évolutivité des pods comme des nœuds. L'outil de mise à l'échelle automatique des clusters AKS peut redimensionner automatiquement les clusters Kubernetes en ajustant le nombre de nœuds afin de satisfaire les besoins des applications en matière de trafic.
4. Nœuds basés sur un GPU
Les nœuds basés sur un GPU se prêtent idéalement aux tâches gourmandes en calcul comme le traitement graphique ou le Machine Learning. AKS rationalise l'activation de ces types de nœuds et leur rattachement à la demande à des clusters Kubernetes.
5. Mises à niveau des nœuds de cluster
Les versions de l'API Kubernetes changent fréquemment, et les entreprises exécutant de grands effectifs de clusters Kubernetes peuvent rapidement perdre le fil des versions qu'elles utilisent pour des workloads différents répartis sur divers environnements. AKS prend en charge l'exécution simultanée de plusieurs versions de Kubernetes, ce qui vous laisse du temps pour tester la fonctionnalité avant mise à niveau. Une fois la décision de mise à niveau arrêtée, AKS s'occupe de mettre à niveau le cluster et de déplacer les workloads vers des nœuds dotés de la nouvelle version, avec des perturbations réduites au minimum.
6. Prise en charge des volumes de stockage
La plupart des applications, conteneurisées ou non, ont besoin de conserver des informations. Certaines applications conteneurisées peuvent nécessiter l'accès au même volume de stockage après que leurs pods sont planifiées vers un nouveau nœud. AKS autorise les workloads à provisionner des volumes dynamiques ou statiques pour les données persistantes.
7. Prise en charge des images Docker et d'un registre privé de conteneurs dédié
AKS est conforme à la norme OCI et prend en charge le format d'image Docker. Azure prend également en charge les registres d'images privés en proposant Azure Container Registry (ACR), qui s'intègre facilement à AKS.
8. Réseaux virtuels Azure
AKS propose deux modèles de réseau : Kubenet et Azure Container Networking Interface (CNI). Vous pouvez définir la configuration réseau de votre choix, AKS s'occupera de l'implémentation.
Le défi de Kubernetes autogéré
Étant donné la nature complexe des composants répertoriés ci-dessus, l'exécution et la gestion à l'échelle d'un cluster Kubernetes nécessitent des efforts et une certaine expertise. À part les composants de l'infrastructure sous-jacente (comme les serveurs, le stockage et la mise en réseau), tous les composants précédemment décrits doivent être en place pour que Kubernetes fonctionne. Vous devez aussi les sécuriser, les entretenir, les mettre à l'échelle et à niveau lorsque c'est nécessaire.
Exécuter votre cluster Kubernetes sur mesure peut nécessiter d'engager une équipe d'ingénieurs dédiée à toutes les tâches opérationnelles. C'est l'idéal si votre activité principale implique la création d'outils pour l'écosystème Kubernetes ou si certaines exigences vous obligent à exécuter vos propres clusters. Cependant, dans la plupart des cas, il vaut mieux déléguer ces tâches de gestion de cluster à un service dédié. C'est là qu'intervient AKS.
En plus de gérer la plupart des aspects opérationnels de l'exécution des clusters Kubernetes, AKS offre des fonctionnalités supplémentaires qui en font une plateforme intéressante pour les entreprises qui exécutent des workloads conteneurisés.
Comment CrowdStrike peut vous aider avec la journalisation AKS ?
Kubernetes simplifie l'exécution des workloads conteneurisés. Il prend en charge les problèmes comme la détection des services et l'autocorrection. Toutefois, le maintien à l'échelle d'un système basé sur Kubernetes n'est pas chose aisée. Azure Kubernetes Service peut séparer nombre de ces tâches opérationnelles par abstraction, telles que la gestion du plan de contrôle et l'allocation dynamique des ressources.
Les logs issus des workloads hébergés par AKS aident au débogage et peuvent contribuer à la détection des cybermenaces. CrowdStrike Falcon® LogScale est une plateforme SaaS de journalisation capable de stocker des volumes de logs illimités issus de votre cluster AKS et d'autres sources.
Comment CrowdStrike vous aide avec la journalisation AKS ?
Cela permet à votre entreprise d'effectuer des interrogations significatives sur vos logs, de créer des tableaux de bord et de configurer les alertes.