Container Storage Interface (CSI)

Container Storage Interface (CSI) ist jetzt in einer Betaversion in Kubernetes v1.10 verfügbar. Mit der Weiterentwicklung auf die Betaversion ist CSI nun standardmäßig aktiviert. Weitere Informationen zur Implementierung der CSI-Betaversion in Kubernetes finden Sie im Abschnitt Container Storage Interface (CSI) for Kubernetes Goes Beta Wird auf einer neuen Registerkarte geöffnet.

CSI konfigurieren

Die meisten CSI-Plug-ins setzen voraus, dass das Flag --allow-privileged=true für die Binärdatei des API-Servers und die 'kubelet'-Binärdateien gesetzt ist. Dieses Flag ist in IBM Cloud Private standardmäßig aktiviert. Bei einer IBM Cloud Private-Umgebung können Sie CSI Volume in einem Kubernetes-Pod verwenden, ohne eine zusätzliche Konfiguration vornehmen zu müssen.

Beispiel: CSI-NFS-Treiber in IBM Cloud Private bereitstellen

Die Beispieldateien, die in dieser Beispielbereitstellung verwendet werden, sind über das Kubernetes-GitHub-Repository verfügbar. Weitere Informationen hierzu finden Sie unter kubernetes-csi/drivers Wird auf einer neuen Registerkarte geöffnet.

  1. Installieren Sie NFS. Weitere Informationen zum Einrichten von NFS finden Sie unter der Überschrift Voraussetzungen im Abschnitt zum Erstellen eines NFS-PersistentVolume.
  2. Klonen Sie das Repository kubernetes-csi/drivers Wird auf einer neuen Registerkarte geöffnet.

  3. Wechseln Sie in das Verzeichnis nfs.

    cd drivers/pkg/nfs
    
  4. Erstellen Sie die Bereitstellung.

     kubectl create -f ./deploy/kubernetes/
    

    Die Ausgabe wird wie folgt angezeigt:

     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. Stellen Sie einen Pod bereit, indem Sie den erstellten CSI-Datenträger verwenden.

    1. Lokalisieren Sie den NFS-Server.

       showmount -e
      

      Die Ausgabe wird wie folgt angezeigt:

       Export list for nfsserver:
       /nfs *
      
    2. Bearbeiten Sie die Datei examples/kubernetes/nginx.yaml. Aktualisieren Sie die Parameter server und share so, dass sie Ihren Systemeinstellungen entsprechen.

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

      Die Ausgabe wird wie folgt angezeigt:

         csi:
           driver: csi-nfsplugin
           volumeHandle: data-id
           volumeAttributes:
             server: 10.10.25.7
             share: /nfs
       ---
      
    3. Erstellen Sie einen Pod unter Verwendung des NFS-Treibers.

       kubectl create -f examples/kubernetes/nginx.yaml
      

      Die Ausgabe wird wie folgt angezeigt:

       persistentvolume "data-nfsplugin" created
       persistentvolumeclaim "data-nfsplugin" created
       pod "nginx" created
      
  6. Überprüfen Sie den Mountpunkt.

    1. Greifen Sie auf den NGINX-Container zu

       kubectl exec -it nginx sh
      
    2. Wechseln Sie in das Verzeichnis /var/www.

       cd /var/www
      
    3. Erstellen Sie eine Datei.

       touch test
      
    4. Listen Sie die Datei am Mountpunkt auf.

      ls
      

      Die Ausgabe wird wie folgt angezeigt:

      test
      
  7. Überprüfen Sie den NFS-Server.

    1. Suchen Sie den Server.

      hostname
      

      Die Ausgabe wird wie folgt angezeigt:

      nfsserver
      
    2. Listen Sie die Dateien auf dem Server auf.

      ls /nfs
      

      Die Ausgabe wird wie folgt angezeigt:

      test