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. Per avere esito positivo, tenere presenti alcune procedure consigliate che è possibile seguire durante lo sviluppo e l'esecuzione di applicazioni nel servizio Diaks.

Questo articolo è in particolare sull'esecuzione del cluster e dei 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). Contenuto dell'articolo:

  • Richieste di risorse pod e limiti.
  • Modi per sviluppare e distribuire applicazioni con Bridge to 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 Web Dias 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 Contenitore di AKS. Le richieste e i limiti dei pod informano l'utilità di pianificazione di Kubernetes quali risorse di calcolo assegnare a un pod.

Richieste di CPU/memoria dei pod

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

Nelle specifiche dei pod è consigliabile e molto 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ò prendere in considerazione le risorse necessarie alle applicazioni per facilitare le decisioni di pianificazione.

Monitorare le prestazioni dell'applicazione per regolare le richieste di pod.

  • Se si sottovalutano le richieste di pod, l'applicazione potrebbe ricevere prestazioni ridotte a causa di un'over-pianificazione di un nodo.
  • Se le richieste sono sovrastimate, l'applicazione potrebbe avere maggiori difficoltà a essere pianificata.

Limiti di CPU/memoria dei pod**

I limiti dei pod impostano la quantità massima di CPU e memoria che un pod può usare.

  • I limiti di memoria definiscono quali pod devono essere completati quando i nodi sono instabili a causa di risorse insufficienti. Senza limiti adeguati impostati, i pod verranno erre fino a quando non viene elevata la pressione delle risorse.
  • Anche se un pod può superare periodicamente il limite di CPU, il pod non verrà superato per il superamento del limite di CPU.

I limiti dei pod definiscono quando un pod ha perso il controllo dell'utilizzo delle risorse. Quando supera il limite, il pod viene contrassegnato per l'evasore. Questo comportamento mantiene l'integrità del nodo e riduce al minimo l'impatto sui pod che condividono il nodo. Se non si imposta un limite di pod, il valore predefinito è 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 orari diversi durante il giorno o la settimana. Determinare i tempi di picco della domanda e allineare i limiti dei pod alle risorse necessarie per soddisfare le esigenze massime.

Importante

Nelle specifiche del 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 prendere in conto le 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 verranno ridotte. Gli amministratori del cluster devono impostare quote di risorse per uno spazio dei nomi che richiede l'impostazione di 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 millicori. Ad esempio, 100m è 0,1 di un core vCPU sottostante.

Nell'esempio di base seguente per un singolo pod NGINX il pod richiede 100m di tempo CPU e 128Mi di memoria. I limiti delle risorse per il pod sono impostati su 250m 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 Web del servizio Bridge to Kubernetes.

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

L'uso del processo di sviluppo e test integrato Bridge to Kubernetes riduce la necessità di ambienti di test locali come minikube. Al contrario, si sviluppano e si testano in un cluster del servizio Web di Servizio Controllo di accesso, anche in cluster protetti e isolati.

Nota

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

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

Indicazioni sulle procedure consigliate

Installare e usare l'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 fornisce:

  • IntelliSense per risorse Kubernetes, grafici Helm e modelli.

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

  • Un controllo IntelliSense per le richieste di risorse o i limiti impostati nelle specifiche del pod:

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

Passaggi successivi

Questo articolo ha illustrato come eseguire il cluster e i carichi di lavoro dal punto di vista dell'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 gli articoli seguenti: