Partager via


Tutoriel : Configurer un volume edge partagé local (préversion)

Dans ce tutoriel, vous allez apprendre à configurer un volume Edge partagé local. Ce type de volume offre un stockage en lecture-écriture multiple, local à votre cluster Kubernetes. Ce type de stockage partagé reste indépendant de l’infrastructure cloud, ce qui le rend idéal pour l’espace de travail, le stockage temporaire et les données persistantes localement non adaptées aux destinations cloud. Il s’agit également d’une bonne destination pour les données qui sont activement utilisées, modifiées ou traitées en périphérie.

Le didacticiel couvre les tâches suivantes :

  • Créer un PVC de volume Edge partagé local
  • Créer un exemple de déploiement
  • Se connecter à votre pod
  • Écrire un exemple de fichier

Prerequisites

Créer un PVC de volume Edge partagé local

Cette section crée une revendication de volume persistant, ou PVC, pour votre volume partagé localement. Vous spécifiez la quantité d’espace que vous souhaitez provisionner pour ce volume.

Créez un fichier nommé localSharedPVC.yaml avec le contenu suivant. Remplacez la valeur metadata.name par un nom pour votre revendication de volume persistant. Ensuite, à la ligne 8, spécifiez l’espace de noms qui correspond à votre pod consommateur prévu. La valeur metadata.name est référencée à la dernière ligne de deploymentExample.yaml lors de l'étape suivante. Le spec.resources.requests.storage paramètre détermine la taille du volume persistant. Il s’agit de 2 Go dans cet exemple, mais peut être modifié pour répondre à vos besoins :

Note

Utilisez uniquement des lettres minuscules et des tirets. Pour plus d’informations, consultez la documentation sur le nommage des objets Kubernetes.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  ### Create a name for your PVC ###
  name: <create-a-pvc-name-here>
  ### Use a namespace that matches your intended consuming pod, or "default" ###
  namespace: <intended-consuming-pod-or-default-here>
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: unbacked-sc

Exécutez ensuite cette commande pour appliquer le fichier YAML et créer le PVC :

kubectl apply -f "localSharedPVC.yaml"

Créer un exemple de déploiement ou utiliser votre propre

Si vous disposez déjà d’une application à déployer, vous pouvez l’utiliser ici. Par souci de simplicité et de prise en main, nous incluons ici un exemple de déploiement. Pour créer un déploiement à l’aide de notre exemple de configuration, créez un fichier nommé deploymentExample.yaml avec le contenu suivant. Ajouter des valeurs pour containers.name et volumes.persistentVolumeClaim.claimName. Le paramètre spec.replicas détermine le nombre de pods de réplica à créer. Il s’agit de 2 dans cet exemple, mais peut être modifié pour répondre à vos besoins :

Note

Utilisez uniquement des lettres minuscules et des tirets. Pour plus d’informations, consultez la documentation sur le nommage des objets Kubernetes.

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: localsharededgevol-deployment ### This will need to be unique for every volume you choose to create 

spec: 
  replicas: 2 
  selector: 
    matchLabels: 
      name: wyvern-testclientdeployment 
  template: 
    metadata: 
      name: wyvern-testclientdeployment 
      labels: 
        name: wyvern-testclientdeployment 
    spec: 
      affinity: 
        podAntiAffinity: 
          requiredDuringSchedulingIgnoredDuringExecution: 
            - labelSelector: 
                matchExpressions: 
                  - key: app 
                    operator: In 
                    values: 
                      - wyvern-testclientdeployment 
              topologyKey: kubernetes.io/hostname 
      containers: 

        ### Specify the container in which to launch the busy box. ### 
        - name: <create-a-container-name-here> 
          image: 'mcr.microsoft.com/mirror/docker/library/busybox:1.35' 
          command: 
            - "/bin/sh" 
            - "-c" 
            - "dd if=/dev/urandom of=/data/acsalocalsharedtestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" 
          volumeMounts: 

            ### This name must match the following volumes::name attribute ### 
            - name: wyvern-volume 

              ### This mountPath is where the PVC will be attached to the pod's filesystem ### 
              mountPath: /data 
      volumes: 

        ### User-defined name that is used to link the volumeMounts. This name must match volumeMounts::name as previously specified. ### 
        - name: wyvern-volume 
          persistentVolumeClaim: 

            ### This claimName must refer to your PVC metadata::name from lsevPVC.yaml. 
            claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>

Exécutez ensuite cette commande pour appliquer le fichier YAML et créer le déploiement :

kubectl apply -f "deploymentExample.yaml"

Se connecter à votre pod

Exécutez kubectl get pods pour rechercher le nom de votre pod. Copiez ce nom, car il est nécessaire à l’étape suivante.

Note

Étant donné que spec::replicas à partir deploymentExample.yaml a été spécifié comme 2, deux pods apparaissent en utilisant kubectl get pods. Vous pouvez utiliser l’un ou l’autre des noms de pods pour l’étape suivante.

Exécutez la commande suivante et remplacez POD_NAME_HERE par votre valeur copiée de l’étape précédente :

kubectl exec -it POD_NAME_HERE -- sh 

Remplacez les répertoires par le chemin de montage /data, comme indiqué dans deploymentExample.yaml.

Écrire un exemple de fichier

Maintenant que vous êtes connecté au pod et dans le chemin de montage, tous les fichiers que vous écrivez ici apparaissent dans votre volume.

Par exemple, créez un fichier nommé file1.txt et écrivez-le à l’aide echo "Hello World" > file1.txtde .

Vous pouvez maintenant voir que le fichier que vous avez écrit se trouve dans le répertoire.

Étapes suivantes

Une fois ces étapes terminées, commencez à surveiller votre déploiement à l’aide d’Azure Monitor et de Kubernetes Monitoring ou d’une supervision tierce avec Prometheus et Grafana.