Montez un système de fichiers Apsara File Storage NAS (NAS) sur un cluster Container Service for Kubernetes (ACK) à l'aide du plug-in FlexVolume. Cette rubrique décrit les méthodes basées sur YAML et sur la console pour créer un volume persistant (PV), puis vous guide dans la création d'une revendication de volume persistant (PVC) et le déploiement d'un pod utilisant le stockage NAS.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Un système de fichiers NAS avec une cible de montage ajoutée. Créez-en un dans la console NAS. La cible de montage et le cluster ACK doivent se trouver dans le même virtual private cloud (VPC).console NAS
FlexVolume mis à niveau vers la dernière version dans votre cluster.
kubectl configuré pour se connecter au cluster. Pour plus de détails, consultez Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster.
Fonctionnement
Le montage d'un système de fichiers NAS sur un cluster ACK s'effectue en trois étapes :
Créez un PV — En tant qu'administrateur de cluster, définissez un PV adossé au système de fichiers NAS. Le PV n'est pas encore associé à une charge de travail.
Créez une PVC — Réclamez le PV. Kubernetes lie la PVC à un PV correspondant en fonction de la classe de stockage, du mode d'accès et de la capacité.
Déployez un pod — Référencez la PVC dans votre Deployment. Le système de fichiers NAS est monté dans le conteneur au chemin spécifié.
Une fois FlexVolume installé dans le cluster, il gère les opérations de montage et de démontage à l'aide du protocole NFS.
Étape 1 : Créer un PV
Créez un PV à l'aide d'un fichier YAML ou de la console ACK.
Option 1 : Fichier YAML
Enregistrez le code suivant sous le nom nas-pv.yaml, puis exécutez kubectl apply -f nas-pv.yaml.
Remplacez <mount-target-domain> par le nom de domaine de votre cible de montage NAS, et <subdirectory> par le chemin d'accès dans le système de fichiers NAS à monter (par exemple, /k8s).
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nas
spec:
capacity:
storage: 5Gi
storageClassName: nas
accessModes:
- ReadWriteMany
flexVolume:
driver: "alicloud/nas"
options:
server: "<mount-target-domain>"
path: "<subdirectory>"
vers: "3"
options: "nolock,tcp,noresvport"
Vérifiez que le PV a été créé et qu'il est dans l'état Available :
kubectl get pv pv-nas
Résultat attendu :
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS AGE
pv-nas 5Gi RWX Retain Available nas 5s
Option 2 : Console ACK
Connectez-vous à la console ACK.
Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible ou sur Details dans la colonne Actions.
Dans le volet de navigation de gauche, choisissez Volumes > Persistent Volumes.
Cliquez sur Create dans le coin supérieur droit.
Dans la boîte de dialogue Create PV, configurez les paramètres décrits dans le tableau suivant.
| Parameter | Description | Required | Default |
|---|---|---|---|
| PV type | Sélectionnez NAS. | Oui | — |
| Volume name | Un nom unique pour le PV au sein du cluster. Par exemple : pv-nas. |
Oui | — |
| Volume plug-in | Sélectionnez Flexvolume. | Oui | — |
| Capacity | La capacité du PV. Elle ne peut pas dépasser la capacité du système de fichiers NAS. | Oui | — |
| Access mode | Le mode d'accès. Les systèmes de fichiers NAS prennent en charge ReadWriteMany, ce qui permet à plusieurs nœuds de lire et d'écrire simultanément. | Oui | ReadWriteMany |
| Mount target domain name | Le nom de domaine de la cible de montage NAS. Consultez Gérer les cibles de montage. | Oui | — |
| Subdirectory | Un sous-répertoire dans le système de fichiers NAS, commençant par /. Si le sous-répertoire n'existe pas, il est créé automatiquement. Laissez vide pour monter le répertoire racine. Pour les systèmes de fichiers Extreme NAS, le chemin doit commencer par /share. |
Non | Répertoire racine |
| Permissions | Droits d'accès sur le répertoire monté, tels que 755, 644 ou 777. Applicable uniquement lors du montage d'un sous-répertoire. Si le répertoire contient un grand nombre de fichiers, évitez de définir ce paramètre pour empêcher la commande chmod de s'exécuter pendant une période prolongée. |
Non | Permissions d'origine |
| chmod (Change Mode) | Modalité d'application des modifications d'autorisations : Non-recursive (affecte uniquement le répertoire monté) ou Recursive (affecte le répertoire monté ainsi que tous les sous-répertoires et fichiers). Pour les versions de FlexVolume antérieures à V1.14.6.15-8d3b7e7-aliyun, les autorisations sont toujours appliquées de manière récursive. Pour la version V1.14.6.15-8d3b7e7-aliyun et les versions ultérieures, utilisez ce paramètre pour contrôler la portée. | Non | — |
| Version | La version du protocole NFS. NFSv3 est recommandé. Les systèmes de fichiers Extreme NAS prennent en charge uniquement NFSv3. | Non | NFSv3 |
| Labels | Libellés à ajouter au PV. | Non | — |
Cliquez sur Create.
Si vous sélectionnez Recursive pour un répertoire monté contenant un grand nombre de fichiers, la commande chmod peut s'exécuter pendant une durée prolongée, ce qui entraîne l'échec de l'opération de montage ou de démontage.
Étape 2 : Créer une PVC
Enregistrez le code suivant sous le nom nas-pvc.yaml, puis exécutez kubectl apply -f nas-pvc.yaml.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
storageClassName: nas
resources:
requests:
storage: 5Gi
Kubernetes lie la PVC au PV pv-nas en fonction de la correspondance entre la classe de stockage, le mode d'accès et la capacité. Vérifiez la liaison :
kubectl get pvc pvc-nas
Résultat attendu :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-nas Bound pv-nas 5Gi RWX nas 5s
Un STATUS indiquant Bound confirme que la PVC est liée au PV.
Étape 3 : Déployer un pod
Enregistrez le code suivant sous le nom nas-pod.yaml, puis exécutez kubectl apply -f nas-pod.yaml.
Le système de fichiers NAS est monté sur /data à l'intérieur du conteneur.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nas-static
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: pvc-nas
mountPath: /data
volumes:
- name: pvc-nas
persistentVolumeClaim:
claimName: pvc-nas
Vérifiez que le pod est en cours d'exécution et que le volume est monté :
kubectl get pods -l app=nginx
Résultat attendu :
NAME READY STATUS RESTARTS AGE
nas-static-xxxxxxxxx-xxxxx 1/1 Running 0 30s
Pour confirmer que le système de fichiers NAS est monté à l'intérieur du conteneur, exécutez :
kubectl exec -it <pod-name> -- df -h | grep /data
La sortie affiche le système de fichiers NAS monté sur /data.