Azure File-Freigabe verwenden

GKE on Azure unterstützt die Bereitstellung von Azure Files-Freigaben. Wenn Sie bereits eine Azure-Dateifreigabe zur Verwendung mit GKE on Azure haben, können Sie ein PersistentVolume-Objekt (PV) erstellen und dieses für eine bestimmte PersistentVolumeClaim (PVC) reservieren.

Auf dieser Seite wird erläutert, wie Sie mithilfe eines vorhandenen, mit Daten gefüllten Teils ein PV erstellen und in einem Pod verwenden.

Hinweis

Informationen zum Azure-Speicherkonto speichern

GKE on Azure speichert Informationen für den Zugriff auf Ihr Azure-Speicherkonto in einem Secret. Wenn Sie in Ihrem Cluster kein Secret erstellt haben, müssen Sie eines hinzufügen. Wenn sich dieses Secret in Ihrem Cluster befindet, fahren Sie mit PersistentVolume für eine bereits vorhandene Freigabe erstellen fort.

  1. Kopieren Sie zum Erstellen des Secrets das folgende Manifest in eine Datei mit dem Namen „azure-service-account-key.yaml“.

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-secret-account-key
    type: Opaque
    stringData:
      accountname: STORAGE_ACCOUNT_NAME
      accountkey: STORAGE_ACCOUNT_KEY
    

    Dabei gilt:

    • STORAGE_ACCOUNT_NAME: Name Ihres Azure-Speicherkontos
    • STORAGE_ACCOUNT_KEY: der Schlüssel des Azure-Speicherkontos
  2. Wenden Sie die Datei mit dem kubectl-Tool auf Ihren Cluster an:

    kubectl apply -f azure-service-account-key.yaml
    

PersistentVolume für einen bereits vorhandenen Teil erstellen

Sie importieren eine vorhandene Azure-Dateifreigabe, indem Sie ein neues PV in Ihrem Cluster angeben. So erstellen Sie das PV:

  1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen existing-volume.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: file.csi.azure.com
        readOnly: false
        volumeHandle: VOLUME_ID
    

    Dabei gilt:

    • VOLUME_NAME: ein Name für das Volume
    • VOLUME_CAPACITY: Größe des Volumes. Beispiel: 30Gi Weitere Informationen zum Angeben der Volume-Kapazität in Kubernetes finden Sie unter Bedeutung des Arbeitsspeichers.
    • VOLUME_ID: eine eindeutige ID für das Volume, formatiert als String von RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME#, wobei gilt
    • FILE_SHARE_NAME: der Name der Azure File-Freigabe

    Wenn sich Ihr Speicherkonto in einer anderen Ressourcengruppe als Ihr Cluster befindet, müssen Sie einem Secret, das Ihren Speicherkontoschlüssel enthält, eine Referenz hinzufügen. Fügen Sie im Abschnitt spec.csi Folgendes ein, um die Referenz hinzuzufügen:

    # Optional. Only required if your storageAccount is in a different resource group than the cluster.
        nodeStageSecretRef:
          name: NODE_STAGE_SECRET_NAME
          namespace: NODE_STAGE_SECRET_NAMESPACE
    

    Dabei gilt:

    • NODE_STAGE_SECRET_NAME: der Name des Secrets
    • NODE_STAGE_SECRET_NAMESPACE: der Namespace, der das Secret enthält
  2. Wenden Sie die YAML-Datei auf Ihren Cluster an.

    kubectl apply -f existing-volume.yaml
    
  3. Bestätigen Sie mit kubectl describe pv, dass das PV erstellt wurde.

    kubectl describe pv VOLUME_NAME
    

    Die Ausgabe dieses Befehls enthält den Status des PV.

Volume mit einem PersistentVolumeClaim und einem Pod verwenden

Nachdem Sie das Volume importiert haben, können Sie einen PVC und einen Pod erstellen, der den PVC bereitstellt.

  1. Mit der folgenden YAML-Datei wird ein PVC erstellt und an einen Pod angehängt, auf dem der Nginx-Webserver ausgeführt wird. Kopieren Sie ihn in eine Datei mit dem Namen nginx.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ACCESS_MODE
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: my-pvc
    

    Dabei gilt:

    • STORAGE_CLASS: der Name der StorageClass aus dem zuvor erstellten PersistentVolume. Beispiel: standard-rwo
    • ACCESS_MODE: Zugriffsmodus des Volumes. Für Azure Disk verwenden Sie ReadWriteOnce. Für Azure File verwenden Sie ReadWriteMany.
    • VOLUME_CAPACITY: Größe des Volumes. Beispiel: 30Gi.
  2. Wenden Sie die YAML-Datei auf Ihren Cluster an.

    kubectl apply -f nginx.yaml
    
  3. Prüfen Sie den Status der Nginx-Instanz mit kubectl describe. In der Ausgabe sollte Running als STATUS enthalten sein.

    kubectl describe pod web-server
    
  4. Verwenden Sie den Befehl kubectl delete, um den Pod zu löschen.

    kubectl delete -f nginx.yaml
    

Nächste Schritte