Usare un volume permanente in un AKS in Azure Stack cluster HCIUse persistent volume in an AKS on Azure Stack HCI cluster

Si applica a: AKS in Azure Stack HCI, Runtime AKS in Windows Server 2019 DatacenterApplies to: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 Datacenter

Un volume permanente rappresenta una parte di risorsa di archiviazione di cui è stato eseguito il provisioning per l'uso con pod Kubernetes.A persistent volume represents a piece of storage that has been provisioned for use with Kubernetes pods. Un volume permanente può essere usato da uno o più POD ed è destinato all'archiviazione a lungo termine.A persistent volume can be used by one or more pods and is meant for long-term storage. È anche indipendente dal ciclo di vita di pod o nodi.It's also independent of pod or node lifecycle. Sebbene sia possibile effettuare il provisioning di un PVC per i nodi Windows e Linux, in questa sezione verrà illustrato come creare un volume permanente e come utilizzare questo volume nell'applicazione Windows.While you can provision a PVC for both Windows and Linux nodes, in this section, you'll see how to create a persistent volume and how to use this volume in your Windows application. Per ulteriori informazioni, vedere volumi permanenti in Kubernetes.For more information, see Persistent volumes in Kubernetes.

Prima di iniziareBefore you begin

Ecco gli elementi necessari per iniziare:Here's what you need to get started:

  • Un cluster Kubernetes con almeno un nodo del ruolo di lavoro Windows.A Kubernetes cluster with at least one Windows worker node.
  • Un file kubeconfig per accedere al cluster Kubernetes.A kubeconfig file to access the Kubernetes cluster.

Creare un'attestazione di volume permanenteCreate a persistent volume claim

Per eseguire automaticamente il provisioning dello spazio di archiviazione in base a una classe di archiviazione, viene utilizzata un'attestazioneA persistent volume claim is used to automatically provision storage based on a storage class. Per creare un'attestazione volume, creare innanzitutto un file denominato pvc-akshci-csi.yaml e copiarlo nella definizione YAML seguente.To create a volume claim, first create a file named pvc-akshci-csi.yaml and copy in the following YAML definition. L'attestazione richiede un disco di dimensioni di 10 GB con accesso a ReadWriteOnce   .The claim requests a disk that is 10 GB in size with ReadWriteOnce access. La default   classe di archiviazione predefinita viene specificata come classe di archiviazione (VHDX).The default storage class is specified as the storage class (vhdx).

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc-akshci-csi
spec:
 accessModes:
 - ReadWriteOnce
 resources:
  requests:
   storage: 10Gi

Creare il volume eseguendo i comandi seguenti in una sessione di PowerShell amministrativa in uno dei server nel cluster Azure Stack HCI (usando un metodo come Enter-PSSession o desktop remoto per la connessione al server):Create the volume by running the following commands in an administrative PowerShell session on one of the servers in the Azure Stack HCI cluster (using a method such as Enter-PSSession or Remote Desktop to connect to the server):

kubectl create -f pvc-akshci-csi.yaml 

L'output seguente indicherà che l'attestazione del volume permanente è stata creata correttamente:The following output will show that your persistent volume claim has been created successfully:

Output:Output:

persistentvolumeclaim/pvc-akshci-csi created

USA volume permanenteUse persistent volume

Per usare un volume permanente, creare un file denominato WinWebServer. YAML e copiarlo nella definizione YAML seguente.To use a persistent volume, create a file named winwebserver.yaml and copy in the following YAML definition. Si creerà quindi un pod con accesso al volume Claim permanente e a VHDX.You will then create a pod with access to the persistent volume claim and vhdx.

Nella definizione YAML riportata di seguito, mountPath è il percorso per montare un volume all'interno di un contenitore.In the yaml definition below, mountPath is the path to mount a volume inside a container. Al termine della creazione di un pod, viene visualizzata la sottodirectory mnt creata in C \ : e la sottodirectory akshciscsi creata all'interno di mnt.After a successful pod creation, you will see the subdirectory mnt created in C:\ and the subdirectory akshciscsi created inside mnt.

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  labels: 
    app: win-webserver 
  name: win-webserver 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: win-webserver 
  template: 
    metadata: 
      labels: 
        app: win-webserver 
      name: win-webserver 
    spec: 
     containers: 
      - name: windowswebserver 
        image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 
        ports:  
          - containerPort: 80    
        volumeMounts: 
            - name: akshciscsi 
              mountPath: "/mnt/akshciscsi" 
     volumes: 
        - name: akshciscsi 
          persistentVolumeClaim: 
            claimName:  pvc-akshci-csi 
     nodeSelector: 
      kubernetes.io/os: windows 

Per creare un pod con la definizione YAML precedente, eseguire:To create a pod with the above yaml definition, run:

kubectl create -f winwebserver.yaml 

Per assicurarsi che il POD sia in esecuzione, eseguire il comando seguente.To make sure the pod is running, run the following command. Attendere alcuni minuti prima che il Pod si trovi nello stato in esecuzione, perché il pull dell'immagine richiede tempo.Wait a few minutes until the pod is in a running state, since pulling the image takes time.

kubectl get pods -o wide 

Quando il Pod è in esecuzione, visualizzare lo stato del Pod eseguendo il comando seguente:Once your pod is running, view the pod status by running the following command:

kubectl.exe describe pod %podName% 

Per verificare che il volume sia stato montato nel pod, eseguire il comando seguente:To verify your volume has been mounted in the pod, run the following command:

kubectl exec -it %podname% cmd.exe 

Eliminare un'attestazione di volume permanenteDelete a persistent volume claim

Prima di eliminare un'attestazione di volume permanente, è necessario eliminare la distribuzione dell'app eseguendo:Before deleting a persistent volume claim, you must delete the app deployment by running:

kubectl delete deployments win-webserver

È quindi possibile eliminare un'attestazione di volume permanente eseguendo:You can then delete a persistent volume claim by running:

kubectl delete PersistentVolumeClaim pvc-akshci-csi

Passaggi successiviNext steps