Utilizar discos ultra do Azure no Azure Kubernetes Service
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 do AKS novo ou existente para utilizar discos ultra do Azure.
Antes de começar
Esta funcionalidade só pode ser definida na criação do cluster ou ao criar um conjunto de nós.
Limitações
- Os discos ultra do Azure necessitam de conjuntos de nós implementados em zonas de disponibilidade e regiões que suportem estes discos e só são suportados por séries de VM específicas. Reveja a tabela correspondente na secção Limitações do disco Ultra para obter mais informações.
- Os discos Ultra não podem ser utilizados com algumas funcionalidades, como os conjuntos de disponibilidade ou o Azure Disk Encryption. Veja as limitações do disco Ultra para obter as informações mais recentes.
Criar um cluster que possa utilizar discos ultra
Crie um cluster do AKS que consiga tirar partido dos Discos Ultra do Azure com os seguintes comandos da CLI. Utilize o --enable-ultra-ssd
parâmetro para definir a EnableUltraSSD
funcionalidade.
az aks create -g MyResourceGroup -n myAKSCluster -l westus2 --node-vm-size Standard_D2s_v3 --zones 1 2 --node-count 2 --enable-ultra-ssd
Se quiser criar um cluster sem suporte para discos ultra, pode fazê-lo ao omitir o --enable-ultra-ssd
parâmetro .
Ativar discos ultra num cluster existente
Pode ativar discos ultra num cluster existente ao adicionar um novo conjunto de nós ao cluster que suporta discos ultra. Configure um novo conjunto de nós para utilizar discos ultra com o --enable-ultra-ssd
parâmetro com o az aks nodepool add
comando .
Se quiser criar novos conjuntos de nós sem suporte para discos ultra, pode fazê-lo excluindo o --enable-ultra-ssd
parâmetro .
Utilizar discos ultra dinamicamente com uma classe de armazenamento
Para utilizar discos ultra nas suas implementações ou conjuntos com monitorização de estado, pode utilizar uma classe de armazenamento para o aprovisionamento dinâmico.
Criar a classe de armazenamento
Uma classe de armazenamento é utilizada para definir como uma unidade de armazenamento é criada dinamicamente com um volume persistente. Para obter mais informações sobre as classes de armazenamento do Kubernetes, veja Classes de armazenamento do Kubernetes. Neste exemplo, vamos criar uma classe de armazenamento que referencia discos ultra.
Crie um ficheiro com o nome
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 com o
kubectl apply
comando e especifique o seuazure-ultra-disk-sc.yaml
ficheiro.kubectl apply -f azure-ultra-disk-sc.yaml
O resultado deve assemelhar-se ao seguinte resultado de exemplo:
storageclass.storage.k8s.io/ultra-disk-sc created
Criar uma afirmação de volume persistente
Uma afirmação de volume persistente (PVC) é utilizada para aprovisionar automaticamente o armazenamento com base numa classe de armazenamento. Neste caso, um PVC pode utilizar a classe de armazenamento criada anteriormente para criar um disco ultra.
Crie um ficheiro com o nome
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 afirmação pede um disco com o nome
ultra-disk
de 1000 GB de tamanho com acesso ReadWriteOnce . A classe de armazenamento ultra-disk-sc é especificada como a classe de armazenamento.Crie a afirmação de volume persistente com o
kubectl apply
comando e especifique o ficheiroazure-ultra-disk-pvc.yaml
.kubectl apply -f azure-ultra-disk-pvc.yaml
O resultado deve assemelhar-se ao seguinte resultado de exemplo:
persistentvolumeclaim/ultra-disk created
Utilizar o volume persistente
Assim que a afirmação de volume persistente tiver sido criada e o disco for aprovisionado com êxito, pode ser criado um pod com acesso ao disco. O manifesto seguinte cria um pod NGINX básico que utiliza a afirmação de volume persistente denominada ultra-disco para montar o disco do Azure no caminho /mnt/azure
.
Crie um ficheiro com o nome
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 com
kubectl apply
o comando e especifique o seunginx-ultra.yaml
ficheiro.kubectl apply -f nginx-ultra.yaml
O resultado deve assemelhar-se ao seguinte resultado de exemplo:
pod/nginx-ultra created
Tem agora um pod em execução com o disco do Azure montado no
/mnt/azure
diretório.Veja os detalhes de configuração com o
kubectl describe pod
comando e especifique o ficheironginx-ultra.yaml
.kubectl describe pod nginx-ultra
O resultado deve assemelhar-se ao seguinte resultado de exemplo:
[...] 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" [...]
Passos seguintes
- Para obter mais informações sobre discos ultra, veja Using Azure ultra disks (Utilizar discos ultra do Azure).
- Para obter mais informações sobre as melhores práticas de armazenamento, veja Melhores práticas para armazenamento e cópias de segurança no AKS.