Procedure consigliate per gli sviluppatori di applicazioni per la gestione delle risorse nel servizio Azure Kubernetes (AKS)

Per lo sviluppo e l'esecuzione di applicazioni nel servizio Azure Kubernetes (AKS) è necessario tenere in considerazione alcune aree chiave. Il modo in cui si gestiscono le distribuzioni di applicazioni può influire negativamente sull'esperienza degli utenti finali dei servizi forniti.

Questo articolo è incentrato sull'esecuzione di cluster e carichi di lavoro dal punto di vista dello sviluppatore di applicazioni. Per informazioni sulle procedure consigliate di amministrazione, vedere Procedure consigliate per l'operatore del cluster per l'isolamento e la gestione delle risorse nel servizio Azure Kubernetes (AKS).

Questo articolo include gli argomenti seguenti:

  • Richieste e limiti delle risorse dei pod.
  • Modi per sviluppare, eseguire il debug e distribuire applicazioni con Bridge in Kubernetes e Visual Studio Code.

Definire le richieste di risorse e i limiti del pod

Indicazioni sulle procedure consigliate

Impostare le richieste e i limiti dei pod per tutti i pod nei manifesti YAML. Se il cluster del servizio Azure Kubernetes usa quote di risorse e non si definiscono questi valori, la distribuzione potrebbe essere rifiutata.

Usare le richieste e i limiti dei pod per gestire le risorse di calcolo all'interno di un cluster del servizio Azure Kubernetes. Le richieste e i limiti dei pod informano l'utilità di pianificazione kubernetes delle risorse di calcolo da assegnare a un pod.

Richieste relative a CPU/memoria dei pod

Le richieste di pod definiscono regolarmente una quantità di CPU e memoria impostata per il pod.

Nelle specifiche dei pod è importante definire queste richieste e limiti in base alle informazioni precedenti. Se non si includono questi valori, l'utilità di pianificazione kubernetes non può prendere in considerazione le risorse richieste dalle applicazioni per facilitare le decisioni di pianificazione.

Monitorare le prestazioni dell'applicazione per regolare le richieste dei pod. Se si sottovalutano le richieste di pod, l'applicazione potrebbe ricevere prestazioni ridotte a causa della pianificazione eccessiva di un nodo. Se le richieste sono sovrastimate, l'applicazione potrebbe avere maggiori difficoltà di pianificazione.

Limiti di CPU/memoria dei pod

I limiti dei pod impostano la quantità massima di CPU e memoria che può essere usata da un pod. I limiti di memoria definiscono quali pod devono essere rimossi quando i nodi sono instabili a causa di risorse insufficienti. Senza limiti corretti impostati, i pod vengono rimossi fino a quando non viene sollevato il carico delle risorse. Anche se un pod può superare periodicamente il limite di CPU, il pod non viene rimosso per superare il limite di CPU.

I limiti dei pod definiscono quando un pod perde il controllo dell'utilizzo delle risorse. Quando supera il limite, il pod viene contrassegnato per la rimozione. Questo comportamento mantiene l'integrità dei nodi e riduce al minimo l'impatto sui pod che condividono il nodo. Se non si imposta un limite di pod, per impostazione predefinita viene impostato il valore più alto disponibile in un determinato nodo.

Evitare di impostare un limite di pod superiore a quello che i nodi possono supportare. Ogni nodo servizio Azure Kubernetes riserva una determinata quantità di CPU e memoria per i componenti principali di Kubernetes. L'applicazione potrebbe tentare di consumare troppe risorse del nodo impedendo la corretta esecuzione di altri pod.

Monitorare le prestazioni dell'applicazione in momenti diversi durante il giorno o la settimana. Determinare i tempi di domanda di picco e allineare i limiti dei pod alle risorse necessarie per soddisfare le esigenze massime.

Importante

Nelle specifiche dei pod definire queste richieste e limiti in base alle informazioni precedenti. La mancata inclusione di questi valori impedisce all'utilità di pianificazione Kubernetes di tenere conto delle risorse richieste dalle applicazioni per facilitare la pianificazione delle decisioni.

Se l'utilità di pianificazione inserisce un pod in un nodo con risorse insufficienti, le prestazioni dell'applicazione sono ridotte. Gli amministratori del cluster devono impostare le quote di risorse in uno spazio dei nomi che richiede di impostare richieste e limiti delle risorse. Per altre informazioni, vedere le informazioni sulle quote di risorse nei cluster servizio Azure Kubernetes.

Quando si definisce una richiesta o un limite per la CPU, il valore viene misurato in unità di CPU.

  • 1.0 CPU corrisponde a un core CPU virtuale sottostante sul nodo.
    • La stessa misura viene usata per le GPU.
  • È possibile definire frazioni misurate in millicores. Ad esempio, 100 m è 0,1 di un core vCPU sottostante.

Nell'esempio di base seguente per un singolo pod NGINX, il pod richiede 100 m di tempo cpu e 128Mi di memoria. I limiti delle risorse per il pod sono impostati su 250 m di CPU e 256Mi di memoria.

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi

Per altre informazioni sulle misure e le assegnazioni delle risorse, vedere Managing compute resources for containers (Gestione delle risorse di calcolo per i contenitori).

Sviluppare ed eseguire il debug di applicazioni in un cluster servizio Azure Kubernetes

Indicazioni sulle procedure consigliate

I team di sviluppo devono distribuire ed eseguire il debug in un cluster del servizio Azure Kubernetes usando Bridge to Kubernetes.

Con Bridge to Kubernetes è possibile sviluppare, eseguire il debug e testare le applicazioni direttamente in un cluster del servizio Azure Kubernetes. Gli sviluppatori all'interno di un team collaborano per compilare e testare nel ciclo di vita dell'applicazione. È possibile continuare a usare strumenti esistenti come Visual Studio o Visual Studio Code con l'estensione Bridge to Kubernetes.

L'uso di processi di sviluppo e test integrati con Bridge to Kubernetes riduce la necessità di ambienti di test locali come minikube. È invece possibile sviluppare e testare un cluster del servizio Azure Kubernetes, anche in cluster protetti e isolati.

Nota

Il bridge a Kubernetes è destinato all'uso con le applicazioni in esecuzione in pod e nodi Linux.

Usare l'estensione Visual Studio Code (VS Code) per Kubernetes

Indicazioni sulle procedure consigliate

Installare e usare l'estensione VS Code per Kubernetes quando si scrivono manifesti YAML. È anche possibile usare l'estensione per una soluzione di distribuzione integrata, particolarmente utile per i proprietari delle applicazioni che raramente interagiscono con il cluster servizio Azure Kubernetes.

L'estensione di Visual Studio Code per Kubernetes consente di sviluppare e distribuire applicazioni in servizio Azure Kubernetes. L'estensione offre le funzionalità indicate di seguito:

  • IntelliSense per risorse Kubernetes, grafici Helm e modelli.

  • Possibilità di esplorare, distribuire e modificare le funzionalità per le risorse Kubernetes dall'interno di VS Code.

  • IntelliSense verifica la presenza di richieste di risorse o limiti impostati nelle specifiche dei pod:

    VS Code extension for Kubernetes warning about missing memory limits

Passaggi successivi

Questo articolo è incentrato su come eseguire il cluster e i carichi di lavoro dal punto di vista di un operatore del cluster. Per informazioni sulle procedure consigliate di amministrazione, vedere Procedure consigliate per l'operatore del cluster per l'isolamento e la gestione delle risorse nel servizio Azure Kubernetes (AKS).

Per implementare alcune di queste procedure consigliate, vedere Sviluppare con Bridge to Kubernetes.