Arrestare e avviare un cluster del servizio Azure Kubernetes

Potrebbe non essere necessario eseguire continuamente i carichi di lavoro del servizio Azure Kubernetes. Ad esempio, potrebbe essere disponibile un cluster di sviluppo usato solo durante l'orario di ufficio. Ciò significa che ci sono momenti in cui il cluster potrebbe essere inattivo, che non esegue altro che i componenti di sistema. È possibile ridurre il footprint del cluster ridimensionando tutti i pool di nodi User a 0, ma è ancora necessario che il Systempool esegua i componenti di sistema mentre il cluster è in esecuzione.

Per ottimizzare meglio i costi durante questi periodi, è possibile disattivare o arrestare il cluster. Questa azione arresta il piano di controllo e i nodi agente, consentendo di risparmiare su tutti i costi di calcolo, mantenendo tutti gli oggetti ad eccezione dei pod autonomi. Lo stato del cluster viene archiviato per quando viene avviato di nuovo, consentendo di riprendere la posizione in cui è stato interrotto.

Attenzione

L'arresto del cluster dealloca il piano di controllo e rilascia la capacità. Nelle aree che riscontrano vincoli di capacità, i clienti potrebbero non essere in grado di avviare un cluster arrestato. Non è consigliabile arrestare carichi di lavoro cruciali per questo motivo.

Nota

Le operazioni di avvio del servizio Azure Kubernetes ripristinano tutti gli oggetti da ETCD, ad eccezione dei pod autonomi con gli stessi nomi e età. vale a dire che l'età di un pod continuerà a essere calcolata dal tempo di creazione originale. Questo conteggio continuerà ad aumentare nel tempo, indipendentemente dal fatto che il cluster si trova in uno stato arrestato.

Operazioni preliminari

Questo articolo presuppone che sia presente un cluster del servizio Azure Kubernetes esistente. Se è necessario un cluster del servizio Azure Kubernetes, è possibile crearne uno usando l'interfaccia della riga di comando di Azure, Azure PowerShell o il portale di Azure.

Informazioni sulla funzionalità di arresto/avvio del cluster

Quando si usa la funzionalità di arresto/avvio del cluster, si applicano le condizioni seguenti:

  • Questa funzionalità è supportata solo per i cluster supportati dal set di scalabilità di macchine virtuali.
  • Non è possibile arrestare i cluster che usano la funzionalità di provisioning automatico dei nodi.
  • Lo stato del cluster di un cluster del servizio Azure Kubernetes arrestato viene mantenuto per un massimo di 12 mesi. Se il cluster viene arrestato per più di 12 mesi, non è possibile ripristinare lo stato. Per altre informazioni, vedere i criteri di supporto del servizio Azure Kubernetes.
  • È possibile eseguire operazioni di avvio o eliminazione solo in un cluster del servizio Azure Kubernetes arrestato. Per eseguire altre operazioni, ad esempio il ridimensionamento o l'aggiornamento, è prima necessario avviare il cluster.
  • Se è stato effettuato il provisioning di PrivateEndpoint collegati a cluster privati, è necessario eliminarli e ricrearli nuovamente all'avvio di un cluster del servizio Azure Kubernetes arrestato.
  • Poiché il processo di arresto svuota tutti i nodi, tutti i pod autonomi (ad esempio i pod non gestiti da un oggetto Deployment, StatefulSet, DaemonSet, Job e così via) verranno eliminati.
  • Quando si avvia il backup del cluster, è previsto il comportamento seguente:
    • L'indirizzo IP del server API può cambiare.
    • Se si usa il ridimensionamento automatico del cluster, quando si avvia il cluster il numero di nodi corrente potrebbe non essere compreso tra i valori di intervallo minimo e massimo impostati. Il cluster inizia con il numero di nodi necessari per eseguire i carichi di lavoro, che non sono influenzati dalle impostazioni dell'utilità di scalabilità automatica. Quando il cluster esegue operazioni di ridimensionamento, i valori minimo e massimo incideranno sul numero di nodi corrente e il cluster alla fine verrà attivato e rimarrà nell'intervallo desiderato fino a quando non viene arrestato.

Arrestare un cluster del servizio Azure Kubernetes

  1. Usare il comando az aks stop per arrestare un cluster del servizio Azure Kubernetes in esecuzione, inclusi i nodi e il piano di controllo. L'esempio seguente arresta un cluster denominato myAKSCluster:

    az aks stop --name myAKSCluster --resource-group myResourceGroup
    
  2. Verificare che il cluster sia stato arrestato usando il comando az aks show e confermando che powerState venga visualizzato come Stopped.

    az aks show --name myAKSCluster --resource-group myResourceGroup
    

    L'output dovrebbe essere simile all'output di esempio condensato seguente:

    {
    [...]
      "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_westus2",
      "powerState":{
        "code":"Stopped"
      },
      "privateFqdn": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
    [...]
    }
    

    Se provisioningState mostra Stopping, il cluster non è ancora stato arrestato completamente.

Importante

Se si usano budget di interruzione dei pod, l'operazione di arresto può richiedere più tempo, perché il processo di svuotamento richiederà più tempo per il completamento.

Avviare un cluster del servizio Azure Kubernetes

Attenzione

Dopo aver utilizzato la funzionalità di avvio/arresto nel servizio Azure Kubernetes, è essenziale attendere 15-30 minuti prima di riavviare il cluster del servizio Azure Kubernetes. Questo periodo di attesa è necessario perché l'arresto completo dei servizi pertinenti richiede alcuni minuti. Il tentativo di riavviare il cluster durante questo processo può interrompere il processo di arresto e potenzialmente causare problemi con il cluster o i relativi carichi di lavoro.

  1. Usare il comando az aks start per avviare un cluster del servizio Azure Kubernetes arrestato. Il cluster viene riavviato con lo stato del piano di controllo precedente e il numero di nodi dell'agente. L'esempio seguente avvia un cluster denominato myAKSCluster:

    az aks start --name myAKSCluster --resource-group myResourceGroup
    
  2. Verificare che il cluster abbia iniziato a usare il comando az aks show e confermare che powerState mostri Running.

    az aks show --name myAKSCluster --resource-group myResourceGroup
    

    L'output dovrebbe essere simile all'output di esempio condensato seguente:

    {
    [...]
      "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_westus2",
      "powerState":{
        "code":"Running"
     },
     "privateFqdn": null,
     "provisioningState": "Succeeded",
     "resourceGroup": "myResourceGroup",
    [...]
    }
    

    Se il provisioningState mostra Starting, il cluster non è ancora stato avviato completamente.

Passaggi successivi