Dimensione cargas de trabalho sem estado

Este documento descreve como dimensionar cargas de trabalho sem estado existentes executadas num cluster do Kubernetes isolado do ar do Google Distributed Cloud (GDC). Tem de dimensionar os pods em execução nas suas cargas de trabalho sem estado à medida que os requisitos da carga de trabalho do contentor evoluem.

Este documento destina-se a programadores no grupo de operadores de aplicações que são responsáveis pela gestão das cargas de trabalho das aplicações para a respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

Antes de começar

Para concluir as tarefas neste documento, tem de ter os seguintes recursos e funções:

  • Para executar comandos num cluster do Kubernetes, certifique-se de que tem os seguintes recursos:

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

    • Inicie sessão e gere o ficheiro kubeconfig para o cluster do Kubernetes, se não tiver um.

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

  • Para receber as autorizações necessárias para dimensionar cargas de trabalho sem estado num cluster partilhado, peça ao administrador de IAM da organização que lhe conceda a função de administrador do espaço de nomes (namespace-admin) no espaço de nomes do projeto.

  • Para receber as autorizações necessárias para dimensionar cargas de trabalho sem estado num cluster padrão, peça ao administrador de IAM da organização para lhe conceder a função de programador de clusters (cluster-developer) num cluster padrão.

Dimensiona uma implementação

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

Escalone automaticamente os pods de uma implementação

O Kubernetes oferece a escala automática para eliminar a necessidade de atualizar manualmente a sua implementação quando a procura evolui. Conclua os passos seguintes para ajustar automaticamente a escala dos pods da sua implementação:

  1. Para garantir que o escalador automático de agrupamentos horizontal pode medir adequadamente a percentagem de CPU, defina o pedido de recursos de CPU na sua implementação.

  2. Defina o redimensionador automático de pods horizontal na sua implementaçã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 o seguinte:

    • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster.

    • NAMESPACE: o espaço de nomes. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

    • DEPLOYMENT_NAME: o nome da implementação para ajustar automaticamente a escala.

    • CPU_PERCENT: a utilização média da CPU alvo a pedir, representada como uma percentagem, em todos os pods.

    • MIN_NUMBER_REPLICAS: o limite inferior para o número de agrupamentos que o redimensionador automático pode aprovisionar.

    • MAX_NUMBER_REPLICAS: o limite superior para o número de agrupamentos que o escalador automático pode aprovisionar.

  3. Verifique o estado atual do Horizontal Pod Autoscaler:

    kubectl get hpa
    

    O resultado é semelhante ao seguinte:

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

Dimensione manualmente os pods de uma implementação

Se preferir dimensionar manualmente uma implementação, execute o seguinte comando:

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

Substitua o seguinte:

  • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster.

  • NAMESPACE: o espaço de nomes. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

  • DEPLOYMENT_NAME: o nome da implementação na qual fazer o ajuste de escala automático.

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

O que se segue?