Usar o Armazenamento de contêineres do Azure com o Azure Elastic SAN (versão prévia)
O Armazenamento de Contêineres do Azure é um serviço de gerenciamento de volume, implantação e orquestração baseado em nuvem criado nativamente para contêineres. O Azure Elastic SAN é uma solução totalmente integrada que simplifica a implantação, a escala, o gerenciamento e a configuração de uma SAN, oferecendo funcionalidades de nuvem internas, como alta disponibilidade.
Como uma versão prévia do recurso, você pode configurar o Armazenamento de contêineres do Azure para usar o Azure Elastic SAN. Este artigo aborda como fazer essa configuração. No final deste artigo, você terá um pod que usa o Elastic SAN como armazenamento.
Pré-requisitos
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Este artigo requer a versão mais recente (2.35.0 ou posterior) da CLI do Azure. Consulte Como instalar a CLI do Azure. Se você estiver usando o ambiente Bash no Azure Cloud Shell, a versão mais recente já estará instalada. Se você planeja executar os comandos localmente em vez de no Azure Cloud Shell, certifique-se de executá-los com privilégios administrativos. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Você precisará do cliente de linha de comando do Kubernetes,
kubectl
. Ele já está instalado se você estiver usando o Azure Cloud Shell ou se você puder instalá-lo localmente executando o comandoaz aks install-cli
.Se você ainda não instalou o Armazenamento de Contêiner do Azure, siga as instruções descritas em Usar o Armazenamento de Contêiner do Azure com o Serviço de Kubernetes do Azure.
Verifique se a região de destino tem suporte nas regiões do Armazenamento de Contêineres do Azure.
Verifique se você tem uma função de Proprietário do Armazenamento de Contêiner do Azure ou uma função de Colaborador de Armazenamento de Contêiner do Azure em sua assinatura. Qualquer uma dessas funções concede permissões que permitem que o Armazenamento de contêineres do Azure se comunique com o recurso do Elastic SAN. Para fazer essa alteração, acesse sua página de assinatura no portal do Azure. Selecione Controle de Acesso (IAM) > Adicionar atribuição de função e pesquise "Proprietário do Armazenamento de Contêiner do Azure" ou "Colaborador de Armazenamento de Contêiner do Azure" na guia Funções de trabalho. Selecione Exibir > Atribuições > Adicionar atribuição e adicione sua conta.
Para usar o Armazenamento de contêineres do Azure com o Azure Elastic SAN (versão prévia), seu cluster do AKS deve ter um pool de nós de pelo menos três VMs de uso geral, como standard_d4s_v5 para os nós de cluster, cada uma com um mínimo de quatro vCPUs (CPUs virtuais).
Limitações
Atualmente, os recursos a seguir não são suportados quando você usa o Armazenamento de Contêineres do Azure para implantar e orquestrar um Elastic SAN.
- Instantâneos de volume
- Expansão do pool de armazenamento
Disponibilidade regional
O Armazenamento de Contêineres do Azure só está disponível para um subconjunto de regiões do Azure:
- (Africa) Norte da África do Sul
- (Pacífico Asiático) Leste da Austrália
- (Pacífico Asiático) Leste da Ásia
- (Pacífico Asiático) Leste do Japão
- (Pacífico Asiático) Coreia Central
- (Pacífico Asiático) Sudeste da Ásia
- (Pacífico Asiático) Índia Central
- (Europa) França Central
- (Europa) Centro-Oeste da Alemanha
- (Europa) Norte da Europa
- (Europa) Oeste da Europa
- (Europa) Sul do Reino Unido
- (Europa) Suécia Central
- (Europa) Norte da Suíça
- (Oriente Médio) Norte dos EAU
- (América do Norte) Leste dos EUA
- (América do Norte) Leste dos EUA 2
- (América do Norte) Oeste dos EUA
- (América do Norte) Oeste dos EUA 2
- (América do Norte) Oeste dos EUA 3
- (América do Norte) EUA Central
- (América do Norte) Centro-Norte dos EUA
- (América do Norte) Centro-Sul dos EUA
- (América do Norte) Centro-Oeste dos EUA
- (América do Norte) Canadá Central
- (América do Norte) Leste do Canadá
- (América do Sul) Sul do Brasil
Criar e anexar volumes persistentes
Siga estas etapas para criar e anexar um volume persistente.
1. Criar um pool de armazenamento
Primeiro, crie um pool de armazenamento, que é um agrupamento lógico de armazenamento para o cluster do Kubernetes, definindo-o em um arquivo de manifesto YAML.
Se você habilitou o Armazenamento de Contêiner do Azure usando os comandos az aks create
ou az aks update
, talvez já tenha um pool de armazenamento. Use kubectl get sp -n acstor
para obter a lista de pools de armazenamento. Se já houver um pool de armazenamento disponível que queira usar, pule esta seção e prossiga para Exibir as classes de armazenamento disponíveis.
Siga estas etapas para criar um pool de armazenamento com o Azure Elastic SAN (versão prévia).
Use seu editor de texto favorito para criar um arquivo de manifesto YAML, como
code acstor-storagepool.yaml
.Cole o código a seguir. O valor do nome do pool de armazenamento pode ser o que você quiser. Ajuste de armazenamento para refletir a capacidade de armazenamento que você quer no Gi ou Ti e salve o arquivo. Atualmente, o Azure Elastic SAN não oferece suporte ao redimensionamento de volumes ou pools de armazenamento.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: managed namespace: acstor spec: poolType: elasticSan: {} resources: requests: {"storage": 1Ti}
Aplique o arquivo de manifesto YAML para criar o pool de armazenamento.
kubectl apply -f acstor-storagepool.yaml
Quando a criação do pool de armazenamento for concluída, você verá uma mensagem semelhante à seguinte:
storagepool.containerstorage.azure.com/managed created
Você também pode executar esse comando para verificar o status do pool de armazenamento. Substitua
<storage-pool-name>
pelo valor do nome do pool de armazenamento. Para esse exemplo, o valor seria managed.kubectl describe sp <storage-pool-name> -n acstor
Quando o pool de armazenamento for criado, o Armazenamento de Contêineres do Azure criará uma classe de armazenamento em seu nome, usando a convenção de nomenclatura acstor-<storage-pool-name>
. O processo também criará um recurso do Azure Elastic SAN.
2. Exibir as classes de armazenamento disponíveis
Quando o pool de armazenamento estiver pronto para uso, você deverá selecionar uma classe de armazenamento para definir como o armazenamento é criado dinamicamente ao criar declarações de volume persistentes e implantar volumes persistentes.
Execute kubectl get sc
para exibir as classes de armazenamento disponíveis. Você deve ver uma classe de armazenamento chamada acstor-<storage-pool-name>
.
Importante
Não use a classe de armazenamento marcada como interna. Ela é uma classe de armazenamento interna necessária para que o Armazenamento de Contêineres do Azure funcione.
3. Criar uma declaração de volume persistente
Um PVC (declaração de volume persistente) é usado para provisionar automaticamente o armazenamento com base em uma classe de armazenamento. Siga essas etapas para criar um PVC usando a nova classe de armazenamento.
Use seu editor de texto favorito para criar um arquivo de manifesto YAML, como
code acstor-pvc.yaml
.Cole o seguinte código e salve o arquivo. O valor
name
do PVC pode ser o que você quiser.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: managedpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-managed # replace with the name of your storage class if different resources: requests: storage: 100Gi
Aplique o arquivo de manifesto YAML para criar o PVC.
kubectl apply -f acstor-pvc.yaml
Você deve ver uma saída semelhante a:
persistentvolumeclaim/managedpvc created
Você pode verificar o status do PVC executando o seguinte comando:
kubectl describe pvc managedpvc
Depois que o PVC for criado, ele estará pronto para uso por um pod.
4. Implantar um pod e anexar um volume persistente
Crie um pod usando FIO (Testador de E/S Flexível) para simulação de carga de trabalho e parâmetro de comparação e especifique um caminho de montagem para o volume persistente. Para claimName, use o valor do nome usado ao criar a declaração de volume persistente.
Use seu editor de texto favorito para criar um arquivo de manifesto YAML, como
code acstor-pod.yaml
.Cole o seguinte código e salve o arquivo.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: managedpv persistentVolumeClaim: claimName: managedpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: managedpv
Aplique o arquivo de manifesto YAML para implantar o pod.
kubectl apply -f acstor-pod.yaml
Será exibida uma saída semelhante à seguinte:
pod/fiopod created
Verifique se o pod está em execução e se a declaração de volume persistente foi associada com êxito ao pod:
kubectl describe pod fiopod kubectl describe pvc managedpvc
Verifique o teste FIO para ver seu status atual:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Agora você implantou um pod que está usando um Elastic SAN como armazenamento e pode usá-lo para suas cargas de trabalho do Kubernetes.
Gerenciar volumes persistentes e pools de armazenamento
Agora que você criou um volume persistente, poderá desanexar e reanexar o volume conforme necessário. Também é possível excluir um pool de armazenamento.
Desanexar e anexar novamente um volume persistente
Para desanexar um volume persistente, exclua o pod ao qual o volume persistente está anexado. Substitua <pod-name>
pelo nome do pod, por exemplo, fiopod.
kubectl delete pods <pod-name>
Para anexar novamente um volume persistente, basta referencia o nome de declaração do volume persistente no arquivo de manifesto YAML, conforme descrito em Implantar um pod e anexar um volume persistente.
Para verificar a qual volume persistente uma declaração de volume persistente está associada, execute kubectl get pvc <persistent-volume-claim-name>
.
Excluir um pool de armazenamento
Se você quiser excluir um pool de armazenamento, execute o comando a seguir. Substitua <storage-pool-name>
pelo nome do pool de armazenamento.
kubectl delete sp -n acstor <storage-pool-name>