Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Monter des buckets OSS à l'aide de volumes dynamiques ossfs 1.0

Dernière mise à jour :Aug 12, 2026

ossfs 1.0 prend en charge le provisionnement dynamique, qui crée automatiquement un volume persistant (PV) et monte un OSS Bucket en s'appuyant sur une StorageClass et un PersistentVolumeClaim (PVC). Cette fonctionnalité supprime la configuration manuelle des PV, simplifie considérablement la gestion du stockage et convient parfaitement aux environnements multi-locataires ou aux scénarios nécessitant un provisionnement fréquent et à la demande du stockage.

Prérequis

Votre cluster et vos composants CSI (csi-plugin et csi-provisioner) doivent répondre aux exigences suivantes :

  • Pour l'authentification via RAM Roles for Service Accounts (RRSA) : votre cluster doit être en version 1.26 ou ultérieure, et la version du CSI doit être v1.30.4 ou ultérieure.

    Si vous avez utilisé la fonctionnalité RRSA dans une version antérieure à v1.30.4, reportez-vous à [[Modification du produit] Mise à niveau de la version ossfs CSI et optimisation du processus de montage](t2763435.xdita#) pour ajouter la configuration d'autorisation de rôle RAM requise.
  • Pour l'authentification via AccessKey : afin de garantir la stabilité du montage, nous recommandons la version CSI v1.18.8.45 ou ultérieure.

Pour mettre à niveau votre cluster, consultez Mettre à niveau manuellement un cluster. Pour mettre à niveau les composants CSI, consultez Mettre à niveau les composants CSI.

À partir de la version CSI v1.30.4-*, le montage de volumes statiques OSS dépend du composant csi-provisioner .

Étape 1 : Choisir une méthode d'authentification

Pour garantir que votre cluster puisse accéder aux ressources OSS Bucket de manière sécurisée et conforme, configurez d'abord une méthode d'authentification.

  • Authentification RRSA : accorde dynamiquement aux Pods des rôles RAM temporaires et à rotation automatique, permettant une isolation granulaire des permissions au niveau applicatif. Cette méthode offre une sécurité renforcée.

  • Authentification AccessKey : stocke des clés statiques à long terme dans un Secret. Cette méthode est plus simple à configurer mais moins sécurisée.

Important
  • Pour les clusters exécutant la version 1.26 ou ultérieure, nous recommandons l'authentification RRSA afin d'éviter les redémarrages des charges de travail et les remontages ossfs causés par la rotation des AccessKey.

  • Cet exemple suppose que le cluster et l'OSS Bucket se trouvent dans le même compte Alibaba Cloud. Pour monter un OSS Bucket appartenant à un autre compte, nous recommandons d'utiliser l'authentification RRSA.

RRSA

1. Activer RRSA pour votre cluster

  1. Sur la page ACK Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Cluster Information.

  2. Dans l'onglet Basic Information, sous la section Security and Auditing, cliquez sur Enabled à droite de RRSA OIDC. Suivez les instructions à l'écran pour activer RRSA pendant les heures creuses.

    Lorsque l'état du cluster passe de Updating à Running, RRSA est activé.

    Important

    Après l'activation de RRSA, la durée de validité maximale des jetons ServiceAccount nouvellement créés dans le cluster est limitée à 12 heures.

2. Créer et autoriser un rôle RAM

Créez un rôle RAM que vos Pods pourront assumer pour accéder au volume de stockage OSS avec une authentification RRSA.

Afficher les étapes

  1. Créez un rôle RAM.

    1. Accédez à la page Create Role sur la console RAM. Pour Principal Type, sélectionnez IdP. Cliquez ensuite sur Switch to Policy Editor pour ouvrir l'Visual Editor.

    2. Pour Principal, sélectionnez IdP. Cliquez sur Edit et configurez les paramètres comme décrit dans le tableau suivant.

      Configurez les paramètres principaux et conservez les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez Créer un rôle RAM pour un fournisseur d'identité OIDC .

      Paramètre

      Description

      IdP Type

      OIDC.

      IdP

      Sélectionnez ack-rrsa-<cluster_id>, où <cluster_id> correspond à l'ID de votre cluster.

      Condition

      Ajoutez manuellement oidc:sub.

      Role Name

      Par exemple, saisissez demo-role-for-rrsa.

  2. Créez une politique d'accès.

    Cet exemple respecte le principe du moindre privilège. Créez une politique personnalisée pour accorder l'accès à l'OSS Bucket cible. Vous pouvez accorder des permissions en lecture seule ou en lecture/écriture.

    1. Accédez à la page Create Policy sur la console RAM, basculez vers l'JSON Editor, puis configurez le script de politique.

      Si vous possédez déjà un rôle RAM avec des permissions OSS, vous pouvez le réutiliser en modifiant sa politique de confiance. Pour plus d'informations, consultez Utiliser un rôle RAM existant et accorder des permissions .

      Politique en lecture seule

      Remplacez par le nom réel du bucket.
      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      Politique de lecture/écriture OSS

      Remplacez <myBucketName> par le nom réel du bucket.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }
    2. (Facultatif) Si vous utilisez un ID CMK spécifique géré par KMS pour chiffrer les objets OSS, vous devez également accorder les permissions KMS au rôle. Pour plus d'informations, consultez Utiliser un ID CMK spécifique géré par KMS pour chiffrer les données.

  3. Attachez la politique d'accès au rôle RAM.

    1. Accédez à la page Roles sur la console RAM, recherchez le rôle créé, puis dans la colonne Actions, cliquez sur Attach Policy.

    2. Dans la section Policies, recherchez et sélectionnez la politique d'accès que vous avez créée.

AccessKey

Créez un utilisateur RAM disposant des permissions nécessaires pour accéder à l'OSS Bucket cible, puis obtenez un AccessKey pour cet utilisateur.

  1. Créez un utilisateur RAM. Vous pouvez ignorer cette étape si vous possédez déjà un utilisateur RAM.

    Accédez à la page Create User sur la console RAM et suivez les instructions à l'écran pour créer un utilisateur RAM. Vous devez spécifier des paramètres tels que le nom de connexion et le mot de passe.

  2. Créez une politique d'accès.

    Cet exemple respecte le principe du moindre privilège. Créez une politique personnalisée pour accorder l'accès à l'OSS Bucket cible. Vous pouvez accorder des permissions en lecture seule ou en lecture/écriture.

    1. Accédez à la page Create Policy sur la console RAM, basculez vers l'JSON Editor, puis configurez le script de politique.

      Politique en lecture seule

      Remplacez <myBucketName> par le nom réel du bucket.
      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      Politique de lecture/écriture OSS

      Remplacez <myBucketName> par le nom réel du bucket.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      Si vous souhaitez créer un PV via la console, vous avez également besoin de la permission oss:ListBuckets.

      {
        "Effect": "Allow",
        "Action": "oss:ListBuckets",
        "Resource": "*"
      }
    2. (Facultatif) Si vous utilisez un ID CMK spécifique géré par KMS pour chiffrer les objets OSS, vous devez également accorder les permissions KMS à l'utilisateur RAM. Pour plus d'informations, consultez Utiliser un ID CMK spécifique géré par KMS pour chiffrer les données.

  3. Attachez la politique d'accès à l'utilisateur RAM.

    1. Accédez à la page Users sur la console RAM, recherchez l'utilisateur créé, puis dans la colonne Actions, cliquez sur Add Permissions.

    2. Dans la section Policies, recherchez et sélectionnez la politique d'accès que vous avez créée.

  4. L'AccessKey créé sera stocké sous forme de Secret pour le PV.

    1. Accédez à la page Users sur la console RAM, cliquez sur le nom de votre utilisateur RAM, puis dans la section AccessKey, cliquez sur Create AccessKey.

    2. Suivez les instructions à l'écran pour créer un AccessKey. Copiez et stockez en lieu sûr l'AccessKey ID et l'AccessKey Secret.

Étape 2 : Créer une StorageClass

Créez une StorageClass pour définir un modèle de provisionnement des volumes persistants.

Méthode RRSA

  1. Créez un fichier nommé sc-oss.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: sc-oss
    parameters:
      # Replace with the name of your OSS bucket.
      bucket: bucket  
      # The mount path relative to the bucket's root directory. You can specify a subdirectory.
      path: /
      # The endpoint of the region where the bucket is located.
      url:  "http://oss-cn-hangzhou-internal.aliyuncs.com"  
      # Use the RRSA method for authentication.
      authType: rrsa
      # The RAM role that you created or modified.
      roleName: demo-role-for-rrsa
      # Custom parameters.
      otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
      # The volume access mode.
      volumeAs: sharepath
    # Fixed value for the Alibaba Cloud OSS CSI plug-in.
    provisioner: ossplugin.csi.alibabacloud.com
    # The reclaim policy for the dynamically provisioned persistent volume.
    reclaimPolicy: Retain
    # The volume binding mode.
    volumeBindingMode: Immediate

    Paramètre

    Description

    bucket

    Le bucket OSS à monter.

    path

    La version du composant CSI doit être v1.14.8.32-c77e277b-aliyun ou ultérieure.

    Chemin de montage relatif au répertoire racine du bucket. La valeur par défaut est /, ce qui monte l'intégralité du bucket.

    Si la version d'ossfs est antérieure à 1,91, le path spécifié doit exister dans le bucket OSS. Pour plus d'informations, consultez Nouvelles fonctionnalités d'ossfs 1,91 et versions ultérieures.

    url

    authType

    Définissez ce paramètre sur rrsa pour utiliser RRSA pour l'authentification.

    roleName

    Le rôle RAM que vous avez créé ou modifié.

    Pour configurer des permissions différentes pour chaque StorageClass, vous pouvez créer plusieurs rôles RAM et spécifier différentes valeurs roleName dans chaque StorageClass.

    otherOpts

    Paramètres personnalisés pour le volume persistant OSS, au format -o -o . Par exemple : -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Développer pour plus de détails

    • umask : définit le masque de permissions pour les fichiers et répertoires.

      Par exemple, umask=022 change les permissions des fichiers à 755. Cela résout le problème de permissions pour les fichiers téléchargés via d'autres méthodes, telles que les SDK ou la console OSS, qui ont une permission par défaut de 640. Nous recommandons de configurer ce paramètre pour la séparation lecture/écriture ou l'accès multi-utilisateurs.

    • max_stat_cache_size : définit la limite supérieure des entrées de cache de métadonnées, par exemple 100000. Les métadonnées sont mises en cache en mémoire pour améliorer les performances des opérations telles que ls et stat.

      Cependant, ce cache ne peut pas détecter immédiatement les modifications de fichiers effectuées via la console OSS, les SDK ou ossutil. Cela peut amener les applications à lire des données incohérentes. Si vous avez des exigences strictes en matière de cohérence des données, définissez ce paramètre sur 0 pour désactiver le cache, ou réduisez le temps d'expiration du cache à l'aide du paramètre stat_cache_expire. Cela peut toutefois réduire les performances de lecture.

    • allow_other : permet aux utilisateurs autres que celui ayant monté le volume d'accéder aux fichiers et répertoires du chemin de montage. Cela convient aux environnements partagés multi-utilisateurs où des utilisateurs non-monteurs doivent également accéder aux données.

    Pour plus d'informations sur les paramètres optionnels, consultez Options de montage et Meilleures pratiques pour la configuration d'ossfs 1.0.

    provisioner

    Type de pilote. Cette valeur est fixée à ossplugin.csi.alibabacloud.com lors de l'utilisation du plug-in CSI OSS d'Alibaba Cloud.

    reclaimPolicy

    Politique de récupération pour les volumes persistants provisionnés dynamiquement. Les volumes persistants OSS prennent uniquement en charge Retain, ce qui signifie que lorsque vous supprimez un PVC, le volume persistant correspondant et les données dans le bucket OSS ne sont pas supprimés.

    volumeBindingMode

    Mode de liaison du volume.

    Les volumes persistants OSS ne nécessitent pas d'affinité de nœud basée sur la zone de disponibilité. Vous pouvez utiliser la valeur par défaut Immediate.

    volumeAs

    Mode d'accès au volume. La valeur par défaut est sharepath. Valeurs valides :

    • sharepath : tous les volumes persistants partagent le même chemin de montage. Les données sont stockées à <bucket>:<path>/.

    • subpath : crée un sous-répertoire dédié pour chaque volume persistant afin d'isoler les données. Les données sont stockées à <bucket>:<path>/<pv-name>/.

      Ce paramètre prend effet uniquement lorsque la version du composant CSI est 1.31.3 ou ultérieure.

    sigVersion

    Version de signature pour les requêtes envoyées au serveur OSS.

  2. Créez la StorageClass.

    kubectl apply -f sc-oss.yaml

Méthode AccessKey

kubectl

1. Créer une StorageClass

  1. Créez un Secret dans le même namespace que votre application.

    Remplacez akId et akSecret par votre AccessKey ID et votre AccessKey Secret.

    kubectl create secret generic oss-secret --from-literal='akId=<yourAccessKey ID>' --from-literal='akSecret=<yourAccessKey Secret>'
  2. Créez la StorageClass.

    1. Créez un fichier nommé sc-oss.yaml.

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: sc-oss
      parameters:
        # Replace with the name of your OSS bucket.
        bucket: bucket
        # The mount path relative to the bucket's root directory. You can specify a subdirectory.
        path: /
        # The endpoint of the region where the bucket is located.
        url: "http://oss-cn-hangzhou-internal.aliyuncs.com" 
        # The name of the Secret that stores the AccessKey information.
        csi.storage.k8s.io/node-publish-secret-name: oss-secret
        # The namespace where the Secret that stores the AccessKey information is located.
        csi.storage.k8s.io/node-publish-secret-namespace: default
        # Custom parameters.
        otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
      # Fixed value for the Alibaba Cloud OSS CSI plug-in.
      provisioner: ossplugin.csi.alibabacloud.com
      # The reclaim policy for the dynamically provisioned persistent volume.
      reclaimPolicy: Retain
      # The volume binding mode.
      volumeBindingMode: Immediate
      

      Paramètre

      Description

      name

      Nom de la StorageClass.

      bucket

      Le bucket OSS à monter.

      path

      La version du composant CSI doit être v1.14.8.32-c77e277b-aliyun ou ultérieure.

      Chemin de montage relatif au répertoire racine du bucket. La valeur par défaut est /, ce qui monte l'intégralité du bucket.

      Si la version d'ossfs est antérieure à 1,91, le path spécifié doit exister dans le bucket OSS. Pour plus d'informations, consultez Nouvelles fonctionnalités d'ossfs 1,91 et versions ultérieures.

      url

      csi.storage.k8s.io/node-publish-secret-name

      Nom du Secret contenant les informations d'AccessKey.

      csi.storage.k8s.io/node-publish-secret-namespace

      Namespace où se trouve le Secret contenant les informations d'AccessKey.

      otherOpts

      Paramètres personnalisés pour le volume persistant OSS, au format -o -o . Par exemple : -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

      Développer pour plus de détails

      • umask : définit le masque de permissions pour les fichiers et répertoires.

        Par exemple, umask=022 change les permissions des fichiers à 755. Cela résout le problème de permissions pour les fichiers téléchargés via d'autres méthodes, telles que les SDK ou la console OSS, qui ont une permission par défaut de 640. Nous recommandons de configurer ce paramètre pour la séparation lecture/écriture ou l'accès multi-utilisateurs.

      • max_stat_cache_size : définit la limite supérieure des entrées de cache de métadonnées, par exemple 100000. Les métadonnées sont mises en cache en mémoire pour améliorer les performances des opérations telles que ls et stat.

        Cependant, ce cache ne peut pas détecter immédiatement les modifications de fichiers effectuées via la console OSS, les SDK ou ossutil. Cela peut amener les applications à lire des données incohérentes. Si vous avez des exigences strictes en matière de cohérence des données, définissez ce paramètre sur 0 pour désactiver le cache, ou réduisez le temps d'expiration du cache à l'aide du paramètre stat_cache_expire. Cela peut toutefois réduire les performances de lecture.

      • allow_other : permet aux utilisateurs autres que celui ayant monté le volume d'accéder aux fichiers et répertoires du chemin de montage. Cela convient aux environnements partagés multi-utilisateurs où des utilisateurs non-monteurs doivent également accéder aux données.

      Pour plus d'informations sur les paramètres optionnels, consultez Options de montage et Meilleures pratiques pour la configuration d'ossfs 1.0.

      provisioner

      Type de pilote. Cette valeur est fixée à ossplugin.csi.alibabacloud.com lors de l'utilisation du plug-in CSI OSS d'Alibaba Cloud.

      reclaimPolicy

      Politique de récupération pour les volumes persistants provisionnés dynamiquement. Les volumes persistants OSS prennent uniquement en charge Retain, ce qui signifie que lorsque vous supprimez un PVC, le volume persistant correspondant et les données dans le bucket OSS ne sont pas supprimés.

      volumeBindingMode

      Mode de liaison du volume.

      Les volumes persistants OSS ne nécessitent pas d'affinité de nœud basée sur la zone de disponibilité. Vous pouvez utiliser la valeur par défaut Immediate.

      volumeAs

      Mode d'accès au volume. La valeur par défaut est sharepath. Valeurs valides :

      • sharepath : tous les volumes persistants partagent le même chemin de montage. Les données sont stockées à <bucket>:<path>/.

      • subpath : crée un sous-répertoire dédié pour chaque volume persistant afin d'isoler les données. Les données sont stockées à <bucket>:<path>/<pv-name>/.

        Ce paramètre prend effet uniquement lorsque la version du composant CSI est 1.31.3 ou ultérieure.

      sigVersion

      Version de signature pour les requêtes envoyées au serveur OSS.

    2. Créez la StorageClass.

      kubectl apply -f sc-oss.yaml

Console

  1. Stockez l'AccessKey de l'Étape 1 sous forme de Secret pour le volume persistant.

    1. Sur la page ACK Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Configurations > Secrets.

    2. Cliquez sur Create from YAML et suivez les instructions à l'écran pour créer le Secret.

      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
        # Must match the namespace of the application.
        namespace: default
      stringData:
        # Replace with your AccessKey ID.
        akId: <your AccessKey ID>
        # Replace with your AccessKey secret.
        akSecret: <your AccessKey Secret>
  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Volumes > StorageClasses.

  3. Sur la page StorageClasses, cliquez sur Create, définissez PV Type sur OSS, puis suivez les instructions à l'écran pour configurer la StorageClass.

    Paramètre

    Description

    Certificat d'accès

    Secret utilisé pour accéder à OSS, contenant l'AccessKey ID et l'AccessKey Secret.

    Bucket ID:

    Bucket OSS à utiliser.

    La console affiche uniquement les buckets accessibles avec l'AccessKey configuré.

    Chemin OSS

    La version du composant CSI doit être v1.14.8.32-c77e277b-aliyun ou ultérieure.

    Chemin de montage relatif au répertoire racine du bucket. La valeur par défaut est /, ce qui monte l'intégralité du bucket.

    Si la version d'ossfs est antérieure à 1,91, le path spécifié doit exister dans le bucket OSS. Pour plus d'informations, consultez Nouvelles fonctionnalités d'ossfs 1,91 et versions ultérieures.

    Volume Mode

    Mode d'accès au volume. La valeur par défaut est Shared Directory. Valeurs valides :

    Le mode Subdirectory prend effet uniquement lorsque la version du composant CSI est 1.31.3 ou ultérieure. Sinon, le mode Shared Directory est utilisé.
    • Shared Directory (sharepath) : tous les volumes persistants partagent le même chemin de montage. Les données sont stockées à <bucket>:<path>/.

    • Subdirectory (subpath) : crée un sous-répertoire dédié pour chaque volume persistant afin d'isoler les données. Les données sont stockées à <bucket>:<path>/<pv-name>/.

    Endpoint

    Par défaut, la console utilise HTTP pour accéder à OSS via un réseau interne. Pour utiliser HTTPS, vous devez créer le PV à l'aide de kubectl.

    Politique de récupération

    Politique de récupération pour les volumes persistants provisionnés dynamiquement. Les volumes persistants OSS prennent uniquement en charge Retain, ce qui signifie que lorsque vous supprimez un PVC, le volume persistant correspondant et les données dans le bucket OSS ne sont pas supprimés.

    Optional Parameters:

    Paramètres personnalisés pour le volume persistant OSS, au format -o -o . Par exemple : -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Développer pour plus de détails

    • umask : définit le masque de permissions pour les fichiers et répertoires.

      Par exemple, umask=022 change les permissions des fichiers à 755. Cela résout le problème de permissions pour les fichiers téléchargés via d'autres méthodes, telles que les SDK ou la console OSS, qui ont une permission par défaut de 640. Nous recommandons de configurer ce paramètre pour la séparation lecture/écriture ou l'accès multi-utilisateurs.

    • max_stat_cache_size : définit la limite supérieure des entrées de cache de métadonnées, par exemple 100000. Les métadonnées sont mises en cache en mémoire pour améliorer les performances des opérations telles que ls et stat.

      Cependant, ce cache ne peut pas détecter immédiatement les modifications de fichiers effectuées via la console OSS, les SDK ou ossutil. Cela peut amener les applications à lire des données incohérentes. Si vous avez des exigences strictes en matière de cohérence des données, définissez ce paramètre sur 0 pour désactiver le cache, ou réduisez le temps d'expiration du cache à l'aide du paramètre stat_cache_expire. Cela peut toutefois réduire les performances de lecture.

    • allow_other : permet aux utilisateurs autres que celui ayant monté le volume d'accéder aux fichiers et répertoires du chemin de montage. Cela convient aux environnements partagés multi-utilisateurs où des utilisateurs non-monteurs doivent également accéder aux données.

    Pour plus d'informations sur les paramètres optionnels, consultez Options de montage et Meilleures pratiques pour la configuration d'ossfs 1.0.

Étape 3 : Créer un PVC

Créez un PVC pour demander dynamiquement des ressources de stockage. Le plug-in CSI crée automatiquement un PV basé sur la StorageClass.

kubectl

  1. Créez un fichier nommé pvc-oss.yaml :

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      # PVC name
      name: pvc-oss
    spec:
      # Configure the access mode. ReadOnlyMany means that ossfs mounts the OSS bucket in read-only mode.
      accessModes:
      - ReadOnlyMany
      volumeMode: Filesystem
      resources:
        requests:
          # Declare the requested storage capacity. This value does not limit the actual capacity of the OSS volume.
          storage: 20Gi
      # Specify the StorageClass to use.
      storageClassName: sc-oss

    Paramètre

    Description

    accessModes

    Spécifie le mode d'accès. Les valeurs prises en charge sont ReadOnlyMany et ReadWriteMany.

    Si défini sur ReadOnlyMany, ossfs monte le bucket OSS en mode lecture seule.

    storage

    Capacité demandée pour le volume. Cette valeur ne limite pas la capacité réelle du volume OSS.

    storageClassName

    Nom de la StorageClass.

  2. Créez le PVC :

    kubectl apply -f pvc-oss.yaml
  3. Vérifiez que le PVC est créé et dans l'état Bound :

    kubectl get pvc pvc-oss

    Sortie attendue :

    NAME           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         VOLUMEATTRIBUTESCLASS   AGE
    pvc-oss        Bound    oss-251d111d-3b0b-4879-81a0-eb5a19xxxxxx   20Gi       ROX            sc-oss             <unset>                 4d20h

Console

  1. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Volumes > Persistent Volume Claims.

  2. Sur la page Persistent Volume Claims, cliquez sur Create. Définissez PVC Type sur OSS et configurez les paramètres.

    Paramètre

    Description

    Allocation Mode

    Sélectionnez Use StorageClass.

    Existing Storage Class

    Cliquez sur Select Storage Class et choisissez la StorageClass précédemment créée.

    Capacité

    Capacité demandée pour le volume. Cette valeur ne limite pas la capacité réelle du volume OSS.

    Access Mode

    Spécifie le mode d'accès. Les valeurs prises en charge sont ReadOnlyMany et ReadWriteMany.

    Si défini sur ReadOnlyMany, ossfs monte le bucket OSS en mode lecture seule.

Étape 4 : Créer une application et monter un volume

Pour monter le volume, référencez le PVC dans votre application.

kubectl

  1. Créez un fichier oss-workload.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oss-workload
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              # The mount path in the container.
              - name: pvc-oss
                mountPath: "/data"
            # Configure a health check.
            livenessProbe:
              exec:
                command:
                - ls
                - /data
              initialDelaySeconds: 30
              periodSeconds: 30
          volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                # Reference the PVC that you created.
                claimName: pvc-oss
  2. Créez l'application.

    kubectl create -f oss-workload.yaml
  3. Vérifiez le montage.

    • Confirmez que les Pods sont en cours d'exécution.

      kubectl get pod -l app=nginx
    • Accédez à un Pod et vérifiez le point de montage.

      kubectl exec -it <pod-name> -- ls /data

      La sortie doit lister les fichiers présents dans le chemin de montage OSS.

Console

  1. Sur la page ACK Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

  2. Sur la page Deployments, cliquez sur Create from Image.

  3. Cliquez sur Create from Image et suivez les instructions à l'écran pour configurer les paramètres de l'application.

    Les paramètres clés sont décrits dans le tableau suivant. Pour les autres paramètres, vous pouvez utiliser les valeurs par défaut. Pour plus d'informations, consultez Créer un déploiement.

    Page de configuration

    Paramètre

    Description

    Basic Information

    Replicas:

    Nombre de réplicas de Pod pour le déploiement.

    Container

    Nom de l'image

    Adresse de l'image conteneur pour l'application, par exemple anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6.

    Required Resources

    Quantité de vCPU et de mémoire à allouer à chaque conteneur.

    Volumes

    Cliquez sur Add PVC puis configurez les paramètres.

    • Mount Source : sélectionnez le PVC créé précédemment.

    • Container Path : chemin dans le conteneur où le volume sera monté, par exemple /data.

    Labels and Annotations

    Libellé de Pod

    Par exemple, définissez la clé sur 'app' et la valeur sur 'nginx'.

  4. Vérifiez l'état du déploiement de l'application.

    Sur la page Deployments, cliquez sur le nom de votre application. Dans l'onglet Pods, vérifiez que les Pods ont le statut Running.

Étape 5 : Vérifier le stockage partagé et persistant

Vérifier le stockage partagé

Pour vérifier le stockage partagé, créez un fichier dans un Pod puis visualisez-le dans un autre.

  1. Obtenez les noms des Pods de l'application.

    kubectl get pod -l app=nginx
  2. Cet exemple utilise le Pod oss-workload-66fbb85b67-d**** :

    • ReadWriteMany : créez le fichier tmpfile dans le chemin /data.

      kubectl exec oss-workload-66fbb85b67-d**** -- touch /data/tmpfile
    • ReadOnlyMany : téléchargez le fichier tmpfile vers le chemin correspondant dans le bucket OSS en utilisant la console OSS ou en téléchargeant un fichier avec cp.

  3. Vérifiez la présence du fichier dans le chemin de montage d'un autre Pod.

    Prenons l'exemple d'un Pod nommé oss-workload-66fbb85b67-l**** avec le chemin de montage data.

    kubectl exec oss-workload-66fbb85b67-l**** -- ls /data | grep tmpfile

    La présence du fichier dans la sortie confirme que les Pods peuvent partager des données.

    tmpfile
    Si vous ne voyez pas la sortie attendue, assurez-vous que la version de votre composant CSI est v1.20.7 ou ultérieure.

Vérifier le stockage persistant

Pour vérifier le stockage persistant, supprimez un Pod puis vérifiez que le fichier reste présent après la recréation automatique du Pod.

  1. Supprimez un Pod de l'application. Le contrôleur de déploiement le recrée automatiquement.

    kubectl delete pod oss-workload-66fbb85b67-d****
  2. Vérifiez l'état des Pods. Attendez que le nouveau Pod démarre et passe à l'état Running.

    kubectl get pod -l app=nginx
  3. Visualisez les fichiers dans le chemin /data.

    Cet exemple utilise un Pod nommé oss-workload-66fbb85b67-z**** avec le chemin de montage data.

    kubectl exec oss-workload-66fbb85b67-z**** -- ls /data | grep tmpfile

    La sortie montre que le fichier tmpfile existe toujours, ce qui confirme que les données persistent même après la recréation du Pod.

    tmpfile

Impacts connus

  • Risques liés à l'intégrité des données

    • Risque de cohérence des écritures simultanées : pour améliorer la stabilité des écritures, nous recommandons de mettre à niveau le composant CSI vers la version v1.28 ou ultérieure. Cependant, dans les scénarios d'écriture simultanée sur un fichier unique, la fonctionnalité de « téléchargement par écrasement » d'OSS peut tout de même écraser les données. Vous devez garantir la cohérence des données au niveau applicatif.

    • Risque de synchronisation des données et de suppression accidentelle : lorsqu'un volume est monté, la suppression ou la modification de fichiers dans le chemin de montage sur un Pod d'application ou un nœud hôte synchronise directement ces changements avec les fichiers sources dans l'OSS Bucket. Pour éviter toute suppression accidentelle de données, nous recommandons d'activer le versioning pour votre OSS Bucket.

  • Risques liés à la stabilité des applications

    • Risque d'OOM : lorsque vous effectuez une opération readdir (telle que la commande ls dans un script shell) sur un grand nombre de fichiers (par exemple, plus de 100 000, selon la mémoire du nœud) pour la première fois, ossfs charge toutes les métadonnées en une seule fois et consomme une grande quantité de mémoire. Cela peut provoquer l'arrêt du processus par OOM Killer et rendre le point de montage indisponible.

      Pour atténuer ce risque, nous recommandons de monter un sous-répertoire de l'OSS Bucket ou d'optimiser votre structure de répertoires.

    • Temps de montage prolongé : la configuration de securityContext.fsgroup dans une application amène kubelet à modifier récursivement les permissions des fichiers (chmod/chown) lors du montage d'un volume. Si le volume contient un grand nombre de fichiers, le temps de montage est considérablement prolongé, ce qui peut entraîner des retards importants dans le démarrage des Pods.

      Si vous devez configurer ce paramètre mais souhaitez réduire le temps de montage, consultez Augmentation du temps de montage pour les volumes OSS.

    • Risque d'invalidation de clé (authentification AccessKey) : si un AccessKey référencé par un PV devient invalide ou si ses permissions changent, l'application associée perd immédiatement l'accès.

      Pour rétablir l'accès, vous devez mettre à jour les identifiants dans le Secret et redémarrer le Pod de l'application pour forcer un remontage. Cela provoque une interruption de service ; effectuez donc cette opération pendant une fenêtre de maintenance. Pour plus d'informations, consultez Solutions.

  • Risques liés aux coûts

    • Coûts des fragments : lors du téléchargement de fichiers supérieurs à 10 Mo, ossfs effectue un téléchargement multipartite, divisant le fichier en fragments. Si un téléchargement est interrompu de manière inattendue, par exemple en raison d'un redémarrage d'application, vous devez supprimer manuellement les fragments ou les supprimer à l'aide de règles de cycle de vie pour éviter les coûts de stockage liés aux fragments incomplets.

Libération des ressources

  1. Supprimer les charges de travail

    • Action : supprimez toutes les charges de travail, telles que les Deployments et les StatefulSets, qui utilisent le PVC. Cela arrête les Pods et démonte le volume.

    • Exemple de commande : kubectl delete deployment <your-deployment-name>

  2. Supprimer le PVC

    • Action : supprimez le PVC. La politique de récupération (reclaimPolicy) pour les volumes OSS provisionnés dynamiquement prend uniquement en charge Retain. Lorsque vous supprimez le PVC, son PV lié passe à l'état Released, et le bucket OSS backend conserve intégralement le sous-répertoire et les données correspondants.

    • Exemple de commande : kubectl delete pvc <your-pvc-name>

  3. Supprimer le PV

    • Action : supprimez le PV à l'état Released. Cette opération supprime uniquement l'objet ressource PV de Kubernetes et ne supprime aucune donnée dans le bucket OSS backend.

    • Exemple de commande : kubectl delete pv <your-pv-name>

  4. Supprimer la StorageClass et le Secret (facultatif)

    • Action : supprimez la StorageClass et le Secret associé s'ils ne sont plus nécessaires. Cette opération supprime uniquement les objets ressources de Kubernetes et n'affecte pas le bucket OSS backend.

    • Exemples de commandes : kubectl delete sc <your-storageclass-name>, kubectl delete secret <your-secret-name>

Documents connexes

  • Gérez les volumes OSS à l'aide de CNFS pour améliorer leurs performances et leur QoS. Pour plus d'informations, consultez Gérer le cycle de vie des volumes OSS.

  • Activez le chiffrement côté serveur pour protéger les données sensibles au repos dans OSS. Pour plus d'informations, consultez Chiffrer les volumes ossfs 1.0.

  • Pour les questions fréquemment posées sur ossfs et OSS, consultez ossfs 1.0 (par défaut) et FAQ sur les volumes ossfs 1.0.

  • Activez la surveillance du stockage des conteneurs et configurez des alertes pour détecter rapidement les anomalies de volume ou les goulots d'étranglement des performances.

  • ossfs 1.0 offre une meilleure cohérence des données pour les écritures aléatoires et simultanées que ossfs 2.0. Cependant, ossfs 2.0 offre de meilleures performances pour les lectures et écritures séquentielles.