Partilhar via


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.

  1. 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
    
  2. Crie a classe de armazenamento usando o kubectl apply comando e especifique seu azure-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.

  1. 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.

  2. Crie a declaração de volume persistente usando o kubectl apply comando e especifique seu azure-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.

  1. 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
    
  2. Crie o pod usando kubectl apply o comando e especifique seu nginx-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.

  3. Veja os detalhes de configuração usando o kubectl describe pod comando e especifique seu nginx-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