Escalonar cargas de trabalho sem estado

Este documento descreve como escalonar cargas de trabalho sem estado em execução em um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico. É necessário escalonar os pods em execução nas cargas de trabalho sem estado à medida que os requisitos de carga de trabalho do contêiner evoluem.

Este documento é destinado a desenvolvedores do grupo de operadores de aplicativos responsáveis por gerenciar cargas de trabalho de aplicativos na organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, você precisa dos seguintes recursos e papéis:

  • Para executar comandos em um cluster do Kubernetes, verifique se você tem os seguintes recursos:

    • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma.

    • Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes se você não tiver um.

    • Use o caminho kubeconfig do cluster do Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

  • Para receber as permissões necessárias para escalonar cargas de trabalho sem estado em um cluster compartilhado, peça ao administrador do IAM da organização para conceder a você o papel de administrador do namespace (namespace-admin) no namespace do projeto.

  • Para receber as permissões necessárias para escalonar cargas de trabalho sem estado em um cluster padrão, peça ao administrador do IAM da organização para conceder a você o papel de desenvolvedor de cluster (cluster-developer) em um cluster padrão.

Escalonar uma implantação

Use a funcionalidade de escalonamento do Kubernetes para dimensionar adequadamente a quantidade de pods em execução na sua implantação.

Fazer o escalonamento automático dos pods de uma implantação

O Kubernetes oferece escalonamento automático para eliminar a necessidade de atualizar manualmente sua implantação quando a demanda evolui. Siga estas etapas para fazer o escalonamento automático dos pods da sua implantação:

  1. Para garantir que o escalonador automático de pods horizontal possa medir adequadamente a porcentagem de CPU, defina a solicitação de recurso de CPU na sua implantação.

  2. Defina o escalonador automático horizontal de pods na sua implantação:

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        -n NAMESPACE \
        autoscale deployment DEPLOYMENT_NAME \
        --cpu-percent=CPU_PERCENT \
        --min=MIN_NUMBER_REPLICAS \
        --max=MAX_NUMBER_REPLICAS
    

    Substitua:

    • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster.

    • NAMESPACE: o namespace. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

    • DEPLOYMENT_NAME: o nome da implantação a ser escalonada automaticamente.

    • CPU_PERCENT: a meta de uso médio da CPU a ser solicitada, representada como uma porcentagem, em todos os pods.

    • MIN_NUMBER_REPLICAS: o limite inferior para o número de pods que o escalonador automático pode provisionar.

    • MAX_NUMBER_REPLICAS: o limite superior para o número de pods que o escalonador automático pode provisionar.

  3. Verifique o status atual do escalonador automático horizontal de pods:

    kubectl get hpa
    

    O resultado será o seguinte:

    NAME              REFERENCE                          TARGET    MINPODS   MAXPODS   REPLICAS   AGE
    DEPLOYMENT_NAME   Deployment/DEPLOYMENT_NAME/scale   0% / 50%  1         10        1          18s
    

Escalonar manualmente os pods de uma implantação

Se você preferir escalonar uma implantação manualmente, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    scale deployment DEPLOYMENT_NAME \
    --replicas NUMBER_OF_REPLICAS

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster.

  • NAMESPACE: o namespace. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome da implantação em que fazer o escalonamento automático.

  • DEPLOYMENT_NAME: o número de objetos Pod replicados na implantação.

A seguir