Usar o driver da CSI (Interface de Armazenamento de Contêiner) do Armazenamento de Blobs do Azure
O driver da CSI (Interface de Armazenamento de Contêiner) do Armazenamento de Blobs do Azure é um driver em conformidade com a especificação CSI usado pelo AKS (Serviço de Kubernetes do Azure) para gerenciar o ciclo de vida do Armazenamento de Blobs do Azure. A CSI é um padrão para expor sistemas de blocos e de armazenamento de arquivos arbitrários a cargas de trabalho em contêineres no Kubernetes.
Ao adotar e usar a CSI, o AKS pode escrever, implantar e iterar plug-ins para expor novos sistemas de armazenamento ou aprimorar os existentes no Kubernetes. O uso de drivers CSI no AKS evita ter que tocar no código principal do Kubernetes e aguardar os ciclos de lançamento dele.
Quando você monta o Armazenamento de Blobs do Azure como um sistema de arquivos em um contêiner ou pod, isso permite que você use o armazenamento de blobs com diversos aplicativos que funcionam em grandes quantidades de dados não estruturados. Por exemplo:
- Dados do arquivo de log
- Imagens, documentos e streaming de vídeo ou áudio
- Dados de recuperação de desastre
Os dados no armazenamento de objetos podem ser acessados por aplicativos usando o protocolo BlobFuse ou NFS (Network File System) 3.0. Antes da introdução do driver da CSI do Armazenamento de Blobs do Azure, a única opção era instalar manualmente um driver sem suporte para acessar o Armazenamento de Blobs por meio do aplicativo em execução no AKS. Quando o driver da CSI do Armazenamento de Blobs do Azure está habilitado no AKS, há duas classes de armazenamento internas: azureblob-fuse-premium e azureblob-nfs-premium.
Para criar um cluster do AKS com suporte aos drivers da CSI, confira Drivers da CSI no AKS. Para saber mais sobre as diferenças de acesso entre cada tipo de armazenamento do Azure usando o protocolo NFS, consulte Comparar acesso aos Arquivos do Azure, Armazenamento de Blobs e Azure NetApp Files com o NFS.
Recursos do driver da CSI do Armazenamento de Blobs do Azure
O driver da CSI do Armazenamento de Blobs do Azure dá suporte aos seguintes recursos:
- Protocolo NFS (Network File System) e BlobFuse versão 3.0
Antes de começar
Garanta que tenha a CLI do Azure versão 2.42 ou posterior instalada e configurada. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. Caso instalou a extensãoaks-preview
da CLI do Azure, atualize a extensão para a versão mais recente chamandoaz extension update --name aks-preview
.Execute as etapas neste link se você instalou anteriormente o Driver de código aberto do Armazenamento de Blobs CSI para acessar o Armazenamento de Blobs do Azure do cluster.
Observação
Se o blobfuse-proxy não estiver habilitado durante a instalação do driver de software livre, a desinstalação do driver de software livre interromperá as montagens de blobfuse existentes. No entanto, as montagens NFS permanecerão não afetadas.
Habilitar o driver CSI em um cluster AKS novo ou existente
Usando a CLI do Azure, é possível habilitar o driver CSI do Armazenamento de Blobs em um cluster AKS novo ou existente antes de configurar um volume persistente para uso por pods no cluster.
Para habilitar o driver em um novo cluster, inclua o parâmetro --enable-blob-driver
com o comando az aks create
, conforme mostrado no exemplo a seguir:
az aks create \
--enable-blob-driver \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
Para habilitar o driver em um cluster existente, inclua o parâmetro --enable-blob-driver
com o comando az aks update
, conforme mostrado no exemplo a seguir:
az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Você será solicitado a confirmar que não há um driver CSI de blob de código aberto instalado. Depois de confirmar, pode levar vários minutos para concluir essa ação. Após a conclusão, você deverá ver na saída o status Habilitando o driver no cluster. O exemplo a seguir é semelhante à seção que indica os resultados do comando anterior:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Desabilitar o driver de CSI em um cluster do AKS existente
Usando a CLI do Azure, você pode desabilitar o driver CSI de armazenamento de Blobs em um cluster AKS existente após remover o volume persistente do cluster.
Para desabilitar o driver em um cluster existente, inclua o parâmetro --disable-blob-driver
com o comando az aks update
, conforme mostrado no exemplo a seguir:
az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Usar um volume persistente com o Armazenamento de Blobs do Azure
Um PV (volume persistente) representa um armazenamento provisionado para uso com pods do Kubernetes. Um PV pode ser usado por um ou vários pods e pode ser provisionado estática ou dinamicamente. Se vários pods precisarem de acesso simultâneo ao mesmo volume de armazenamento, use o Armazenamento de Blobs do Azure para se conectar por meio do NFS (Network File System) ou blobfuse. Este artigo mostra como criar dinamicamente um contêiner de armazenamento de blobs do Azure para uso por vários pods em um cluster do AKS.
Para obter mais informações sobre o Kubernetes, veja Opções de armazenamento para aplicativos no AKS.
Criar dinamicamente PVs de armazenamento de blobs do Azure usando as classes de armazenamento internas
Uma classe de armazenamento é usada para definir como um contêiner de Armazenamento de Blobs do Azure é criado. Uma conta de armazenamento é criada automaticamente no grupo de recursos do nó para uso com a classe de armazenamento para reter o contêiner de armazenamento de blobs do Azure. Escolha a seguinte redundância de armazenamento SKU do Azure para skuName:
- Standard_LRS: armazenamento com redundância local
- Premium_LRS: Armazenamento com redundância local Premium
- Standard_ZRS: armazenamento com redundância de zona Standard
- Premium_ZRS: armazenamento com redundância de zona Premium
- Standard_GRS: armazenamento com redundância geográfica
- Standard_RAGRS: armazenamento com redundância geográfica e acesso de leitura padrão (Standard-RAGRS)
Quando você usa drivers da CSI de armazenamento no AKS, há duas outras StorageClasses internas que usam o driver de armazenamento da CSI de Blob do Azure.
A política de recuperação em ambas as classes de armazenamento garante que o armazenamento de blobs subjacente do Azure seja excluído quando o respectivo PV for excluído. As classes de armazenamento também configuram o contêiner para ser expansível por padrão, pois o parâmetro set allowVolumeExpansion
é definido como true.
Observação
Não há suporte para a redução de volumes persistentes.
Use o comando kubectl get sc para ver as classes de armazenamento. A exemplo a seguir mostra as classes de armazenamento azureblob-fuse-premium
e azureblob-nfs-premium
disponíveis dentro de um cluster do AKS:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azureblob-fuse-premium blob.csi.azure.com Delete Immediate true 23h
azureblob-nfs-premium blob.csi.azure.com Delete Immediate true 23h
Para usar essas classes de armazenamento, crie uma PVC e o respectivo pod que a referencie e utilize. Uma PVC é usada para provisionar automaticamente o armazenamento com base em uma classe de armazenamento. Uma PVC pode usar uma das classes de armazenamento criadas previamente ou uma classe de armazenamento definida pelo usuário para criar um contêiner de armazenamento blobs do Azure com a SKU, o tamanho e o protocolo desejados para comunicação. Quando você cria uma definição de pod, a PVC é especificada para solicitar o armazenamento desejado.
Usando um StatefulSet
Um StatefulSet pode ser usado para que um volume de armazenamento persista para sua carga de trabalho. Isso facilita a correspondência de volumes existentes com novos Pods que substituem os que falharam. Os exemplos a seguir demonstram como configurar um StatefulSet para armazenamento de Blobs usando o blobfuse ou o protocolo NFS.
Pré-requisitos
- A identidade do Painel de controle do cluster do AKS (ou seja, o nome do cluster do AKS) é adicionada à função Colaborador na VNet e no grupo de segurança de rede.
Crie um arquivo chamado
azure-blob-nfs-ss.yaml
e copie no YAML a seguir.apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-blob-nfs labels: app: nginx spec: serviceName: statefulset-blob-nfs replicas: 1 template: metadata: labels: app: nginx spec: nodeSelector: "kubernetes.io/os": linux containers: - name: statefulset-blob-nfs image: mcr.microsoft.com/oss/nginx/nginx:1.22 volumeMounts: - name: persistent-storage mountPath: /mnt/blob updateStrategy: type: RollingUpdate selector: matchLabels: app: nginx volumeClaimTemplates: - metadata: name: persistent-storage spec: storageClassName: azureblob-nfs-premium accessModes: ["ReadWriteMany"] resources: requests: storage: 100Gi
Crie StatefulSet com o comando kubectl create:
kubectl create -f azure-blob-nfs-ss.yaml
Próximas etapas
- Para saber como configurar um volume persistente estático ou dinâmico, confira Criar e usar um volume com o Armazenamento de Blobs do Azure.
- Para saber como usar o driver da CSI para Discos do Azure, confira Usar os Discos do Azure com o driver da CSI
- Para saber como usar o driver da CSI para Arquivos do Azure, confira Usar os Arquivos do Azure com o driver da CSI
- Para saber mais sobre melhores práticas de armazenamento, confira Melhores práticas para armazenamento e backups no Serviço de Kubernetes do Azure.
Azure Kubernetes Service