Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Armazenamento de Contêineres do Azure é um serviço de gerenciamento de volume, implantação e orquestração baseado em nuvem criado para contêineres. Use este tutorial para instalar a versão de produção mais recente do Armazenamento de Contêineres do Azure em um cluster do AKS (Serviço de Kubernetes do Azure), quer você crie um novo cluster ou habilite o serviço em um cluster existente.
Este artigo explica como instalar o Azure Container Storage usando dois fluxos compatíveis (somente instalador ou instalador + recurso), como a instalação de componentes é acionada e como verificar e solucionar problemas da sua implantação. Tipos de armazenamento de volumes persistentes instalam drivers que implementam a Interface de Armazenamento de Contêineres (CSI). O Armazenamento de contêineres do Azure também pode habilitar e gerenciar aceleradores distribuídos para armazenamento em nuvem (DACS), que instala uma extensão separada e não cria uma StorageClass.
Se você preferir a versão de software livre do Armazenamento de Contêineres do Azure, consulte o repositório local-csi-driver para obter instruções de instalação alternativas.
Ao final deste tutorial, você pode:
- Preparar seu ambiente da CLI do Azure
- Criar ou selecionar um grupo de recursos para o cluster
- Confirme se os tipos de máquina virtual do pool de nós atendem aos critérios de instalação
- Instalar o Armazenamento de Contêineres do Azure criando um novo cluster do AKS ou habilitando-o em um cluster existente
Importante
Este artigo se aplica ao Armazenamento de Contêineres do Azure (versão 2.x.x). Para versões anteriores, consulte a documentação do Armazenamento de Contêineres do Azure (versão 1.x.x). Se você já tiver o Armazenamento de Contêineres do Azure (versão 1.x.x) instalado no cluster do AKS, remova-o seguindo estas etapas.
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 da CLI do Azure v2.83.0 ou posterior. Para obter mais informações, veja Como instalar a CLI do Azure. Desabilite extensões, como
aks-previewse ocorrerem problemas. Instale ou atualize as extensões conforme necessário:az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(Somente SAN elástico)
Você precisa do cliente de linha de comando do Kubernetes.
kubectlEle já está instalado se você estiver usando o Azure Cloud Shell. Você pode instalá-lo localmente executando oaz aks install-clicomando.Verifique se a região de destino tem suporte nas regiões do Armazenamento de Contêineres do Azure.
Planeje a configuração do pool de nós:
- Use o Linux como o tipo de sistema operacional (o Windows não tem suporte).
- Selecione um SKU de VM (máquina virtual) que dê suporte a discos de dados NVMe locais se você planeja usar o tipo de armazenamento NVMe local, como VMs com otimização de armazenamento ou aceleradas por GPU .
- Para clusters existentes, certifique-se de que os pools de nós já estejam usando uma SKU de VM compatível antes de habilitar o Armazenamento de Contêineres do Azure.
Se você usar o Elastic SAN pela primeira vez na assinatura, execute este comando de registro único:
az provider register --namespace Microsoft.ElasticSan
Definir o contexto da assinatura
Defina o contexto da sua assinatura do Azure usando o comando az account set. Você pode exibir IDs de assinatura executando az account list --output table. Substitua <subscription-id> por sua ID da assinatura.
az account set --subscription <subscription-id>
Criar um grupo de recursos
Um grupo de recursos do Azure é um contêiner lógico para recursos. Ao criar um grupo de recursos, especifique um local. Esse local armazena metadados do grupo de recursos e serve como a região padrão para recursos criados sem uma região explícita.
Crie um grupos de recursos usando az group create. Substitua <resource-group-name> pelo nome do grupo de recursos e <location> por uma região do Azure, como eastus, westus2, westus3ou westeurope. Se você habilitar o Armazenamento de Contêineres do Azure em um cluster do AKS existente, use o grupo de recursos que já hospeda o cluster.
az group create --name <resource-group-name> --location <location>
Se o grupo de recursos for criado com êxito, você verá uma saída semelhante a este exemplo:
{
"id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
"location": "eastus",
"managedBy": null,
"name": "myContainerStorageRG",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
Instalar o Armazenamento de Contêineres do Azure em um novo cluster do AKS
Escolha o cenário que corresponde ao seu ambiente.
Importante
O Armazenamento de Contêineres do Azure instala a versão principal mais recente por padrão. Você pode fixar uma versão principal como --container-storage-version. Você não pode fixar versões secundárias ou de patch.
Instalação somente do instalador
Execute o comando a seguir para criar um novo cluster do AKS e instalar o Armazenamento de Contêineres do Azure. Substitua <cluster-name> e <resource-group> pelos seus próprios valores e especifique qual tipo de VM você deseja usar.
az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage --generate-ssh-keys
A implantação pode levar até 5 minutos. A instalação do driver CSI é adiada até que você crie uma classe de armazenamento ou habilite um tipo de armazenamento posteriormente.
Siga as instruções para criar uma classe de armazenamento NVMe local ou uma classe de armazenamento Elástico SAN .
Instalação do instalador + instalação de tipo de armazenamento
Execute o comando a seguir para criar um novo cluster do AKS e instalar o Armazenamento de Contêineres do Azure. Substitua <cluster-name> e <resource-group> pelos seus próprios valores e especifique qual tipo de VM você deseja usar.
az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage ephemeralDisk --generate-ssh-keys
Esse comando instala o instalador, implanta o driver CSI NVMe local e cria uma classe de armazenamento padrão chamada local-csi. Você pode instalar e usar o NVMe local e o Elastic SAN fornecendo uma lista como ephemeralDisk elasticSan.
Instalar o Armazenamento de Contêineres do Azure em um cluster do AKS existente
Instalação somente do instalador
Execute o comando a seguir para habilitar o Armazenamento de Contêineres do Azure em um cluster do AKS existente. Substitua <cluster-name> e <resource-group> pelos seus próprios valores.
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage
A implantação pode levar até 5 minutos. Quando for concluído, o cluster terá o componente instalador do Armazenamento de Contêiner do Azure instalado. A instalação do driver CSI é adiada até que você crie uma classe de armazenamento ou habilite um tipo de armazenamento posteriormente. Siga as instruções para criar uma classe de armazenamento NVMe local ou uma classe de armazenamento Elástico SAN .
Instalação do instalador + instalação de tipo de armazenamento
Execute o comando a seguir para habilitar o Armazenamento de Contêineres do Azure em um cluster do AKS existente. Substitua <cluster-name> e <resource-group> pelos seus próprios valores, e especifique qual tipo de armazenamento você deseja usar.
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage elasticSan
Esse comando instala o instalador, implanta o driver ELASTIC SAN CSI e cria uma classe de armazenamento padrão chamada azuresan-csi. Você pode instalar e usar o NVMe local e o Elastic SAN fornecendo uma lista como ephemeralDisk elasticSan.
Instalar o acelerador distribuído para armazenamento em nuvem (prévia)
Ative o acelerador distribuído para armazenamento em nuvem em um cluster AKS existente usando o distributedAccelerator valor. A letra maiúscula A é obrigatória. A extensão se instala no recurso de cluster gerenciado do AKS; você não precisa conectar o cluster ao Arc.
Use aks-preview versão 22.0.0b9 ou posterior. Instale ou atualize a extensão, verifique sua versão, instale ou atualize connectedk8s e k8s-extension para gerenciar e inspecionar a extensão DACS:
az extension add --name aks-preview --upgrade --yes
az extension show --name aks-preview --query version --output tsv
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
Antes de ativar o DACS, selecione um pool de nós Linux com discos de dados NVMe locais dedicados ao cache. Aplique o rótulo dacs.azure.com/processing-unit=cpu por meio da configuração de pool de nós, preservando quaisquer etiquetas personalizadas existentes. Siga Verificar o pool de nós de cache.
Caution
Ativar o DACS instala um DaemonSet pré-requisito que descobre, formata e monta discos NVMe locais em nós de cache rotulados. Rotule apenas nós com discos que não sejam reivindicados por outro componente de armazenamento.
Execute o seguinte comando, substituindo <cluster-name> e <resource-group> com seus valores:
az aks update \
--name <cluster-name> \
--resource-group <resource-group> \
--enable-azure-container-storage distributedAccelerator
Esse comando instala a distributedaccelerator extensão, o controlador DACS e o pré-requisito NVMe DaemonSet em kube-system, e a caches.storage.azure.com definição personalizada de recurso (CRD). Você não instala um gráfico de pré-requisitos separado nem gerencia o release do Helm da extensão por conta própria. Ele não cria uma StorageClass nem provisiona um recurso de cache e pods de servidor de cache por padrão. A instalação bem-sucedida de extensões não significa por si só que um cache está pronto para tráfego de aplicações.
Passe distributedAccelerator sozinho neste comando, em vez de combiná-lo com as opções de armazenamento de volumes persistentes mostradas anteriormente. Antes de provisionar servidores de cache, verifique se os pré-requisitos gerenciados estão prontos em cada nó de cache rotulado. Para a configuração do cache e o fluxo de trabalho da aplicação, veja Comece com acelerador distribuído para armazenamento em nuvem no AKS.
Para remover DACS, siga Remover acelerador distribuído para armazenamento em nuvem. Exclua os recursos do cache enquanto o controlador está rodando, depois desative o DACS. A desativação remove o controlador e o pré-requisito gerenciado DaemonSet; não remova esses pré-requisitos separadamente.
- Preparar o Terraform e autenticar no Azure
- Definir o grupo de recursos e a configuração do cluster do AKS
- Confirme se os tipos de máquina virtual do pool de nós atendem aos critérios de instalação
- Aplicar o Terraform para implantar o Armazenamento de Contêineres do Azure ou habilitá-lo em um cluster existente
Importante
Este artigo se aplica ao Armazenamento de Contêineres do Azure (versão 2.x.x). Para versões anteriores, consulte a documentação do Armazenamento de Contêineres do Azure (versão 1.x.x). Se você já tiver o Armazenamento de Contêineres do Azure (versão 1.x.x) instalado no cluster do AKS, remova-o seguindo estas etapas.
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 da CLI do Azure v2.83.0 ou posterior. Para obter mais informações, veja Como instalar a CLI do Azure. Desabilite extensões, como
aks-previewse ocorrerem problemas. Instale ou atualize as extensões conforme necessário:az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(Somente SAN elástico)
Você precisa do cliente de linha de comando do Kubernetes.
kubectlEle já está instalado se você estiver usando o Azure Cloud Shell. Você pode instalá-lo localmente executando oaz aks install-clicomando.Verifique se a região de destino tem suporte nas regiões do Armazenamento de Contêineres do Azure.
Planeje a configuração do pool de nós:
- Use o Linux como o tipo de sistema operacional (o Windows não tem suporte).
- Selecione um SKU de máquina virtual (VM) que dê suporte a discos de dados NVMe locais, como VMs com otimização de armazenamento ou aceleradas por GPU .
- Para clusters existentes, certifique-se de que os pools de nós já estejam usando uma SKU de VM compatível antes de habilitar o Armazenamento de Contêineres do Azure.
Instale o Terraform versão 1.5 ou posterior e confirme a instalação com
terraform version. O Terraform pode reutilizar a autenticação da CLI do Azure.Se você usar o Elastic SAN pela primeira vez na assinatura, execute este comando de registro único:
az provider register --namespace Microsoft.ElasticSan
Definir o contexto da assinatura
O Terraform pode determinar uma assinatura do Azure de destino por meio de vários métodos:
-
subscription_idno bloco do provedor - Variável de ambiente
ARM_SUBSCRIPTION_ID - Assinatura padrão da CLI do Azure
- Identidade gerenciada (ao executar no Azure)
Para uso local, defina o contexto da CLI do Azure:
az account set --subscription <subscription-id>
Se você estiver realizando a implantação com o Terraform pela primeira vez na assinatura, execute este comando de registro único:
az provider register --namespace Microsoft.KubernetesConfiguration
# Wait for registration to complete (can take a few minutes)
az provider show --namespace Microsoft.KubernetesConfiguration --query "registrationState" -o tsv
Instalar o Armazenamento de Contêineres do Azure em um novo cluster do AKS
Importante
O Armazenamento de Contêineres do Azure instala a versão mais recente disponível e se atualiza automaticamente. Não há suporte para a seleção manual de versão.
Em um diretório de trabalho vazio, crie um
main.tfarquivo com a seguinte configuração mínima de um cluster do AKS. Atualize os nomes de recursos, os locais e os tamanhos da VM para atender às suas necessidades.terraform { required_version = ">= 1.5.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } resource "azurerm_resource_group" "rg" { name = "demo-aks-rg" location = "eastus" } resource "azurerm_kubernetes_cluster" "aks" { name = "demo-aks-cluster" dns_prefix = "demo-aks" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name default_node_pool { name = "systempool" vm_size = "Standard_L8s_v3" node_count = 3 } identity { type = "SystemAssigned" } } resource "azurerm_kubernetes_cluster_extension" "container_storage" { # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility name = "acstor" cluster_id = azurerm_kubernetes_cluster.aks.id extension_type = "microsoft.azurecontainerstoragev2" }Inicialize o diretório de trabalho para baixar o provedor do AzureRM.
terraform initExamine as alterações planejadas.
terraform planAplique a configuração para criar o grupo de recursos, o cluster do AKS e a extensão de Armazenamento de Contêiner do Azure. A implantação normalmente leva 5 minutos.
terraform apply
Quando for concluído, o cluster terá o componente instalador do Armazenamento de Contêiner do Azure instalado. A instalação do driver CSI é adiada até que você crie uma classe de armazenamento. Siga as instruções para criar uma classe de armazenamento NVMe local ou uma classe de armazenamento Elástico SAN .
Instalar o Armazenamento de Contêineres do Azure em um cluster do AKS existente
Se o cluster do AKS já existir e você gerenciá-lo fora do Terraform, você ainda poderá habilitar o Armazenamento de Contêineres do Azure criando apenas o recurso de extensão. Use uma fonte de dados para pesquisar a ID do cluster.
terraform {
required_version = ">= 1.5.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
}
}
provider "azurerm" {
features {}
}
data "azurerm_kubernetes_cluster" "existing" {
name = "existing-aks"
resource_group_name = "existing-aks-rg"
}
resource "azurerm_kubernetes_cluster_extension" "container_storage" {
# NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
name = "acstor"
cluster_id = data.azurerm_kubernetes_cluster.existing.id
extension_type = "microsoft.azurecontainerstoragev2"
}
Execute terraform init (se este for um novo diretório de trabalho) seguido de terraform apply instalar o Armazenamento de Contêineres do Azure no cluster de destino. A implantação normalmente leva 5 minutos.
Quando for concluído, o cluster terá o componente instalador do Armazenamento de Contêiner do Azure instalado. A instalação do driver CSI é adiada até que você crie uma classe de armazenamento. Siga as instruções para criar uma classe de armazenamento NVMe local ou uma classe de armazenamento Elástico SAN .
Verificar a instalação
Conecte-se ao cluster do AKS
Antes de executar os comandos de verificação, verifique se o kubeconfig local está definido como o cluster de destino:
az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
Se você gerenciar vários clusters, adicione --overwrite-existing para substituir um contexto existente ou use --context para definir um nome de contexto exclusivo.
Verificar o instalador (modo exclusivo do instalador)
Depois de habilitar apenas o instalador, verifique se ele está presente:
kubectl get deploy -n kube-system | grep acstor
Resultado esperado:
acstor-cluster-manager 2/2 2 2 4d9h
acstor-geneva 2/2 2 2 4d9h
Verificar acelerador distribuído para armazenamento em nuvem
Para uma instalação de DACS, verifique a extensão em vez de procurar por uma StorageClass:
az k8s-extension show \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--name distributedaccelerator \
--query '{extensionType:extensionType,provisioningState:provisioningState,currentVersion:currentVersion,releaseTrain:releaseTrain}' \
--output table
Confirme que o tipo de extensão é microsoft.distributedaccelerator e que seu estado de provisionamento é Succeeded. O currentVersion campo mostra a versão instalada. O nome do recurso da extensão é minúsculo distributedaccelerator, ao contrário da opção distributedAcceleratorde armazenamento da CLI .
Após conectar ao cluster, verifique o controlador, o DaemonSet pré-requisito e o CRD:
kubectl rollout status deployment/dacs-manager --namespace kube-system --timeout=5m
kubectl get deployment dacs-manager --namespace kube-system
kubectl rollout status daemonset/dacs-prereq --namespace kube-system --timeout=10m
kubectl get daemonset dacs-prereq --namespace kube-system
kubectl get pods --namespace kube-system --selector app.kubernetes.io/name=dacs-prereq --output wide
kubectl get crd caches.storage.azure.com
Continue somente após a extensão estar no Succeeded estado, o controlador ter uma réplica pronta e o DaemonSet pré-requisito ter um pod Pronto em cada nó de cache rotulado. Um DaemonSet sem nenhuma réplica desejada não realiza a verificação da preparação de NVMe. Se uma verificação falhar, confira Solucionar problemas do acelerador distribuído para armazenamento em nuvem.
As etapas de verificação de classe de armazenamento e de drivers CSI que seguem se aplicam a tipos de armazenamento de volumes persistentes, não a DACS.
Verificar a presença da classe de armazenamento
Depois de criar uma classe de armazenamento ou habilitar um tipo de armazenamento, verifique a classe de armazenamento:
kubectl get sc
Exemplo de saída:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azuresan-csi san.csi.azure.com Delete Immediate false 4d7h
local-csi localdisk.csi.acstor.io Delete WaitForFirstConsumer true 4d5h
Verificar a instalação de drivers
Verifique os componentes esperados após a criação da classe de armazenamento ou a instalação do tipo de armazenamento:
kubectl get pod -n kube-system | grep acstor
Exemplo de saída:
pod/acstor-azuresan-csi-driver-jrqd2 7/7 Running 0 142m
pod/acstor-azuresan-csi-driver-tcdp8 7/7 Running 0 142m
pod/acstor-cluster-manager-76c67496f9-8ln5d 2/2 Running 0 3h54m
pod/acstor-cluster-manager-76c67496f9-b4c8q 2/2 Running 0 3h54m
pod/acstor-geneva-588bcbcc67-4tr5d 3/3 Running 0 3h54m
pod/acstor-geneva-588bcbcc67-k7j7k 3/3 Running 0 3h54m
pod/acstor-node-agent-46v47 1/1 Running 0 142m
pod/acstor-node-agent-6c99m 1/1 Running 0 142m
pod/acstor-otel-collector-4lfgz 1/1 Running 0 142m
pod/acstor-otel-collector-hw9nd 1/1 Running 0 142m
Resolução de Erros
Para depuração, observe o sistema à medida que os componentes são distribuídos:
kubectl get events -n kube-system --watch
kubectl get pod -n kube-system --watch
Inspecione os recursos personalizados HelmRelease e OCIRepository usados pelo instalador:
kubectl describe helmreleases.helm.installer.acstor.io -n kube-system
kubectl describe ocirepositories.source.installer.acstor.io -n kube-system
Próximas etapas
- Usar o Armazenamento de Contêineres do Azure com NVMe local
- Usar o Armazenamento de Contêineres do Azure com SAN Elástico
- Comece a usar o acelerador distribuído para armazenamento em nuvem no AKS (prévia)
- Visão geral da implantação de um banco de dados PostgreSQL altamente disponível no AKS (Serviço de Kubernetes do Azure)
- Perguntas frequentes sobre o Armazenamento de Contêineres do Azure