Usar volume persistente em um cluster do AKS no Azure Stack HCI

Aplica-se a: Azure Stack HCI, versões 21H2 e 20H2; datacenter do Windows server 2022, Windows server 2019 datacenter

Um volume persistente representa uma parte do armazenamento que foi provisionada para uso com pods do Kubernetes. Um volume persistente pode ser usado por um ou mais pods e destina-se ao armazenamento de longo prazo. Também depende do ciclo de vida do Pod ou do nó. embora você possa provisionar um PVC para nós Windows e Linux, nesta seção, você verá como criar um volume persistente e como usar esse volume em seu aplicativo Windows. Para obter mais informações, consulte volumes persistentes em kubernetes.

Antes de começar

Veja o que você precisa para começar:

Criar uma declaração de volume persistente

Uma declaração de volume persistente é usada para provisionar automaticamente o armazenamento com base em uma classe de armazenamento. Para criar uma declaração de volume, primeiro crie um arquivo chamado pvc-akshci-csi.yaml e copie na seguinte definição de YAML. A declaração solicita um disco com 10 GB de tamanho com acesso ReadWriteOnce . A classe de armazenamento padrão é especificada como a classe de armazenamento (vhdx).  

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

Crie o volume executando os seguintes comandos em uma sessão administrativa do PowerShell em um dos servidores no cluster Azure Stack HCI (usando um método como Enter-PSSession ou área de trabalho remota para se conectar ao servidor):

kubectl create -f pvc-akshci-csi.yaml 

A saída a seguir mostrará que a declaração de volume persistente foi criada com êxito:

Saída:

persistentvolumeclaim/pvc-akshci-csi created

Usar volume persistente

Para usar um volume persistente, crie um arquivo chamado winwebserver. YAML e copie na seguinte definição de YAML. Em seguida, você criará um pod com acesso à declaração de volume persistente e vhdx.

Na definição de YAML abaixo, mountPath é o caminho para montar um volume dentro de um contêiner. Após uma criação de Pod bem-sucedida, você verá o subdiretório mnt criado em C:\ e o subdiretório akshciscsi criado dentro de 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 

Para criar um pod com a definição de YAML acima, execute:

kubectl create -f winwebserver.yaml 

Para verificar se o Pod está em execução, execute o comando a seguir. Aguarde alguns minutos até que o Pod esteja em um estado de execução, já que a extração da imagem leva tempo. 

kubectl get pods -o wide 

Quando o Pod estiver em execução, exiba o status do pod executando o seguinte comando:

kubectl.exe describe pod %podName% 

Para verificar se o volume foi montado no pod, execute o seguinte comando:

kubectl exec -it %podname% cmd.exe 

Excluir uma declaração de volume persistente

Antes de excluir uma declaração de volume persistente, você deve excluir a implantação do aplicativo executando:

kubectl delete deployments win-webserver

Em seguida, você pode excluir uma declaração de volume persistente executando:

kubectl delete PersistentVolumeClaim pvc-akshci-csi

Próximas etapas