Considérations relatives au stockage pour Azure Kubernetes Service (AKS)

Pour exécuter des charges de travail d’application spécifiques, votre organisation ou entreprise doit concevoir des fonctionnalités Azure Kubernetes Service (AKS) appropriées au niveau de la plateforme. Ces charges de travail ont probablement des exigences de stockage différentes. Lorsque vous choisissez la solution de stockage appropriée pour votre application, vous avez plusieurs considérations, notamment les performances, la disponibilité, la récupérabilité, la sécurité et le coût. L’objectif de cet article est de vous guider dans le choix de l’option ou de la combinaison d’options appropriée pour votre charge de travail.

Kubernetes peut exécuter des charges de travail sans état et avec état. Les charges de travail avec état nécessitent souvent une solution de stockage pour stocker l’état. AKS prend en charge plusieurs options intégrées pour le stockage natif, notamment les bases de données managées, les disques (ou blocs) et les fichiers et le stockage blob (ou d’objets). Chacune de ces options offre des références SKU, des tailles et des performances différentes. La sélection de l’option appropriée nécessite une attention particulière.

Cet article décrit les facteurs et les options que vous devez prendre en compte dans Sélectionner le service de stockage approprié et Considérations relatives à la conception. Il fournit des recommandations spécifiques dans Recommandations de conception.

Sélectionner le service de stockage approprié

Le choix des références SKU et des tailles appropriées pour vos déploiements initiaux nécessite des évaluations et, éventuellement, un environnement de preuve de concept ou de test. Voici les instructions générales visant à vous aider à prendre en main le stockage pour AKS :

  • Données structurées. Pour les données structurées que votre application peut stocker dans une base de données managée disponible sur la plateforme (par exemple, Azure SQL), nous vous recommandons d’utiliser une base de données managée.

  • Données non structurées. Pour les données non structurées, telles que les photos, les vidéos et les documents texte, utilisez le stockage blob. Pour ce faire, votre application peut utiliser des objets blob montés en tant que fichiers via le système de fichiers réseau (NFS) ou accessibles en tant que système de fichiers virtuel à l’aide de BlobFuse. Votre application peut également lire et écrire directement dans le stockage blob.

  • Données d’application partagées. Pour les données d’application partagées nécessitant des performances élevées, utilisez Azure NetApp Files ou le niveau Premium d’Azure Files. Pour les données de configuration partagées qui ne nécessitent que des performances limitées, utilisez le niveau Standard d’Azure Files.

  • Bande passante pour les demandes d’application et de stockage. Assurez-vous que vos nœuds disposent d’une bande passante réseau suffisante pour gérer à la fois les demandes d’application et les demandes de stockage. Le trafic du stockage passe sur la pile réseau, que le protocole pour les transferts soit SMB (Server Message Block) ou NFS.

  • Faible latence, IOPS élevé. Utilisez des disques pour le stockage si votre application a besoin d’une latence faible constante pour les applications de messagerie et un nombre élevé d’opérations E/S par seconde (IOPS), et d’un débit élevé pour exécuter vos propres bases de données sur Kubernetes. Pour des performances optimales, envisagez d’utiliser Azure Premium SSD, Azure Premium SSD v2 ou Stockage sur disque Ultra Azure.

Remarques relatives à la conception

Les considérations suivantes concernent la conception du stockage pour AKS. Déterminez où le stockage est requis dans votre environnement AKS et la meilleure solution pour chaque besoin.

Disques du système d’exploitation (SE)

Pour les disques du système d’exploitation, tenez compte des facteurs suivants :

  • Disques éphémères pour le système d’exploitation. Chaque machine virtuelle dans Azure a besoin d’un disque pour son système d’exploitation. Étant donné que les nœuds Kubernetes sont éphémères, AKS utilise par défaut des disques de système d’exploitation éphémères sur les tailles de machines virtuelles prises en charge. Pour plus d’informations sur les disques de système d’exploitation éphémères, consultez la section Système d’exploitation éphémère.

  • Disques managés pour le système d’exploitation. Si votre charge de travail en a besoin, vous pouvez à la place utiliser des disques managés standard pour les nœuds de votre cluster AKS. Cela permet de prendre en charge les charges de travail qui nécessitent des données persistantes sur le lecteur du système d’exploitation. Pour plus d’informations sur les options pour le stockage persistant, consultez Options de stockage pour les applications dans Azure Kubernetes Service (AKS).

  • Dimensionnement des disques managés. Si vous sélectionnez un disque managé comme disque du système d’exploitation, assurez-vous qu’il est dimensionné de manière appropriée pour prendre en charge les exigences du système d’exploitation, du système Kubernetes et de votre charge de travail. Pour plus d’informations sur les options et les différences, consultez Types de disques managés Azure.

Données d'application

Certaines charges de travail ont besoin d’un magasin de données cohérent pour le stockage des données d’application. Si votre application nécessite une base de données, envisagez d’explorer les bases de données managées dans Azure, qui incluent les options suivantes :

Solutions de stockage dans AKS

Si une base de données managée ne répond pas aux besoins de votre application, envisagez d’utiliser une autre option de stockage disponible pour AKS afin de stocker des données cohérentes. Les options incluent les solutions sur disque, les disques éphémères, les solutions basées sur des fichiers, le stockage blob et d’autres options qui ne sont pas abordées dans cet article.

Solutions basées sur disque

Les disques, ou stockage par blocs, sont parfaits pour stocker des données directement sur un appareil brut basé sur des blocs. Le stockage sur disque est idéal pour stocker les données des bases de données que votre cluster Kubernetes héberge. Dans Azure, les disques managés sont la solution pour obtenir un stockage basé sur des blocs.

  • Stockage sur disque statique ou créé dynamiquement. Déterminez si vous souhaitez utiliser un disque statique créé en dehors d’AKS, ou si vous souhaitez qu’AKS crée dynamiquement le stockage sur disque en fonction des besoins du pod ou des pods. Le stockage créé dynamiquement peut également être supprimé dynamiquement. Pour plus d'informations, consultez les pages suivantes :

  • Redondance et performances. Tenez compte de la redondance et des performances de stockage requises par votre charge de travail. Pour plus d'informations, consultez les pages suivantes :

  • Disque partagé. Déterminez si vous avez besoin d’un disque partagé. Pour plus d’informations sur les options, consultez Partager un disque managé Azure.

  • Taille du nœud pour les disques et débit. Tenez compte de la taille de votre nœud Kubernetes. Sa taille doit être suffisante pour prendre en charge à la fois le nombre de disques et les exigences de débit agrégé. Pour plus d’informations sur les tailles et les caractéristiques, consultez Tailles des machines virtuelles dans Azure.

  • Taille du disque et performances requises. Déterminez si la taille de votre disque managé est appropriée pour répondre aux exigences de performances de votre charge de travail. Les performances augmentent à mesure que la taille du disque augmente pour HDD Standard, SSD Standard et SSD Premium v1. Pour plus d’informations sur les disques managés, consultez Types de disques managés Azure.

Solutions de disques éphémères

Déterminez si votre application nécessite un stockage temporaire non persistant ou si vous souhaitez utiliser les lecteurs hautes performances dans les machines virtuelles optimisées pour le stockage. Pour vous connecter à un volume éphémère, vous pouvez utiliser l’option emptyDir dans Kubernetes ou le pilote d’un volume local éphémère CSI. Nous vous recommandons d’utiliser emptyDir pour les données éphémères, telles que l’espace scratch. Pour le stockage sur la série de machines virtuelles optimisées pour le stockage, nous vous recommandons d’utiliser CSI avec un volume local éphémère. Pour plus d’informations sur les pilotes CSI, consultez Pilotes CSI (Container Storage Interface) sur Azure Kubernetes Service (AKS).

Solutions basées sur des fichiers

Déterminez si vos pods doivent partager un système de fichiers. Un système de fichiers partagé est idéal pour les données d’application et de configuration lues et partagées par plusieurs pods dans votre cluster Kubernetes. Le stockage de fichiers expose un système de fichiers partagé via NFS ou SMB/Common Internet File System (CIFS). Azure propose deux solutions pour le stockage basé sur fichier : Azure Files et Azure NetApp Files.

Azure Files

Pour Azure Files, considérez les options suivantes :

  • Partage de fichiers statique ou créé dynamiquement. Déterminez si vous souhaitez utiliser un partage de fichiers statique créé en dehors d’AKS, ou si vous souhaitez qu’AKS crée le partage de fichiers dynamiquement en votre nom. Pour plus d'informations, consultez les pages suivantes :

  • Performances standard ou premium. Évaluez si des performances standard sont suffisantes ou si vous avez besoin de performances premium dans Azure Files.

  • SMB/CIFS ou NFS. Pour accéder à Azure Files, évaluez si votre charge de travail doit utiliser l’API pour le protocole par défaut, SMB/CIFS, ou si votre charge de travail nécessite la prise en charge NFS.

  • Modèle réseau pour l’accès. Considérez le modèle réseau que vous souhaitez utiliser pour accéder à Azure Files : accès via une adresse IP publique directe, un point de terminaison de service ou une liaison privée.

Azure NetApp Files

Pour Azure NetApp Files, considérez les options suivantes :

Stockage d'objets blob

Tenez compte de la quantité de données non structurées que votre application doit stocker. Le Stockage Blob Azure est accessible via une API HTTP ou via les kits SDK. Le montage d’un stockage blob en tant que système de fichiers dans un conteneur ou un pod est idéal pour les charges de travail d’application qui ont d’énormes quantités de données non structurées, telles que des fichiers journaux, des images, des documents, des supports de streaming et des données de récupération d’urgence.

  • Redondance des données. Déterminez la redondance des données qui convient à votre application. Pour plus d’informations, consultez Redondance de Stockage Azure. La redondance des données est sélectionnée au niveau du compte de stockage.

  • Niveau de performance. Déterminez le niveau de performance du stockage blob dont votre application a besoin. Pour plus d’informations, consultez Niveaux d’accès chaud, froid et archive pour les données d’objet blob.

  • Méthode d’authentification pour l’accès. Déterminez la méthode d’authentification que votre application doit utiliser pour accéder au stockage blob : clé de stockage, SAS ou Microsoft Entra ID. Pour plus d’informations, consultez Autoriser l’accès aux données dans Stockage Azure.

  • API vers le stockage blob réduit. Déterminez l’API à utiliser. En règle générale, les applications qui accèdent au stockage blob utilisent l’API dans l’application via l’un des kits SDK, ce qui réduit l’interaction avec le stockage blob à partir du cluster Kubernetes. Pour plus d’informations sur les bibliothèques pour différents langages de programmation, consultez Présentation du Stockage Blob Azure.

  • Stockage blob statique ou créé dynamiquement. Déterminez si vous souhaitez utiliser un conteneur de stockage blob statique créé en dehors d’AKS ou si vous souhaitez qu’AKS crée dynamiquement le conteneur de stockage blob en votre nom. Pour plus d'informations, consultez les pages suivantes :

  • Pilote d’accès au stockage. Réfléchissez à la façon dont votre application doit accéder au stockage blob. Pour y accéder en tant que système de fichiers, vous pouvez utiliser le pilote CSI blob dans Kubernetes. Ce pilote permet d’accéder au stockage blob par le biais du protocole NFSv3 ou d’un pilote fuse.

Autres solutions de stockage

Envisagez d’autres types de stockage si votre application a besoin d’un élément qui n’est pas décrit dans cet article. Il existe plusieurs solutions de stockage spécialisées dans Azure qui peuvent s’intégrer à Kubernetes. Cet article ne les traite pas, mais la liste suivante identifie les solutions possibles :

  • Azure HPC Cache. HPC Cache accélère l’accès à vos données pour les tâches de calcul haute performance. En mettant les fichiers en cache dans Azure, Azure HPC Cache apporte la scalabilité du cloud computing à votre workflow existant. Pour plus d’informations, consultez Intégrer Azure HPC Cache à Azure Kubernetes Service.

  • Azure Data Lake Storage Gen2. Data Lake Storage Gen2 est un type spécial de stockage blob optimisé pour les charges de travail Big Data telles que Hadoop et Spark. Pour plus d’informations, consultez Présentation d’Azure Data Lake Storage Gen2.

Recommandations de conception

Cette section fournit des recommandations basées sur ce qui s’est avéré efficace pour les clients Azure.

  • Utiliser Azure Private Link. À des fins de sécurité, nous vous recommandons d’utiliser Azure Private Link pour toutes les solutions de stockage qui prennent cette fonction en charge. Azure Private Link permet d’accéder aux services Azure, tels que Stockage Azure et SQL Database, ainsi qu’aux services hébergés par Azure via un point de terminaison privé dans votre réseau virtuel. Pour plus d’informations, consultez Qu’est-ce qu’Azure Private Link ?

  • Utiliser des disques éphémères pour le système d’exploitation. Pour les disques de système d’exploitation, nous vous recommandons d’utiliser des disques éphémères. Pour tirer parti de cette fonctionnalité, sélectionnez une taille de machine virtuelle qui dispose d’un disque temporaire de taille appropriée. Pour plus d’informations, consultez Disques de système d’exploitation éphémères pour les machines virtuelles Azure.

  • Utiliser des bases de données managées. Pour les données d’application, nous vous recommandons d’utiliser des bases de données managées. Pour obtenir la liste des options de base de données, consultez Types de bases de données sur Azure.

Les sections suivantes décrivent d’autres recommandations pour les disques Azure, Azure Files et le stockage blob.

Disques Azure

Pour les disques Azure, nous vous recommandons les options de conception suivantes :

  • Utiliser des disques Premium ou Ultra. Dans la plupart des cas, nous recommandons des disques Premium ou Ultra pour garantir des performances adéquates. Pour plus d’informations, consultez Stockage sur disque Azure.

  • Taille du nœud pour les disques et débit. Nous vous recommandons de vous assurer que la taille de votre nœud Kubernetes est suffisante pour prendre en charge le nombre de disques et la quantité de débit agrégé. Pour plus d’informations sur les tailles et les caractéristiques, consultez Tailles des machines virtuelles dans Azure.

  • Créer des instantanés de volumes persistants. Nous vous recommandons de prendre des instantanés des volumes persistants, soit pour provisionner de nouveaux volumes préremplis avec les données de l’instantané, soit pour restaurer un volume existant à un état antérieur à l’aide de la fonctionnalité d’instantané du pilote CSI des disques Azure. Pour plus d’informations, consultez Instantanés de volume.

  • Éviter l’agrégation par bandes entre les disques. Nous vous recommandons d’éviter l’agrégation par bandes (striping) entre plusieurs disques dans Kubernetes.

  • Utiliser PV/PVC. Nous vous recommandons d’utiliser PV et PVC dans Kubernetes pour créer dynamiquement des disques si nécessaire. Pour plus d’informations sur le stockage persistant, consultez Options de stockage pour les applications dans Azure Kubernetes Service (AKS).

Azure Files

Pour Azure Files, nous vous recommandons les options de conception suivantes :

  • Choisir Premium. Si les performances sont critiques, nous vous recommandons d’utiliser le niveau Premium.

  • Créer des comptes de stockage dédiés. Nous vous recommandons de fournir des comptes de stockage dédiés pour vos partages de fichiers.

  • Choisir des partages de fichiers statiques ou créés dynamiquement. Nous vous recommandons de déterminer avec soin si vous souhaitez qu’AKS crée les partages de fichiers ou si vous souhaitez les créer de manière statique en dehors de Kubernetes. Le stockage créé dynamiquement peut également être supprimé dynamiquement. Pour plus d’informations sur la création dynamique de partages de fichiers par AKS, consultez Créer et utiliser dynamiquement un volume persistant avec Azure Files.

Azure NetApp Files

Pour Azure NetApp Files, nous vous recommandons les options de conception suivantes :

  • Choisissez un niveau de performances en fonction des exigences de l’application. Azure NetApp Files offre 3 niveaux de performances pour différentes classes de performances. Pour plus d’informations, consultez Facteurs de performance pour Azure NetApp Files.

  • Créez des pools de capacité dans la même région Azure que le cluster AKS. Pour plus d’informations, consultez Créer un pool de capacité pour Azure NetApp Files.

  • Utilisez le type QoS automatique pour les pools de capacité.

  • Planifiez votre réseau. Deux options existent pour la conception réseau :

    1. Si vous utilisez le même réseau virtuel pour AKS et Azure NetApp Files, créez un sous-réseau dédié pour Azure NetApp Files et déléguez le sous-réseau à Microsoft.NetApp/Volumes.
    2. Si vous utilisez des réseaux virtuels différents, établissez un peering de réseaux virtuels entre eux.

Stockage d'objets blob

Pour le stockage blob, nous vous recommandons les options de conception suivantes :

  • Utiliser un kit SDK pour interagir avec le stockage. Nous vous recommandons d’utiliser un kit SDK au niveau de l’application pour interagir avec le stockage blob.

  • Utiliser CSI avec NFS pour interagir avec le stockage. Si vous ne pouvez pas utiliser un kit SDK au niveau de l’application pour interagir avec le stockage blob, nous vous recommandons d’utiliser l’option NFS v3 dans le pilote CSI blob. Pour plus d’informations, consultez Utiliser le pilote CSI (Container Storage Interface) de Stockage Blob Azure.

  • Utiliser Microsoft Entra ID pour les accès. Nous vous recommandons d’utiliser Microsoft Entra ID pour autoriser l’accès au stockage blob. Évitez d’utiliser une clé de compte de stockage partagée. Pour plus d’informations, consultez Autoriser l’accès aux objets blob avec Microsoft Entra ID.

  • Ajuster les niveaux. Nous vous recommandons d’utiliser des stratégies de gestion du cycle de vie pour déplacer les données rarement consultées vers un niveau d’accès sporadique. Pour plus d’informations, consultez Niveaux d’accès chaud, froid et archive pour les données d’objet blob.

Étapes suivantes

Découvrez comment étendre l’allocation des coûts à un déploiement, un service, une étiquette, un pod ou un espace de noms dans AKS à l’aide de Kubecost.