Usar discos ultra do Azure no Serviço de Kubernetes do Azure
Os discos ultra do Azure oferecem alta taxa de transferência, IOPS alta e armazenamento de disco consistente de baixa latência para seus aplicativos com estado. Um grande benefício dos discos ultra é a capacidade de alterar dinamicamente o desempenho do SSD junto com suas cargas de trabalho sem a necessidade de reiniciar os nós do agente. Os discos ultra são adequados para cargas de trabalho com uso intensivo de dados.
Este artigo descreve como configurar um cluster do AKS novo ou existente para usar os discos ultra do Azure.
Antes de começar
Esse recurso só pode ser definido na criação do cluster ou ao criar um pool de nós.
Limitações
- Os discos ultra do Azure exigem pools de nós implantados em zonas de disponibilidade e regiões que suportem esses discos que só são suportados por séries de VM específicas. Consulte a tabela correspondente na seção Limitações do Disco Ultra para obter mais informações.
- Discos Ultra não podem ser usados com alguns recursos e funcionalidades, como conjuntos de disponibilidade ou o Azure Disk Encryption. Consulte as Limitações do Disco Ultra para obter as informações mais recentes.
Crie um cluster que pode usar discos ultra
Crie um cluster AKS capaz de aproveitar os Discos Ultra do Azure usando os comandos da CLI a seguir. Use o parâmetro --enable-ultra-ssd
para definir o recurso EnableUltraSSD
.
az aks create \
--resource-group MyResourceGroup \
--name myAKSCluster \
--location westus2 \
--node-vm-size Standard_D2s_v3 \
--zones 1 2 \
--node-count 2 \
--enable-ultra-ssd \
--generate-ssh-keys
Se desejar criar um cluster sem suporte para disco ultra, você pode fazer isso omitindo o parâmetro --enable-ultra-ssd
.
Habilitar Discos Ultra em um cluster existente
Você pode habilitar discos ultra em um cluster existente adicionando um novo pool de nós ao seu cluster com suporte para discos ultra. Configure um novo pool de nós para usar discos ultra usando o parâmetro --enable-ultra-ssd
com o comando az aks nodepool add
.
Se você quiser criar novos pools de nós sem suporte para discos ultra, você pode fazer isso excluindo o parâmetro --enable-ultra-ssd
.
Usar discos ultra dinamicamente com uma classe de armazenamento
Para usar discos ultra em suas implantações ou conjuntos com estado, você pode usar uma classe de armazenamento para provisionamento dinâmico.
Criar a classe de armazenamento
Uma classe de armazenamento é usada para definir como uma unidade de armazenamento é criada dinamicamente com um volume persistente. Para obter mais informações sobre classes de armazenamento Kubernetes, confira Classes de Armazenamento Kubernetes. Neste exemplo, criaremos uma classe de armazenamento que faz referência aos discos ultra.
Crie um arquivo chamado
azure-ultra-disk-sc.yaml
e copie-o para o manifesto a seguir:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ultra-disk-sc provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21 volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created parameters: skuname: UltraSSD_LRS kind: managed cachingMode: None diskIopsReadWrite: "2000" # minimum value: 2 IOPS/GiB diskMbpsReadWrite: "320" # minimum value: 0.032/GiB
Crie a classe de armazenamento usando o comando
kubectl apply
e especifique seu arquivoazure-ultra-disk-sc.yaml
.kubectl apply -f azure-ultra-disk-sc.yaml
Sua saída deve ser parecida com o seguinte exemplo de saída:
storageclass.storage.k8s.io/ultra-disk-sc created
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. Nesse caso, um PVC pode usar a classe de armazenamento criada anteriormente para criar um disco ultra.
Crie um arquivo chamado
azure-ultra-disk-pvc.yaml
e copie-o para o manifesto a seguir:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ultra-disk spec: accessModes: - ReadWriteOnce storageClassName: ultra-disk-sc resources: requests: storage: 1000Gi
A declaração solicita um disco chamado
ultra-disk
que tenha 1000 GB de tamanho com acesso ReadWriteOnce. A classe de armazenamento ultra-disk-sc é especificada como a classe de armazenamento.Crie a declaração de volume persistente usando o comando
kubectl apply
e especifique seu arquivoazure-ultra-disk-pvc.yaml
.kubectl apply -f azure-ultra-disk-pvc.yaml
Sua saída deve ser parecida com o seguinte exemplo de saída:
persistentvolumeclaim/ultra-disk created
Usar o volume persistente
Quando a declaração do volume persistente tiver sido criada e o disco tiver sido provisionado com êxito, um pod poderá ser criado com acesso ao disco. O manifesto a seguir cria um pod NGINX básico que usa a declaração de volume persistente chamada ultra-disk para montar o disco do Azure no caminho /mnt/azure
.
Crie um arquivo chamado
nginx-ultra.yaml
e copie-o para o manifesto a seguir:kind: Pod apiVersion: v1 metadata: name: nginx-ultra spec: containers: - name: nginx-ultra image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume volumes: - name: volume persistentVolumeClaim: claimName: ultra-disk
Crie o pod usando o comando
kubectl apply
e especifique seu arquivonginx-ultra.yaml
.kubectl apply -f nginx-ultra.yaml
Sua saída deve ser parecida com o seguinte exemplo de saída:
pod/nginx-ultra created
Agora você tem um pod em execução com o disco do Azure montado no diretório
/mnt/azure
.Consulte seus detalhes de configuração usando o comando
kubectl describe pod
e especifique seu arquivonginx-ultra.yaml
.kubectl describe pod nginx-ultra
Sua saída deve ser parecida com o seguinte exemplo de saída:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
Próximas etapas
- Para saber mais sobre discos ultra, confira Como usar discos ultra do Azure.
- Para saber mais sobre as melhores práticas de armazenamento, consulte Melhores práticas para armazenamento e backups no AKS.
Azure Kubernetes Service