Scalare i carichi di lavoro stateless

Questo documento descrive come scalare i carichi di lavoro stateless esistenti in esecuzione in un cluster Kubernetes air-gap di Google Distributed Cloud (GDC). Devi scalare i pod in esecuzione nei tuoi carichi di lavoro stateless man mano che i requisiti dei carichi di lavoro containerizzati evolvono.

Questo documento è rivolto agli sviluppatori del gruppo di operatori di applicazioni responsabili della gestione dei carichi di lavoro delle applicazioni per la propria organizzazione. Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC air-gapped.

Prima di iniziare

Per completare le attività descritte in questo documento, devi disporre delle seguenti risorse e dei seguenti ruoli:

  • Per eseguire comandi su un cluster Kubernetes, assicurati di disporre delle seguenti risorse:

    • Individua il nome del cluster Kubernetes o chiedi a un membro del gruppo di amministratori della piattaforma qual è il nome del cluster.

    • Accedi e genera il file kubeconfig per il cluster Kubernetes se non ne hai uno.

    • Utilizza il percorso kubeconfig del cluster Kubernetes per sostituire KUBERNETES_CLUSTER_KUBECONFIG in queste istruzioni.

  • Per ottenere le autorizzazioni necessarie per scalare i carichi di lavoro stateless in un cluster condiviso, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Namespace Admin (namespace-admin) nello spazio dei nomi del progetto.

  • Per ottenere le autorizzazioni necessarie per scalare i carichi di lavoro stateless in un cluster standard, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Sviluppatore cluster (cluster-developer) in un cluster standard.

Scala un deployment

Utilizza la funzionalità di scalabilità di Kubernetes per scalare in modo appropriato la quantità di pod in esecuzione nel deployment.

Scalare automaticamente i pod di un deployment

Kubernetes offre la scalabilità automatica per eliminare la necessità di aggiornare manualmente la tua implementazione quando la domanda si evolve. Completa i seguenti passaggi per scalare automaticamente i pod del deployment:

  1. Per assicurarti che Horizontal Pod Autoscaler possa misurare correttamente la percentuale di CPU, imposta la richiesta di risorse CPU nel deployment.

  2. Imposta Horizontal Pod Autoscaler nel deployment:

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

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_KUBECONFIG: il file kubeconfig per il cluster.

    • NAMESPACE: lo spazio dei nomi. Per i cluster condivisi, questo deve essere uno spazio dei nomi del progetto. Per i cluster standard, può essere qualsiasi spazio dei nomi.

    • DEPLOYMENT_NAME: il nome del deployment di cui eseguire la scalabilità automatica.

    • CPU_PERCENT: l'utilizzo medio target della CPU da richiedere, rappresentato come percentuale, in tutti i pod.

    • MIN_NUMBER_REPLICAS: il limite inferiore per il numero di pod che il gestore della scalabilità automatica può eseguire il provisioning.

    • MAX_NUMBER_REPLICAS: il limite superiore per il numero di pod che il gestore della scalabilità automatica può eseguire il provisioning.

  3. Controlla lo stato attuale di Horizontal Pod Autoscaler:

    kubectl get hpa
    

    L'output è simile al seguente:

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

Scalare manualmente i pod di un deployment

Se preferisci scalare manualmente un deployment, esegui:

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

Sostituisci quanto segue:

  • KUBERNETES_CLUSTER_KUBECONFIG: il file kubeconfig per il cluster.

  • NAMESPACE: lo spazio dei nomi. Per i cluster condivisi, questo deve essere uno spazio dei nomi del progetto. Per i cluster standard, può essere qualsiasi spazio dei nomi.

  • DEPLOYMENT_NAME: il nome del deployment in cui eseguire la scalabilità automatica.

  • DEPLOYMENT_NAME: il numero di oggetti Pod replicati nel deployment.

Passaggi successivi