Interface CSI (Container Storage Interface)

L'interface CSI (Container Storage Interface) est maintenant disponible en version bêta dans Kubernetes v1.10. Du fait de ce nouveau statut, CSI est désormais activé par défaut. Pour plus d'informations sur l'implémentation de la version bêta de CSI dans Kubernetes, voir Container Storage Interface (CSI) for Kubernetes Goes Beta S'ouvre dans un nouvel onglet.

Configuration de CSI

La plupart des plug-ins CSI nécessitent la définition de l'indicateur --allow-privileged=true sur le fichier binaire du serveur d'API et sur les fichiers binaires kubelet. Cet indicateur est activé par défaut dans IBM Cloud Private. Pour un environnement IBM Cloud Private, vous pouvez utiliser un volume CSI dans un pod Kubernetes sans avoir besoin de définir une configuration supplémentaire.

Exemple : déploiement d'un pilote CSI NFS dans IBM Cloud Private

Les fichiers exemple utilisés dans ce déploiement exemple sont disponibles à partir du référentiel Kubernetes GitHub. Voir kubernetes-csi/drivers S'ouvre dans un nouvel onglet.

  1. Installez NFS. Pour plus d'informations sur la configuration de NFS, voir la section Prérequis dans la rubrique Création d'un stockage PersistentVolume NFS.
  2. Clonez le référentiel kubernetes-csi/drivers S'ouvre dans un nouvel onglet.

  3. Accédez au répertoire nfs.

    cd drivers/pkg/nfs
    
  4. Créez le déploiement.

     kubectl create -f ./deploy/kubernetes/
    

    La sortie ressemble au code ci-après :

     service "csi-attacher-nfsplugin" created
     statefulset.apps "csi-attacher-nfsplugin" created
     serviceaccount "csi-attacher" created
     clusterrole.rbac.authorization.k8s.io "external-attacher-runner" created
     clusterrolebinding.rbac.authorization.k8s.io "csi-attacher-role" created
     daemonset.apps "csi-nodeplugin-nfsplugin" created
     serviceaccount "csi-nodeplugin" created
     clusterrole.rbac.authorization.k8s.io "csi-nodeplugin" created
     clusterrolebinding.rbac.authorization.k8s.io "csi-nodeplugin" created
    
  5. Déployez un pod en utilisant le volume CSI créé.

    1. Localisez le serveur NFS.

       showmount -e
      

      La sortie ressemble au code ci-après :

       Export list for nfsserver:
       /nfs *
      
    2. Editez le fichier examples/kubernetes/nginx.yaml. Mettez à jour les paramètres server et share pour qu'ils correspondent à vos paramètres système.

       cat examples/kubernetes/nginx.yaml | grep csi -A 5
      

      La sortie ressemble au code ci-après :

         csi:
           driver: csi-nfsplugin
           volumeHandle: data-id
           volumeAttributes:
             server: 10.10.25.7
             share: /nfs
       ---
      
    3. Créez un pod en utilisant le pilote NFS.

       kubectl create -f examples/kubernetes/nginx.yaml
      

      La sortie ressemble au code ci-après :

       persistentvolume "data-nfsplugin" created
       persistentvolumeclaim "data-nfsplugin" created
       pod "nginx" created
      
  6. Vérifiez le point de montage.

    1. Accédez au conteneur nginx.

       kubectl exec -it nginx sh
      
    2. Accédez au répertoire /var/www.

       cd /var/www
      
    3. Créez un fichier.

       touch test
      
    4. Listez le fichier sur le point de montage.

      ls
      

      La sortie ressemble au code ci-après :

      test
      
  7. Vérifiez le serveur de montage.

    1. Localisez le serveur.

      hostname
      

      La sortie ressemble au code ci-après :

      nfsserver
      
    2. Répertoriez les fichiers sur le serveur.

      ls /nfs
      

      La sortie ressemble au code ci-après :

      test