Usar discos ultra do Azure no Serviço Kubernetes do Azure
Os discos ultra do Azure oferecem armazenamento de discos de débito elevado, IOPS elevado e baixa latência consistente para as aplicações com estado. Um dos principais benefícios dos discos ultra é a capacidade de alterar dinamicamente o desempenho do SSD juntamente com as cargas de trabalho sem a necessidade de reiniciar os nós do agente. Os discos ultra são adequados para cargas de trabalho com uma utilização intensiva de dados.
Este artigo descreve como configurar um cluster AKS novo ou existente para usar 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 dão suporte a esses discos e são suportados apenas por séries de VM específicas. Analise a tabela correspondente na seção Limitações do disco Ultra para obter mais informações.
- Os discos Ultra não podem ser usados com alguns recursos e funcionalidades, como conjuntos de disponibilidade ou Criptografia de Disco do Azure. Analise as limitações do disco Ultra para obter as informações mais recentes.
Criar um cluster que possa usar ultradiscos
Crie um cluster AKS que seja capaz de aproveitar os ultra discos do Azure usando os seguintes comandos da CLI. Use o --enable-ultra-ssd
parâmetro para definir o EnableUltraSSD
recurso.
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 você quiser criar um cluster sem suporte a ultra disco, poderá fazê-lo omitindo o --enable-ultra-ssd
parâmetro.
Ativar discos ultra num cluster existente
Você pode habilitar ultradiscos em um cluster existente adicionando um novo pool de nós ao cluster que ofereça suporte a ultradiscos. Configure um novo pool de nós para usar ultradiscos usando o --enable-ultra-ssd
parâmetro com o az aks nodepool add
comando.
Se você quiser criar novos pools de nós sem suporte para discos ultra, poderá fazê-lo excluindo o --enable-ultra-ssd
parâmetro.
Utilizar discos ultra dinamicamente com uma classe de armazenamento
Para usar ultradiscos em suas implantações ou conjuntos com monitoração de 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 do Kubernetes, consulte Classes de armazenamento do Kubernetes. Neste exemplo, criaremos uma classe de armazenamento que faça referência a discos ultra.
Crie um arquivo nomeado
azure-ultra-disk-sc.yaml
e copie no seguinte manifesto: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
kubectl apply
comando e especifique seuazure-ultra-disk-sc.yaml
arquivo.kubectl apply -f azure-ultra-disk-sc.yaml
Sua saída deve ser semelhante à saída de exemplo a seguir:
storageclass.storage.k8s.io/ultra-disk-sc created
Criar uma declaração de volume persistente
Uma declaração de volume persistente (PVC) é usada 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 ultra disco.
Crie um arquivo nomeado
azure-ultra-disk-pvc.yaml
e copie no seguinte manifesto: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 é 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
kubectl apply
comando e especifique seuazure-ultra-disk-pvc.yaml
arquivo.kubectl apply -f azure-ultra-disk-pvc.yaml
Sua saída deve ser semelhante à saída de exemplo a seguir:
persistentvolumeclaim/ultra-disk created
Usar o volume persistente
Depois que a declaração de volume persistente tiver sido criada e o disco 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 ultradisco para montar o disco do Azure no caminho /mnt/azure
.
Crie um arquivo nomeado
nginx-ultra.yaml
e copie no seguinte manifesto: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
kubectl apply
o comando e especifique seunginx-ultra.yaml
arquivo.kubectl apply -f nginx-ultra.yaml
Sua saída deve ser semelhante à saída de exemplo a seguir:
pod/nginx-ultra created
Agora você tem um pod em execução com seu
/mnt/azure
disco do Azure montado no diretório.Veja os detalhes de configuração usando o
kubectl describe pod
comando e especifique seunginx-ultra.yaml
arquivo.kubectl describe pod nginx-ultra
Sua saída deve ser semelhante à saída de exemplo a seguir:
[...] 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óximos passos
- Para obter mais informações sobre discos ultra, consulte Usando discos ultra do Azure.
- Para obter mais informações sobre as práticas recomendadas de armazenamento, consulte Práticas recomendadas para armazenamento e backups no AKS.
Azure Kubernetes Service