Limites de anexação de volume permanente para nós do GKE


Este documento ajuda você a entender como os limites de vinculação de volume permanente para discos permanentes e Hyperdisks do Compute Engine funcionam nos nós do Google Kubernetes Engine (GKE). Para o dimensionamento adequado do pool de nós e o agendamento correto da carga de trabalho, é fundamental entender o número máximo de volumes permanentes que podem ser anexados a um nó do GKE. Se você quiser mais controle sobre o agendamento de cargas de trabalho, especialmente ao usar vários tipos de disco com limites de anexação variados em uma única instância, use um rótulo de nó para substituir os limites de anexação padrão.

Este documento é destinado a especialistas em armazenamento que criam e alocam armazenamento e administradores do GKE que gerenciam o agendamento de cargas de trabalho e o dimensionamento de pools de nós. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE Enterprise.

Visão geral

No GKE, quando você solicita um PersistentVolume (PV) usando o driver CSI do disco permanente do Compute Engine (pd.csi.storage.gke.io), um volume de armazenamento em blocos é provisionado pelo serviço de disco permanente Google Cloud .

Quando você ativa o driver CSI do disco permanente do Compute Engine (PDCSI) em clusters do GKE, ele calcula e informa o limite de anexação de volume permanente por nó ao kubelet. Com base nessas informações, o programador do Kubernetes toma decisões de programação para garantir que não programe muitos pods que exigem volumes permanentes em um nó que atingiu a capacidade de anexação. Se o driver PDCSI informar limites de anexação imprecisos, mais especificamente um número maior que o limite real, os pods não serão programados e ficarão presos em um estado Pending. Isso pode acontecer em tipos de máquinas de terceira geração, como C3, que têm limites de anexação diferentes para hiperdiscos e discos permanentes.

Entender os limites de anexação de volume permanente

Para gerações de máquinas anteriores à quarta, o driver PDCSI do Compute Engine define um limite agregado de anexação de volume permanente de 128 discos (127 discos de dados mais um disco de inicialização) em todos os tipos de máquina. O limite de anexação se aplica aos volumes de disco permanente e hiperdisco combinados. Para o Hyperdisk, o limite de anexação é determinado pelo tipo de máquina do Compute Engine, pelo número de vCPUs que a máquina tem e pelo tipo específico do Hyperdisk.

Exemplo:

  • Para os tipos de máquinas de quarta geração, como C4, o driver PDCSI informa com precisão um limite de anexação padrão ao Kubernetes, que é calculado com base na contagem de vCPUs do nó. O limite de anexação informado geralmente fica entre 8 e 128 volumes permanentes.
  • Por outro lado, para os tipos de máquina de terceira geração, como C3, o driver PDCSI informa um limite de anexação padrão ao Kubernetes como o limite fixo de 128 discos, o que pode levar a uma falha no agendamento de pods porque o limite real pode ser menor que 128 com base na contagem de vCPUs.

É possível substituir o limite de anexação padrão usando um rótulo de nó.

Consulte os seguintes recursos úteis na documentação do Compute Engine:

Substituir o limite padrão de anexação de volume permanente

Se você tiver requisitos ou configurações de nós específicos em que quer anexar um número específico de volumes permanentes aos nós, substitua o limite padrão de anexação de volume permanente para um pool de nós usando o seguinte rótulo de nó: node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE.

É possível usar esse rótulo de nó nas seguintes versões do GKE:

  • 1.32.4-gke.1698000 e versões mais recentes.
  • 1.33.1-gke.1386000 e versões mais recentes.

Novo pool de nós

Para criar um pool de nós com um limite específico de anexação de volume persistente, execute o seguinte comando:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE

Pool de nós atual

Para modificar o limite atual de anexação de volume persistente de um pool de nós, siga estas etapas:

  1. Atualize o limite de vinculação no pool de nós:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
    
  2. Reinicie o pdcsi-node DaemonSet:

    kubectl rollout restart ds pdcsi-node -n kube-system
    

    O novo limite de anexos é aplicado depois que os pods pdcsi-node estão no estado Running.

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós que você quer criar ou atualizar.
  • CLUSTER_NAME: o nome do cluster do pool de nós que você quer criar ou atualizar.
  • VALUE: um número inteiro entre 0 e 127 para especificar o novo número de volumes permanentes que podem ser anexados. Se você especificar um valor maior que 127, o rótulo do nó será ignorado, e o driver PDCSI usará o limite padrão de anexação de volume permanente. O limite padrão é 128 para máquinas de terceira geração e um valor baseado na contagem de vCPUs para máquinas de quarta geração.

Verificar a substituição

Para verificar se a substituição foi aplicada corretamente, confira os rótulos e a capacidade do nó.

Nos comandos a seguir, substitua NODE_NAME pelo nome de um nó que faz parte do pool de nós específico em que você aplicou o rótulo de substituição do nó.

  1. Verifique os rótulos do nó:

    kubectl get node NODE_NAME --show-labels
    

    A saída precisa incluir o rótulo node-restriction.kubernetes.io/gke-volume-attach-limit-override.

  2. Verifique a capacidade do nó:

    kubectl describe node NODE_NAME
    

    A saída precisa incluir a capacidade attachable-volumes-gce-pd, que precisa corresponder ao valor de substituição definido para o pool de nós. Para mais informações, consulte Verificar recursos alocáveis em um nó.

A seguir