Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- Le tutoriel part du principe que vous disposez déjà d’un cluster Kubernetes avec Arc. Pour connecter un cluster Kubernetes existant à Azure Arc, consultez Connecter un cluster Kubernetes existant à Azure Arc.
- Vous devez avoir déjà installé l’extension Stockage conteneur Azure. Si ce n’est pas le cas, consultez Installer Edge Volumes.
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.