Drivers CSI (Container Storage Interface) no Serviço Kubernetes do Azure (AKS)
A Interface de Armazenamento de Contentores (CSI) é uma norma para expor sistemas de blocos e armazenamento de ficheiros arbitrários a cargas de trabalho em contentores no Kubernetes. Ao adotar e usar o CSI, o Serviço Kubernetes do Azure (AKS) pode escrever, implantar e iterar plug-ins para expor sistemas de armazenamento novos ou melhorar os existentes no Kubernetes sem precisar tocar no código principal do Kubernetes e aguardar seus ciclos de lançamento.
O suporte ao driver de armazenamento CSI no AKS permite que você use nativamente:
- Os Discos do Azure podem ser usados para criar um recurso de DataDisk do Kubernetes. Os discos podem usar o Armazenamento Premium do Azure, apoiado por SSDs de alto desempenho, ou o Armazenamento Padrão do Azure, apoiado por HDDs regulares ou SSDs Padrão. Para a maioria das cargas de trabalho de produção e desenvolvimento, use o Armazenamento Premium. Os Discos do Azure são montados como ReadWriteOnce e só estão disponíveis para um nó no AKS. Para volumes de armazenamento que podem ser acessados por vários nós simultaneamente, use os Arquivos do Azure.
- Os Arquivos do Azure podem ser usados para montar um compartilhamento SMB 3.0/3.1 apoiado por uma conta de armazenamento do Azure em pods. Com os Arquivos do Azure, você pode compartilhar dados entre vários nós e pods. Os Arquivos do Azure podem usar o armazenamento padrão do Azure apoiado por HDDs regulares ou o armazenamento Premium do Azure apoiado por SSDs de alto desempenho.
- O armazenamento de Blob do Azure pode ser usado para montar o armazenamento de Blob (ou armazenamento de objetos) como um sistema de arquivos em um contêiner ou pod. O uso do armazenamento de Blob permite que seu cluster ofereça suporte a aplicativos que funcionam com grandes conjuntos de dados não estruturados, como dados de arquivos de log, imagens ou documentos, HPC e outros. Além disso, se você ingerir dados no armazenamento do Azure Data Lake, poderá montá-los e usá-los diretamente no AKS sem configurar outro sistema de arquivos provisório.
Gorjeta
Se você quiser uma solução totalmente gerenciada para acesso de nível de bloco aos dados, considere usar o Armazenamento de Contêiner do Azure em vez de drivers CSI. O Armazenamento de Contêineres do Azure integra-se ao Kubernetes, permitindo o provisionamento dinâmico e automático de volumes persistentes. O Armazenamento de Contêiner do Azure dá suporte a Discos do Azure, Discos Efémeros e SAN Elástica do Azure (visualização) como armazenamento de backup, oferecendo flexibilidade e escalabilidade para aplicativos com monitoração de estado executados em clusters Kubernetes.
Pré-requisitos
- Você precisa da CLI do Azure versão 2.42 ou posterior instalada e configurada. Executar
az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - Se o driver de armazenamento CSI de código aberto estiver instalado em seu cluster, desinstale-o antes de habilitar o driver CSI de armazenamento do Azure.
- Para impor a definição de política do Azure para AKS, os clusters Kubernetes devem usar o driver StorageClass da Interface de Armazenamento de Contêiner (CSI), o complemento de Política do Azure precisa ser habilitado em clusters novos e existentes. Para um cluster existente, revise a Política do Azure do Learn para Kubernetes para habilitá-lo.
Cenários suportados pela encriptação de disco
Os drivers de armazenamento CSI suportam os seguintes cenários:
- Discos gerenciados criptografados com chaves gerenciadas pelo cliente usando os Cofres de Chaves do Azure armazenados em um locatário diferente do Microsoft Entra.
- Criptografe seus discos de Armazenamento do Azure hospedando o sistema operacional AKS e dados de aplicativos com chaves gerenciadas pelo cliente.
Habilitar drivers de armazenamento CSI em um cluster existente
Para habilitar os drivers de armazenamento CSI em um novo cluster, inclua um dos seguintes parâmetros, dependendo do sistema de armazenamento:
--enable-disk-driver
permite que você habilite o driver CSI do Azure Disks.--enable-file-driver
permite que você habilite o driver CSI dos Arquivos do Azure.--enable-blob-driver
permite habilitar o driver CSI de armazenamento de Blob do Azure.--enable-snapshot-controller
Permite ativar o controlador de instantâneo.
az aks update --name myAKSCluster --resource-group myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller
Pode levar vários minutos para concluir esta ação. Quando estiver concluído, você verá na saída o status de ativação do driver no cluster. O exemplo a seguir é semelhante à seção que indica os resultados ao habilitar o driver CSI de armazenamento de Blob:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Desabilitar drivers de armazenamento CSI em um cluster novo ou existente
Para desabilitar os drivers de armazenamento CSI em um novo cluster, inclua um dos seguintes parâmetros, dependendo do sistema de armazenamento:
--disable-disk-driver
permite desabilitar o driver CSI do Azure Disks.--disable-file-driver
permite que você desabilite o driver CSI dos Arquivos do Azure.--disable-blob-driver
permite desabilitar o driver CSI de armazenamento de Blob do Azure.--disable-snapshot-controller
Permite desativar o controlador de instantâneo.
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller \
--generate-ssh-keys
Para desabilitar os drivers de armazenamento CSI em um cluster existente, use um dos parâmetros listados anteriormente, dependendo do sistema de armazenamento:
az aks update \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller
Nota
Recomendamos excluir o objeto PersistentVolumeClaim correspondente em vez do objeto PersistentVolume ao excluir um volume CSI. O provisionador externo no driver CSI reagirá à exclusão do PersistentVolumeClaim e, com base em sua política de recuperação, emitirá a chamada DeleteVolume contra os comandos do driver de volume CSI para excluir o volume. O objeto PersistentVolume é excluído.
Migrar classes de armazenamento em árvore personalizadas para CSI
A partir da versão 1.26 do Kubernetes, os tipos de volume persistente na árvore kubernetes.io/azure-disk e kubernetes.io/azure-file foram preteridos e não serão mais suportados. Os drivers na árvore referem-se aos drivers de armazenamento que fazem parte do código principal do Kubernetes em oposição aos drivers CSI, que são plug-ins.
A remoção desses drivers após sua descontinuação não é planejada, no entanto, você deve migrar para os drivers CSI correspondentes disk.csi.azure.com e file.csi.azure.com. Para revisar as opções de migração para suas classes de armazenamento e atualizar seu cluster para usar os Discos do Azure e os drivers CSI dos Arquivos do Azure, consulte Migrar de drivers na árvore para drivers CSI.
Se você criou classes de armazenamento de driver na árvore, essas classes de armazenamento continuarão a funcionar desde que a migração CSI é ativada após a atualização do cluster para 1.21.x. Se você quiser usar os recursos CSI, precisará executar a migração.
Próximos passos
- Para usar o driver CSI para discos do Azure, consulte Usar discos do Azure com drivers CSI.
- Para usar o driver CSI para Arquivos do Azure, consulte Usar arquivos do Azure com drivers CSI.
- Para usar o driver CSI para armazenamento de Blob do Azure, consulte Usar o armazenamento de Blob do Azure com drivers CSI
- Para obter mais informações sobre práticas recomendadas de armazenamento, consulte Práticas recomendadas para armazenamento e backups no Serviço Kubernetes do Azure.
- Para obter mais informações sobre a migração CSI, consulte Kubernetes in-tree to CSI Volume Migration.
Azure Kubernetes Service