Armazenamento de contêineres do Windows com o Serviço de Kubernetes do Azure
Na unidade anterior, aprendemos como o Kubernetes gerencia e orquestra seus aplicativos baseados em contêiner e seus componentes de armazenamento associados. Também aprendemos sobre a arquitetura de cluster do Kubernetes que consiste em um plano de controle para serviços principais e nós para recursos de aplicativos.
O AKS (Serviço de Kubernetes do Azure) simplifica a implantação de um cluster do Kubernetes gerenciado no Azure, transferindo a sobrecarga operacional para o Azure. Como um serviço Kubernetes hospedado, o Azure lida com as tarefas críticas, como o monitoramento da integridade e a manutenção.
Ao criar um cluster AKS, um plano de controle será criado e configurado automaticamente. Esse painel de controle é oferecido sem custo como um recurso gerenciado do Azure abstraído do usuário. Você paga e gerencia somente os nós anexados ao cluster do AKS.
O diagrama a seguir mostra como o plano de controle que fornece os principais serviços do Kubernetes e a orquestração de cargas de trabalho de aplicativos é gerenciado pelo AKS, enquanto você gerencia os nós que contêm as cargas de trabalho do aplicativo.
Cluster do AKS
Ao implantar um cluster do AKS, você especifica o número e o tamanho dos nós, e o AKS implanta e configura o painel de controle e os nós do Kubernetes.
O diagrama a seguir mostra a arquitetura de um cluster do AKS.
Os nós do AKS são executados em VMs (máquinas virtuais) do Azure. Por padrão, o Azure replica automaticamente o disco do sistema operacional (disco do sistema operacional) de uma VM (Máquina Virtual) para o armazenamento do Azure para evitar a perda de dados quando a VM for realocada para outro host. No entanto, como aprendemos anteriormente, os contêineres não são projetados para que o estado local persista. Portanto, esse comportamento oferece valor limitado, ao mesmo tempo em que fornece desvantagens, como provisionamento de nó mais lento e latência de leitura/gravação mais alta.
O AKS, por outro lado, usa discos de sistema operacional efêmeros. Esses discos são armazenados apenas no computador host, assim como um disco temporário. Essa configuração proporciona menor latência de leitura/gravação, bem como escala de nós e atualizações de cluster mais rápidos.
Armazenamento de volume no AKS
No AKS, os volumes tradicionais são criados como recursos do Kubernetes apoiados pelo Armazenamento do Microsoft Azure. Você pode criar volumes de dados de forma manual para atribuí-los diretamente aos pods ou fazer com que o Kubernetes os crie automaticamente. Para associar esses volumes ao Armazenamento do Microsoft Azure, o AKS usa a CSI (Interface de Armazenamento de Contêiner).
A CSI é um padrão para expor sistemas arbitrários de armazenamento de arquivos e blocos a cargas de trabalho em contêineres no Kubernetes.
Com a adoção e o uso de CSI, o AKS (Serviço de Kubernetes do Azure) pode criar, implantar e iterar plug-ins para expor sistemas de armazenamento novos ou existentes no Kubernetes sem precisar mexer no código principal do Kubernetes e aguardar seus ciclos de lançamento.
O suporte ao driver de armazenamento da CSI no AKS permite que você use nativamente:
- Azure Disks pode ser usado para criar um recurso de Kubernetes DataDisk. Os discos podem usar o Armazenamento Premium do Azure, apoiado por SSDs de alto desempenho ou pelo Armazenamento Standard do Azure, apoiados por HDDs regulares (Unidades de Disco Rígido) ou SSDs Standard. Para a maioria das cargas de trabalho de desenvolvimento e produção, use o Armazenamento Premium. Os Discos do Azure são montados como ReadWriteOnce e só estão disponíveis para um nó um AKS. Para volumes de armazenamento que podem ser acessados simultaneamente por vários nós, use Arquivos do Azure.
- Os Arquivos do Azure podem ser usados para montar um compartilhamento SMB (Server Message Block) 3.0/3.1 apoiado por uma conta de armazenamento do Azure em pods. Com os Arquivos do Azure, você pode compartilhar dados em vários nós e pods. Os Arquivos do Azure podem usar o Armazenamento Standard do Azure, com o suporte de HDs ou o Armazenamento Premium do Azure, com o suporte de SSDs de alto desempenho.
- O Armazenamento de Blobs do Azure pode ser usado para montar o Armazenamento de Blobs (ou armazenamento de objetos) como um sistema de arquivos em um contêiner ou pod. O uso do Armazenamento de Blobs permite que o cluster dê suporte a aplicativos que trabalham com grandes conjuntos de dados não estruturados, como dados de arquivo de log, imagens ou documentos, HPC e outros. Além disso, se você ingerir dados no Azure Data Lake Storage, poderá montá-los e usá-los diretamente no AKS sem configurar outro sistema de arquivos provisório.
Da versão 1.21 do Kubernetes em diante, o AKS usa apenas drivers da CSI por padrão e a migração para CSI está habilitada. Embora os volumes persistentes na árvore continuem funcionando, começando com a versão 1.26, o AKS não dará mais suporte a volumes criados usando o driver na árvore e o armazenamento provisionado para arquivos e disco.
Volumes persistentes
Um volume persistente (VP) é um recurso de armazenamento criado e gerenciado pela API do Kubernetes que pode existir além do tempo de vida de um pod individual. No AKS, você pode usar o Disco do Azure ou os Arquivos do Azure para fornecer o PersistentVolume
. Sua escolha de Discos ou Arquivos para o volume geralmente é determinada pela necessidade de acesso simultâneo aos dados ou ao nível de desempenho necessário.
Um administrador de cluster pode criar estaticamente um PersistentVolume
, ou o volume é criado dinamicamente pelo servidor de API do Kubernetes. Se um pod for agendado e solicitar armazenamento não disponível no momento, o Kubernetes poderá criar o armazenamento subjacente de Arquivo ou Discos do Azure e anexá-lo ao pod. O provisionamento dinâmico usa um StorageClass
para identificar que tipo de armazenamento do Azure precisa ser criado.
Classes de armazenamento no AKS
Para definir diferentes camadas de armazenamento, como Premium e Standard, você pode criar uma StorageClass. O StorageClass também define a reclaimPolicy. Quando você exclui o volume persistente, o reclaimPolicy controla o comportamento do recurso de armazenamento subjacente do Azure. O recurso de armazenamento subjacente pode ser excluído ou mantido para uso com um pod futuro.
Para clusters que usam drivers CSI, o AKS criou o seguinte StorageClasses
extra:
Permissão | Motivo |
---|---|
managed-csi | Usa o LRS (armazenamento com redundância local) StandardSSD do Azure para criar um Disco Gerenciado. A política de recuperação indica que o Disco do Azure subjacente será excluído quando o volume persistente usado for excluído. A classe de armazenamento também configura os volumes persistentes para que sejam expansíveis, você só precisa editar a declaração do volume persistente para incluir o novo tamanho. |
managed-csi-premium | Usa o LRS (armazenamento com redundância local) Premium do Azure para criar um Disco Gerenciado. A política de recuperação novamente garante que o Disco do Azure subjacente é excluído quando o volume persistente que o usa é excluído. Da mesma forma, essa classe de armazenamento permite que volumes persistentes sejam expandidos. |
azurefile-csi | Usa o armazenamento Standard do Azure para criar um Compartilhamento de Arquivo do Azure. A política de recuperação garante que o Compartilhamento de Arquivos do Azure subjacente é excluído quando o volume persistente que o usa é excluído. |
azurefile-csi-premium | Usa o armazenamento Premium do Azure para criar um Compartilhamento de Arquivo do Azure. A política de recuperação garante que o Compartilhamento de Arquivos do Azure subjacente é excluído quando o volume persistente que o usa é excluído. |
azureblob-nfs-premium | Usa o armazenamento Premium do Azure para criar um Contêiner de Armazenamento de Blobs do Azure e se conecta usando o protocolo NFS (Sistema de Arquivos de Rede) v3. A política de recuperação garante que o contêiner de armazenamento de blobs do Azure subjacente seja excluído quando o volume persistente que o usa for excluído. |
azureblob-fuse-premium | Usa o armazenamento Premium do Azure para criar um contêiner de armazenamento de Blobs do Azure e conectar-se usando o BlobFuse. A política de recuperação garante que o contêiner de armazenamento de blobs do Azure subjacente seja excluído quando o volume persistente que o usa for excluído. |
A menos que você especifique uma StorageClass para um volume persistente, a StorageClass padrão será usada. Você deve garantir que os volumes usem o armazenamento apropriado necessário ao solicitar volumes persistentes. A classe padrão será a mesma que managed-csi
.
Declarações de volume persistente
Um PersistentVolumeClaim
solicita armazenamento de um determinado StorageClass
, modo de acesso e tamanho. O servidor de API do Kubernetes pode provisionar dinamicamente o recurso de armazenamento subjacente do Azure se nenhum recurso existente puder atender à declaração com base no StorageClass
definido.
A definição de pod inclui a montagem de volume depois que o volume for conectado no pod.
O diagrama a seguir mostra como um PVC funciona dentro de um cluster AKS: