Armazenamento de contêiner do Windows com o Serviço 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 Serviço Kubernetes do Azure (AKS) simplifica a implantação de um cluster Kubernetes gerenciado no Azure descarregando a sobrecarga operacional para o Azure. Como um serviço Kubernetes hospedado, o Azure lida com tarefas críticas, como monitoramento e manutenção de integridade.
Quando você cria um cluster AKS, um plano de controle é criado e configurado automaticamente. Este plano de controlo é proporcionado sem custos como um recurso do Azure gerido abstraído do utilizador. Você paga e gerencia apenas os nós conectados ao cluster 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 AKS, você especifica o número e o tamanho dos nós, e o AKS implanta e configura o plano de controle e os nós do Kubernetes.
O diagrama a seguir mostra a arquitetura de um cluster AKS.
Os nós AKS são executados em máquinas virtuais (VMs) 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 é 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 enquanto fornece desvantagens, como provisionamento de nó mais lento e latência de leitura/gravação mais alta.
O AKS, por outro lado, usa discos efêmeros do sistema operacional. Esses discos são armazenados somente na máquina host, assim como um disco temporário. Com essa configuração, você obtém menor latência de leitura/gravação, juntamente com escalonamento de nó mais rápido e atualizações de cluster.
Armazenamento por volume no AKS
No AKS, os volumes tradicionais são criados como recursos do Kubernetes apoiados pelo Armazenamento do Azure. Você pode criar manualmente volumes de dados para serem atribuídos a pods diretamente ou fazer com que o Kubernetes os crie automaticamente. Para associar esses volumes ao Armazenamento do Azure, o AKS usa a CSI (Interface de Armazenamento de Contêiner).
O CSI é um padrão para expor sistemas arbitrários de armazenamento de blocos e arquivos a cargas de trabalho em contêineres 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 (Unidades de Disco Rígido) 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 (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 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.
A partir da versão 1.21 do Kubernetes, o AKS usa apenas drivers CSI por padrão e a migração CSI está habilitada. Embora os volumes persistentes existentes na árvore continuem a funcionar, a partir da versão 1.26, o AKS não suportará mais volumes criados usando driver na árvore e armazenamento provisionado para arquivos e disco.
Volumes persistentes
Um volume persistente (PV) é 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 pelo 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 estiver agendado e solicitar armazenamento indisponível no momento, o Kubernetes poderá criar o disco do Azure subjacente ou o armazenamento de arquivos e anexá-lo ao pod. O provisionamento dinâmico usa a StorageClass
para identificar que tipo de armazenamento do Azure precisa ser criado.
Classes de armazenamento no AKS
Para definir diferentes níveis de armazenamento, como Premium e Standard, você pode criar um StorageClass. O StorageClass também define a reclaimPolicy. Quando você exclui o volume persistente, a 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 extra StorageClasses
:
Permissão | Razão |
---|---|
Gerenciado-CSI | Utiliza o armazenamento localmente redundante (LRS) do Azure StandardSSD para criar um Managed Disk. A política de recuperação garante que o Disco do Azure subjacente seja excluído quando o volume persistente que ele usa for excluído. A classe de armazenamento também configura os volumes persistentes para serem expansíveis, você só precisa editar a declaração de volume persistente com o novo tamanho. |
gerenciado-CSI-Premium | Usa o LRS (armazenamento localmente redundante) Premium do Azure para criar um Disco Gerenciado. A política de recuperação novamente garante que o Disco do Azure subjacente seja excluído quando o volume persistente que o usou for excluído. Da mesma forma, essa classe de armazenamento permite que volumes persistentes sejam expandidos. |
AzureFile-CSI | Usa o armazenamento padrão do Azure para criar um compartilhamento de arquivos do Azure. A política de recuperação garante que o compartilhamento de arquivos subjacente do Azure seja excluído quando o volume persistente que o usou for excluído. |
azurefile-csi-premium | Usa o armazenamento Premium do Azure para criar um compartilhamento de arquivos do Azure. A política de recuperação garante que o compartilhamento de arquivos subjacente do Azure seja excluído quando o volume persistente que o usou for excluído. |
azureblob-nfs-premium | Usa o armazenamento Premium do Azure para criar um contêiner de armazenamento de Blob do Azure e se conecta usando o protocolo NFS (Network File System) v3. A política de recuperação garante que o contêiner de armazenamento de Blob do Azure subjacente seja excluído quando o volume persistente que o usou for excluído. |
azureblob-fuse-premium | Usa o armazenamento Premium do Azure para criar um contêiner de armazenamento de Blob do Azure e conectar-se usando BlobFuse. A política de recuperação garante que o contêiner de armazenamento de Blob do Azure subjacente seja excluído quando o volume persistente que o usou for excluído. |
A menos que você especifique um StorageClass para um volume persistente, o StorageClass padrão é usado. 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
.
Afirmações de volumes persistentes
A 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 do Azure subjacente se nenhum recurso existente puder atender à declaração com base no .StorageClass
A definição do pod inclui a montagem do volume uma vez que o volume tenha sido conectado ao pod.
O diagrama a seguir mostra como um PVC funciona dentro de um cluster AKS: