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 vengono gestite le distribuzioni delle applicazioni può influire negativamente sull'esperienza dell'utente finale relativamente all'uso 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 di risorse e limiti pod.
  • Modi per sviluppare, eseguire il debug e distribuire applicazioni con Bridge to Kubernetes e Visual Studio Code.

Definire le richieste di risorse e i limiti del pod

Materiale sussidiario 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, è possibile che la distribuzione venga rifiutata.

Usare le richieste e i limiti pod per gestire le risorse di calcolo in un cluster del servizio Azure Kubernetes. Le richieste e i limiti pod comunicano all'utilità di pianificazione di Kubernetes le risorse di calcolo da assegnare a un pod.

Richieste relative a CPU/memoria dei pod

Le richieste di pod definiscono la specifica quantità di CPU e memoria di cui il pod ha bisogno.

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 di Kubernetes non può valutare le risorse necessarie per le decisioni di pianificazione delle applicazioni.

Monitorare le prestazioni dell'applicazione per regolare le richieste di pod. Se si sottovalutano le richieste di pod, le prestazioni dell'applicazione potrebbero risultare 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 pod corrispondono alla quantità massima di CPU e memoria utilizzabile da un pod. I limiti di memoria definiscono quali pod devono essere rimossi quando i nodi sono instabili a causa di risorse insufficienti. Se non si impostano limiti corretti, i pod vengono rimossi fintanto che le risorse continuano a essere insufficienti. Anche se un pod può superare periodicamente il limite di CPU, il pod non viene rimosso a causa del superamento del limite di CPU.

I limiti 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 pod, per impostazione predefinita viene impostato il valore più alto disponibile in un determinato nodo.

Non impostare un limite pod superiore a quello che i nodi sono in grado di 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 la giornata o la settimana. Determinare i tempi del picco della domanda e allineare i limiti 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 di Kubernetes di tenere conto delle risorse di cui le applicazioni hanno bisogno per semplificare la pianificazione delle decisioni.

Se l'utilità di pianificazione inserisce un pod in un nodo con risorse insufficienti, le prestazioni dell'applicazione vengono ridotte. Gli amministratori dei cluster devono impostare quote di risorse in uno spazio dei nomi che richiede di impostare limiti e richieste di 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 millicore. Ad esempio, 100 m corrisponde a 0,1 di un core vCPU sottostante.

Nell'esempio di base seguente riferito a 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

Materiale sussidiario 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 ed eseguire test durante il ciclo di vita dell'applicazione. Con l’estensione Bridge to Kubernetes è possibile continuare a usare gli strumenti esistenti come Visual Studio o Visual Studio Code.

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

Nota

Bridge to Kubernetes è destinato all'uso con le applicazioni in esecuzione in pod e nodi Linux.

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

Materiale sussidiario sulle procedure consigliate

Installare e usare l'estensione VS Code per Kubernetes per la scrittura di 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 le risorse di Kubernetes, grafici Helm e modelli.

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

  • IntelliSense ricerca le richieste di risorse o i limiti impostati nelle specifiche dei pod:

    Estensione di VS Code per Kubernetes con un avviso sull'assenza di limiti di memoria

Passaggi successivi

Questo articolo sulle procedure consigliate ha illustrato come eseguire il cluster e i carichi di lavoro dal punto di vista dell'operatore di un 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.