Partilhar via


Usar discos SSD Premium v2 do Azure no Serviço Kubernetes do Azure

Os discos SSD Premium v2 do Azure oferecem cargas de trabalho empresariais intensas de E/S, uma latência de disco de submilissegundos consistente e IOPS e taxa de transferência elevadas. O desempenho (capacidade, taxa de transferência e IOPS) dos discos SSD Premium v2 pode ser configurado de forma independente a qualquer momento, tornando mais fácil para mais cenários serem econômicos e, ao mesmo tempo, atender às necessidades de desempenho.

Este artigo descreve como configurar um cluster AKS novo ou existente para usar discos SSD Premium v2 do Azure.

Antes de começar

Antes de criar ou atualizar um cluster AKS que possa usar discos SSD Premium v2 do Azure, você precisa criar um cluster AKS na mesma região e zona de disponibilidade que ofereça suporte ao Armazenamento Premium e anexar os discos seguindo as etapas abaixo.

Para um cluster AKS existente, você pode habilitar discos SSD Premium v2 adicionando um novo pool de nós ao cluster e, em seguida, anexar os discos seguindo as etapas abaixo.

Importante

Os discos SSD Premium v2 do Azure exigem pools de nós implantados em regiões que oferecem suporte a esses discos. Para obter uma lista de regiões suportadas, consulte Regiões suportadas por disco SSD Premium v2.

Limitações

  • Os discos SSD Premium v2 do Azure têm certas limitações que você precisa estar ciente. Para obter uma lista completa, consulte Limitações do SSD Premium v2.

Use discos SSD Premium v2 dinamicamente com uma classe de armazenamento

Para usar discos SSD Premium v2 em uma implantação ou conjunto 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, você cria uma classe de armazenamento que faz referência a discos SSD Premium v2. Crie um arquivo chamado azure-pv2-disk-sc.yamle copie no manifesto a seguir.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: premium2-disk-sc
parameters:
   cachingMode: None
   skuName: PremiumV2_LRS
   DiskIOPSReadWrite: "4000"
   DiskMBpsReadWrite: "1000"
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

Crie a classe de armazenamento com o comando kubectl apply e especifique seu arquivo azure-pv2-disk-sc.yaml :

kubectl apply -f azure-pv2-disk-sc.yaml

A saída do comando é semelhante ao seguinte exemplo:

storageclass.storage.k8s.io/premium2-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 chamado azure-pv2-disk-pvc.yamle copie no manifesto a seguir. A declaração solicita um disco chamado premium2-disk que é 1000 GB de tamanho com acesso ReadWriteOnce . A classe de armazenamento premium2-disk-sc é especificada como a classe de armazenamento.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: premium2-disk
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: premium2-disk-sc
  resources:
    requests:
      storage: 1000Gi

Crie a declaração de volume persistente com o comando kubectl apply e especifique seu arquivo azure-pv2-disk-pvc.yaml :

kubectl apply -f azure-pv2-disk-pvc.yaml

A saída do comando é semelhante ao seguinte exemplo:

persistentvolumeclaim/premium2-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 premium2-disk para montar o disco do Azure no caminho /mnt/azure.

Crie um arquivo chamado nginx-premium2.yamle copie no manifesto a seguir.

kind: Pod
apiVersion: v1
metadata:
  name: nginx-premium2
spec:
  containers:
  - name: nginx-premium2
    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: premium2-disk

Crie o pod com o comando kubectl apply , conforme mostrado no exemplo a seguir:

kubectl apply -f nginx-premium2.yaml

A saída do comando é semelhante ao seguinte exemplo:

pod/nginx-premium2 created

Agora você tem um pod em execução com seu /mnt/azure disco do Azure montado no diretório. Essa configuração pode ser vista ao inspecionar seu pod via kubectl describe pod nginx-premium2, como mostrado no exemplo condensado a seguir:

kubectl describe pod nginx-premium2

[...]
Volumes:
  volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  premium2-disk
    ReadOnly:   false
  kube-api-access-sh59b:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason                  Age    From                     Message
  ----    ------                  ----   ----                     -------
  Normal  Scheduled               7m58s  default-scheduler        Successfully assigned default/nginx-premium2 to aks-agentpool-12254644-vmss000006
  Normal  SuccessfulAttachVolume  7m46s  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-ff39fb64-1189-4c52-9a24-e065b855b886"
  Normal  Pulling                 7m39s  kubelet                  Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine"
  Normal  Pulled                  7m38s  kubelet                  Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" in 1.192915667s
  Normal  Created                 7m38s  kubelet                  Created container nginx-premium2
  Normal  Started                 7m38s  kubelet                  Started container nginx-premium2
[...]

Definir IOPS e limites de taxa de transferência

Operações de entrada/saída por segundo (IOPS) e limites de taxa de transferência para o disco SSD do Azure Premium v2 atualmente não são suportados pelo AKS. Para ajustar o desempenho, você pode usar o comando az disk update da CLI do Azure e incluir os --disk-iops-read-write parâmetros e --disk-mbps-read-write .

O exemplo a seguir atualiza o IOPS de disco de leitura/gravação para 5000 e Mbps para 200. Para --resource-group, o valor deve ser o segundo grupo de recursos criado automaticamente para armazenar os nós de trabalho do AKS com a convenção de nomenclatura MC_resourcegroupname_clustername_location. Para obter mais informações, consulte Por que dois grupos de recursos são criados com o AKS?.

O valor para o --name parâmetro é o nome do volume criado usando o StorageClass e começa com pvc-. Para identificar o nome do disco, você pode executar kubectl get pvc ou navegar até o grupo de recursos secundário no portal para localizá-lo. Consulte Gerenciar recursos do portal do Azure para saber mais.

az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200  

Próximos passos