Condividi tramite


Prospettiva del framework Azure Well-Architected sul servizio Azure Kubernetes (AKS)

Il servizio Azure Kubernetes è un servizio Kubernetes gestito che è possibile usare per distribuire e gestire applicazioni in contenitori. Analogamente ad altri servizi gestiti, AKS affida gran parte del sovraccarico operativo ad Azure, offrendo al tempo stesso funzionalità di disponibilità elevata, scalabilità e portabilità per il carico di lavoro.

Questo articolo presuppone che, in qualità di architetto, tu abbia esaminato l'albero delle decisioni di calcolo e abbia scelto AKS come ambiente di calcolo per il tuo carico di lavoro. Le linee guida contenute in questo articolo forniscono raccomandazioni sull'architettura mappate ai principi dei pilastri di Azure Well-Architected Framework .

Importante

Come usare questa guida

Ogni sezione include un elenco di controllo di progettazione che presenta aree di interesse per l'architettura insieme alle strategie di progettazione localizzate nell'ambito della tecnologia.

Sono incluse anche raccomandazioni per le funzionalità tecnologiche che possono aiutare a materializzare tali strategie. Le raccomandazioni non rappresentano un elenco completo di tutte le configurazioni disponibili per il servizio Azure Kubernetes e le relative dipendenze. Vengono invece elencate le raccomandazioni principali mappate alle prospettive di progettazione. Usare le raccomandazioni per creare un modello di verifica o per ottimizzare gli ambienti esistenti.

Architettura fondamentale che illustra le raccomandazioni principali: architettura di riferimento AKS.

ambito della tecnologia

Questa revisione è incentrata sulle decisioni correlate per le risorse di Azure seguenti:

  • Servizio Azure Kubernetes (AKS)

Quando si discutono le migliori pratiche dei pilastri del Framework Well-Architected per AKS, è importante distinguere tra cluster e carico di lavoro. Le procedure consigliate per il cluster sono una responsabilità condivisa tra l'amministratore del cluster e il provider di risorse, mentre le procedure consigliate per il carico di lavoro sono il dominio di uno sviluppatore. Questo articolo include considerazioni e consigli per ognuno di questi ruoli.

Nota

I pilastri seguenti includono un elenco di controllo di progettazione e un elenco di raccomandazioni che indicano se ogni scelta è applicabile all'architettura del cluster , all'architettura del carico di lavoro o a entrambi.

Affidabilità

Lo scopo del pilastro Affidabilità è fornire funzionalità continue la creazione di resilienza sufficienti e la possibilità di recuperare rapidamente dagli errori.

principi di progettazione dell'affidabilità forniscono una strategia di progettazione di alto livello applicata per singoli componenti, flussi di sistema e sistema nel suo complesso.

Elenco di controllo della progettazione

Avvia la tua strategia di progettazione in base all'elenco di controllo di revisione della progettazione per Affidabilità. Determinare la rilevanza per i requisiti aziendali tenendo presenti le funzionalità del servizio Azure Kubernetes e le relative dipendenze. Estendere la strategia per includere altri approcci in base alle esigenze.

  • (Cluster) Costruire ridondanza per migliorare la resilienza. Utilizzare le zone di disponibilità per i cluster AKS come parte della strategia di resilienza per aumentare la disponibilità quando si distribuisce in una singola regione. Molte aree di Azure forniscono zone di disponibilità. Le zone sono abbastanza vicine per avere connessioni a bassa latenza, ma abbastanza a parte per ridurre la probabilità che le interruzioni locali influiscano su più di una zona.

    Per i carichi di lavoro critici, distribuire più cluster in aree di Azure diverse. Distribuendo geograficamente i cluster del servizio Azure Kubernetes, è possibile ottenere una maggiore resilienza e ridurre al minimo gli effetti degli errori a livello di area. Una strategia di multiregione consente di ottimizzare la disponibilità e garantire la continuità aziendale. I carichi di lavoro con connessione Internet devono usare frontdoor di Azure o di Gestione traffico di Azure per instradare il traffico a livello globale tra i cluster del servizio Azure Kubernetes. Per altre informazioni, vedere la strategia multiregione .

    Pianificare lo spazio degli indirizzi IP per assicurarsi che il cluster possa ridimensionare e gestire in modo affidabile il traffico di failover in topologie con più cluster.

  • (Cluster e carico di lavoro) Monitorare l'affidabilità e gli indicatori di integrità complessivi del cluster e dei carichi di lavoro. Raccogliere log e metriche per monitorare l'integrità del carico di lavoro, identificare le tendenze di prestazioni e affidabilità e risolvere i problemi. Consultare le best practices per il monitoraggio di Kubernetes con Azure Monitor e la guida sulla modellazione dell'integrità Well-Architected per i carichi di lavoro per aiutare a progettare la soluzione di monitoraggio dell'affidabilità e dell'integrità per la soluzione AKS.

    Assicurarsi che i carichi di lavoro siano compilati per supportare la scalabilità orizzontale e segnalare l'idoneità e l'integrità delle applicazioni.

  • (Cluster e carico di lavoro) Ospitare i pod delle applicazioni nei pool di nodi utente. Isolando i pod di sistema dai carichi di lavoro delle applicazioni, è possibile assicurarsi che i servizi essenziali di AKS non siano interessati dalle richieste di risorse o dai potenziali problemi causati da un carico di lavoro che utilizza i pool di nodi utente.

    Assicurati che il tuo carico di lavoro venga eseguito nei pool di nodi utente e scegli le dimensioni di SKU corrette. Includere almeno due nodi per i pool di nodi utente e tre nodi per il pool di nodi di sistema.

  • (Cluster e carichi di lavoro) Includi l'accordo sul livello di servizio (SLA) di uptime AKS nei tuoi obiettivi di disponibilità e ripristino. Per definire gli obiettivi di affidabilità e ripristino per il cluster e i carichi di lavoro, segui le linee guida riportate in Raccomandazioni per definire gli obiettivi di affidabilità. Formulare quindi una progettazione che soddisfi tali destinazioni.

Consigli

Elemento consigliato Vantaggio
(Cluster e carico di lavoro) Controlla la pianificazione dei pod utilizzando i selettori di nodo e l'affinità.

In AKS, il pianificatore di Kubernetes può isolare logicamente i carichi di lavoro in base all'hardware nel nodo. A differenza di tolerazioni, i pod che non dispongono di un selettore di nodi corrispondenti possono essere pianificati in nodi etichettati, ma la priorità viene assegnata ai pod che definiscono il selettore del nodo corrispondente.
L'affinità dei nodi comporta una maggiore flessibilità, che consente di definire cosa accade se il pod non può essere associato a un nodo.
(Cluster) Scegliere il plug-in di rete appropriato in base ai requisiti di rete e al dimensionamento del cluster.

Diversi plug-in di rete offrono diversi livelli di funzionalità. Azure Container Networking Interface (Azure CNI) è necessario per scenari specifici, ad esempio pool di nodi basati su Windows, alcuni requisiti di rete e criteri di rete Kubernetes.

Per altre informazioni, vedere Kubenet e Azure CNI.
Il plug-in di rete corretto può contribuire a garantire una migliore compatibilità e prestazioni.
(Cluster e carico di lavoro) Usare il contratto di servizio del tempo di attività del servizio Azure Kubernetes per i cluster di livello di produzione. Il carico di lavoro può supportare obiettivi di disponibilità più elevati grazie alle garanzie di disponibilità superiori dell'endpoint del server API di Kubernetes per i cluster AKS.
(Cluster) Usa zone di disponibilità per ottimizzare la resilienza all'interno di una regione di Azure distribuendo i nodi agenti di AKS tra datacenter separati fisicamente.

Se esistono requisiti di colocalità, usare una normale distribuzione del servizio Azure Kubernetes basata su set di scalabilità di macchine virtuali in una singola zona o usare gruppi di posizionamento di prossimità per ridurre al minimo la latenza internade.
Distribuendo i pool di nodi tra più zone, i nodi continueranno a funzionare anche se una zona si arresta.
(Cluster e carico di lavoro) Definire le richieste e i limiti delle risorse dei pod nei manifesti di distribuzione dell'applicazione. Imporre questi limiti usando i Criteri di Azure. I limiti delle risorse di CPU e memoria del contenitore sono necessari per evitare l'esaurimento delle risorse nel cluster Kubernetes.
(Cluster e carico di lavoro) Mantenere il pool di nodi di sistema isolato dai carichi di lavoro dell'applicazione.

I pool di nodi di sistema richiedono una SKU di macchine virtuali con almeno 2 vCPU e 4 GB di memoria. È consigliabile usare 4 vCPU o più. Per altre informazioni, vedere pool di nodi di sistema e utente .
Il pool di nodi di sistema ospita pod di sistema critici essenziali per il piano di controllo del cluster. Isolando questi pod di sistema dai carichi di lavoro dell'applicazione, si garantisce che i servizi essenziali non siano interessati dalle richieste di risorse o dai potenziali problemi causati da un carico di lavoro.
(Cluster e carico di lavoro) Separare le applicazioni in pool di nodi dedicati in base a requisiti specifici. Evitare un numero elevato di pool di nodi per ridurre il sovraccarico di gestione. Le applicazioni possono condividere la stessa configurazione e necessitano di macchine virtuali abilitate per GPU, CPU o macchine virtuali ottimizzate per la memoria o la possibilità di ridimensionare fino a zero. Dedicando pool di nodi a applicazioni specifiche, è possibile garantire che ogni applicazione ottenga le risorse necessarie senza effettuare il provisioning eccessivo o sottoutilizzare le risorse.
(Cluster) Usare un gateway NAT per i cluster che eseguono carichi di lavoro che effettuano molte connessioni in uscita simultanee. Il gateway NAT di Azure supporta il traffico in uscita affidabile su larga scala e consente di evitare problemi di affidabilità applicando limitazioni di Azure Load Balancer al traffico in uscita simultaneo elevato.

Sicurezza

Lo scopo del pilastro Sicurezza è fornire garanzie di riservatezza, integrità e disponibilità ai carichi di lavoro.

I principi di progettazione Sicurezza forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi applicando approcci alla progettazione tecnica di AKS.

Elenco di controllo della progettazione

Avvia la tua strategia di progettazione in base alla checklist di revisione della progettazione per la sicurezza e identifica vulnerabilità e controlli per migliorare il profilo di sicurezza. Acquisire familiarità con concetti di sicurezza di AKS e valutare le raccomandazioni sulla protezione avanzata in base al benchmark Kubernetes CIS . Estendere la strategia per includere altri approcci in base alle esigenze.

  • (Cluster) integrare con Microsoft Entra ID per identità e gestione degli accessi. Centralizzare la gestione delle identità per il cluster usando Microsoft Entra ID. Qualsiasi modifica all'account utente o allo stato del gruppo viene aggiornata automaticamente nell'accesso al cluster servizio Azure Kubernetes. Definire l'identità come perimetro di sicurezza primario. Gli sviluppatori e i proprietari delle applicazioni del cluster Kubernetes hanno bisogno di accedere a risorse diverse.

    Usare il controllo degli accessi in base al ruolo di Kubernetes con l'ID Entra di Microsoft per accesso con privilegi minimi. Proteggere la configurazione e i segreti riducendo al minimo l'allocazione dei privilegi di amministratore.

  • (Cluster) integra con gli strumenti di monitoraggio della sicurezza e gestione delle informazioni ed eventi di sicurezza. Usa Microsoft Defender per Contenitori con Microsoft Sentinel per rilevare e rispondere rapidamente alle minacce nei cluster e ai carichi di lavoro che vi si eseguono. Abilitare connettore del servizio Azure Kubernetes per Microsoft Sentinel per trasmettere i log di diagnostica del servizio Azure Kubernetes in Microsoft Sentinel.

  • (Cluster e workload) Implementare la segmentazione e i controlli di rete. Per impedire l'esfiltrazione dei dati, assicurarsi che sia consentito solo il traffico autorizzato e sicuro e contenere il raggio di esplosione di una violazione della sicurezza.

    Valuta l'uso di un cluster AKS privato per aiutare ad assicurare che il traffico di gestione del cluster verso il server API rimanga nella tua rete privata. In alternativa, usare l'elenco di elementi consentiti del server API per i cluster pubblici.

  • (Carico di lavoro) Usare un web application firewall (WAF) per analizzare il traffico in ingresso per individuare potenziali attacchi. WAF può rilevare e mitigare le minacce in tempo reale per bloccare il traffico dannoso prima che raggiunga le applicazioni. Offre una protezione affidabile da attacchi comuni basati sul Web, ad esempio SQL injection, scripting tra siti e altre vulnerabilità di Open Web Application Security Project. Alcuni servizi di bilanciamento del carico, ad esempio il Azure Application Gateway o il Azure Front Door, hanno un WAF integrato.

  • (Carico di lavoro) Mantenere una supply chain software robusta per un carico di lavoro. Assicurarsi che la pipeline di integrazione continua e distribuzione continua sia rinforzata con l'analisi compatibile con i contenitori.

  • (Cluster e carico di lavoro) Implementare una protezione aggiuntiva per carichi di lavoro sicuri specializzati. Se il cluster deve eseguire un carico di lavoro sensibile, potrebbe essere necessario distribuire un cluster privato. Ecco alcuni esempi:

Consigli

Elemento consigliato Vantaggio
(Cluster) Utilizzare identità gestite sul cluster. È possibile evitare il sovraccarico associato alla gestione e alla rotazione dei principi del servizio.
(Carico di lavoro) Usare il Workload ID di Microsoft Entra con AKS per accedere alle risorse protette da Microsoft Entra, come Azure Key Vault e Microsoft Graph, dal proprio carico di lavoro. Usare gli ID del carico di lavoro AKS per proteggere l'accesso alle risorse di Azure utilizzando il controllo degli accessi in base al ruolo (RBAC) di Microsoft Entra ID senza dover gestire le credenziali direttamente nel codice.
(Cluster) Usare Microsoft Entra ID per eseguire l'autenticazione con Registro Container di Azure da AKS. Utilizzando Microsoft Entra ID, AKS può eseguire l'autenticazione con il Registro dei contenitori senza l'uso di segreti imagePullSecrets.
(Cluster) Proteggi il traffico di rete verso il server API utilizzando il cluster AKS privato se i requisiti del carico di lavoro richiedono livelli di segmentazione più elevati. Per impostazione predefinita, il traffico di rete tra i pool di nodi e il server API attraversa la rete backbone Microsoft. Usando un cluster privato, è possibile garantire che il traffico di rete verso il server API rimanga solo nella rete privata.
(Cluster) Per i cluster AKS pubblici, usare intervalli di indirizzi IP autorizzati dal server API. Includere origini come gli indirizzi IP pubblici degli agenti di compilazione della distribuzione, la gestione delle operazioni IT e il punto di uscita dei pool di nodi, come ad esempio il Firewall di Azure. Quando si utilizzano cluster pubblici, è possibile ridurre significativamente la superficie di attacco del proprio cluster AKS limitando il traffico che può raggiungere il server API dei cluster.
(Cluster) Proteggere il server API usando RBAC di Microsoft Entra ID.

Disabilitare gli account locali per applicare l'accesso ai cluster utilizzando le identità basate su Microsoft Entra ID.
La protezione dell'accesso al server API Kubernetes è una delle operazioni più importanti che è possibile eseguire per proteggere il cluster. Integrare RBAC di Kubernetes con Microsoft Entra ID per controllare l'accesso al server API.
(Cluster) Usare criteri di rete di Azure o Calico. Usando i criteri, è possibile proteggere e controllare il traffico di rete tra i pod in un cluster. Calico offre un set più completo di funzionalità, tra cui l'ordinamento e la priorità dei criteri, le regole di negazione e regole di corrispondenza più flessibili.
(Cluster) Proteggere cluster e pod usando Politica di Azure. Azure Policy può aiutarti ad applicare, su larga scala, le politiche e le misure di sicurezza nei tuoi cluster in modo centralizzato e coerente. Può anche controllare quali funzioni sono concesse ai pod e rilevare se qualcosa è in esecuzione in violazione dei criteri aziendali.
(Cluster) Proteggere l'accesso ai contenitori alle risorse. Limitare l'accesso alle azioni che i contenitori possono eseguire. Concedere il minor numero possibile di autorizzazioni ed evitare l'uso dell'accesso radice o dell'escalation dei privilegi.

Per i contenitori basati su Linux, vedere accesso ai contenitori di sicurezza alle risorse utilizzando funzionalità di sicurezza Linux integrate.
Limitando le autorizzazioni ed evitando l'uso dell'utente root o l'escalation dei privilegi, è possibile ridurre il rischio di violazioni della sicurezza. È possibile assicurarsi che, anche se un contenitore è compromesso, il potenziale danno viene ridotto al minimo.
(Cluster) Controllare il traffico in uscita del cluster assicurandosi che il traffico in uscita del cluster passi attraverso un punto di sicurezza di rete, ad esempio firewall di Azure o un proxy HTTP. Instradando il traffico in uscita tramite Firewall di Azure o un proxy HTTP, è possibile applicare criteri di sicurezza che impediscono l'accesso non autorizzato e l'esfiltrazione di dati. Questo approccio semplifica anche l'amministrazione dei criteri di sicurezza e semplifica l'applicazione di regole coerenti nell'intero cluster del servizio Azure Kubernetes.
(Cluster) Usare id carico di lavoro Microsoft Entra e archivio segreti driver CSI con Key Vault. Queste funzionalità consentono di proteggere e ruotare segreti, certificati e stringhe di connessione in Key Vault usando la crittografia avanzata. Forniscono un log di controllo di accesso e mantengono i segreti principali fuori dalla pipeline di distribuzione.
(Cluster) Usare Microsoft Defender per contenitori. Microsoft Defender per contenitori consente di monitorare e gestire la sicurezza dei cluster, dei contenitori e delle relative applicazioni.

Ottimizzazione costi

L'ottimizzazione dei costi è incentrata su rilevare modelli di spesa, assegnare priorità agli investimenti in aree critiche e ottimizzare in altri per soddisfare il budget dell'organizzazione rispettando i requisiti aziendali.

I principi di progettazione Ottimizzazione costi forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi e fare compromessi in base alle esigenze nella progettazione tecnica correlata al servizio Azure Kubernetes e al relativo ambiente.

Elenco di controllo della progettazione

Avvia la tua strategia di progettazione basandoti sull'elenco di controllo della revisione della progettazione per l'ottimizzazione dei costi degli investimenti. Ottimizzare la progettazione in modo che il carico di lavoro sia allineato al budget allocato per il carico di lavoro. La progettazione deve usare le funzionalità di Azure appropriate, monitorare gli investimenti e trovare opportunità per ottimizzare nel tempo.

  • (Cluster) Includere i piani tariffari per il servizio Azure Kubernetes nel modello di costo. Per stimare i costi, usare il calcolatore prezzi di Azure e testare piani di configurazione e pagamento diversi nel calcolatore.

  • (Cluster) Ottenere le tariffe migliori per il carico di lavoro. Usare lo SKU di macchina virtuale appropriato per ogni pool di nodi perché influisce direttamente sul costo per l'esecuzione dei carichi di lavoro. La scelta di una macchina virtuale ad alte prestazioni senza un utilizzo appropriato può comportare una spesa sprecato. La selezione di una macchina virtuale meno potente può causare problemi di prestazioni e tempi di inattività maggiori.

    Se hai pianificato correttamente la capacità e il carico di lavoro è prevedibile e durerà per un lungo periodo di tempo, sottoscrivi le prenotazioni di Azure o un piano di risparmio per ridurre i costi delle risorse.

    Scegliere Azure Spot Virtual Machines per usare la capacità di Azure non utilizzata con sconti significativi. Questi sconti possono raggiungere fino a 90% di prezzi con pagamento in base al consumo. Se Azure necessita di capacità, l'infrastruttura di Azure rimuove i nodi Spot.

    Se si esegue AKS on-premises o al margine, è anche possibile usare Vantaggio Azure Hybrid per ridurre i costi quando si eseguono applicazioni containerizzate in tali scenari.

  • (Cluster e carico di lavoro) Ottimizzare i costi dei componenti del carico di lavoro. Scegliere l'area più conveniente per il carico di lavoro. Valutare i requisiti di costo, latenza e conformità per assicurarsi di eseguire il carico di lavoro in modo conveniente e che non influisca sui clienti o creare costi di rete aggiuntivi. L'area in cui si distribuisce il carico di lavoro in Azure può influire significativamente sul costo. A causa di molti fattori, il costo delle risorse varia per ogni area in Azure.

    Gestire immagini di piccole dimensioni e ottimizzate per ridurre i costi perché i nuovi nodi devono scaricare tali immagini. Gli errori o i timeout delle richieste utente all'avvio dell'applicazione possono causare un sovradimensionamento. Creare immagini in modo che consentano l'avvio del contenitore il prima possibile per evitare errori e timeout.

    Esaminare le raccomandazioni dell'Ottimizzazione dei costi nella Procedura consigliata per il monitoraggio di Kubernetes con Azure Monitor per determinare la strategia di monitoraggio migliore per i carichi di lavoro. Analizzare le metriche delle prestazioni, a partire da CPU, memoria, archiviazione e rete, per identificare le opportunità di ottimizzazione dei costi in base a cluster, nodi e spazio dei nomi.

  • (Cluster e carico di lavoro) Ottimizzare i costi di ridimensionamento del carico di lavoro. prendere in considerazione configurazioni di scalabilità verticale e orizzontale alternative per ridurre i costi di ridimensionamento, rispettando comunque tutti i requisiti del carico di lavoro. Usare i ridimensionatori automatici per aumentare le prestazioni quando i carichi di lavoro sono meno attivi.

  • (Cluster e carico di lavoro) Raccogliere e analizzare i dati sui costi. La base dell'abilitazione dell'ottimizzazione dei costi è la distribuzione di un cluster che consente di risparmiare sui costi. Sviluppare una mentalità orientata all'efficienza dei costi che includa la collaborazione tra finanza, operazioni e team di progettazione per favorire l'allineamento sugli obiettivi di risparmio sui costi e portare trasparenza ai costi del cloud.

Consigli

Elemento consigliato Vantaggio
(Cluster e carico di lavoro) Allineare selezione dello SKU del servizio Azure Kubernetes e alle dimensioni del disco gestito con i requisiti del carico di lavoro. La corrispondenza tra la selezione e le richieste del carico di lavoro consente di garantire che non si paghino risorse non necessarie.
(Cluster) Scegliere la tipologia di istanze di macchine virtuali corrette per i pool di nodi Azure Kubernetes .

Per determinare i tipi di istanza di macchina virtuale corretti, prendere in considerazione le caratteristiche del carico di lavoro, i requisiti delle risorse e le esigenze di disponibilità.
La selezione del tipo di istanza di macchina virtuale corretta è fondamentale perché influisce direttamente sul costo per l'esecuzione di applicazioni su AKS. La scelta di un'istanza ad alte prestazioni senza un utilizzo appropriato può comportare una spesa inutile. La scelta di un'istanza meno potente può causare problemi di prestazioni e tempi di inattività maggiori.
(Cluster) Scegliere le macchine virtuali in base all'architettura di Azure Resource Manager più efficiente. AKS supporta la creazione di pool di nodi Arm64 e una combinazione di nodi dell'architettura Intel e Resource Manager all'interno di un cluster. L'architettura arm64 offre un rapporto prezzo-prestazioni migliore grazie all'utilizzo ridotto della potenza e alle prestazioni di calcolo efficienti. Queste funzionalità possono offrire prestazioni migliori a un costo inferiore.
(Cluster) Abilita l'autoscaler del cluster per ridurre automaticamente il numero di nodi agenti in risposta a un eccesso di capacità delle risorse. Il ridimensionamento automatico del numero di nodi nel cluster del servizio Azure Kubernetes consente di eseguire un cluster efficiente quando la domanda è bassa e aumentare le prestazioni in caso di aumento della domanda.
(Cluster) Abilitare l'autoprovisioning dei nodi per automatizzare la selezione dello SKU VM. L'autoprovision del nodo semplifica il processo di selezione dello SKU e decide, in base ai requisiti delle risorse dei pod in sospeso, la configurazione VM ottimale per eseguire i carichi di lavoro nel modo più efficiente e conveniente.
(Carico di lavoro) Usare HorizontalPodAutoscaler per regolare il numero di pod in una distribuzione a seconda dell'utilizzo della CPU o di altre metriche. Riduzione automatica del numero di pod quando la domanda è bassa e aumento del numero di pod quando la domanda aumenta, risulta in un'operazione più efficiente in termini di costi del carico di lavoro.
(Carico di lavoro) Usa VerticalPodAutoscaler (anteprima) per ottimizzare i tuoi pod e impostare in modo dinamico richieste e limiti in base all'utilizzo storico. Impostando richieste di risorse e limiti per i contenitori per ciascun workload, VerticalPodAutoscaler libera CPU e memoria per altri pod e garantisce un utilizzo efficace dei cluster di Azure Kubernetes Service.
(Cluster) Configurare il componente aggiuntivo di analisi dei costi AKS. L'estensione per l'analisi dei costi nei cluster consente di ottenere informazioni dettagliate sui costi associati a diverse risorse Kubernetes nei namespace o nei cluster.

Eccellenza operativa

L'eccellenza operativa si concentra principalmente sulle pratiche di sviluppo , sull'osservabilità e sulla gestione dei rilasci.

I principi di progettazione eccellenza operativa offrono una strategia di progettazione di alto livello per soddisfare i requisiti operativi del carico di lavoro.

Elenco di controllo della progettazione

Avvia la tua strategia di progettazione basata sull'elenco di controllo di revisione della progettazione per l'Eccellenza Operativa, per definire i processi di osservabilità, test e distribuzione. Consulta le migliori pratiche di Azure Kubernetes e la guida alle operazioni successive per informazioni sulle considerazioni chiave da comprendere e implementare.

  • (Cluster) Implementare un approccio di distribuzione IaC (Infrastructure as Code). Usare un approccio di distribuzione dichiarativo basato su modelli usando Bicep, Terraform o strumenti simili. Assicurarsi che tutte le distribuzioni siano ripetibili, tracciabili e archiviate in un repository del codice sorgente. Per ulteriori informazioni, vedere le guide introduttive nella documentazione del servizio AKS.

  • (Cluster e carico di lavoro) Automatizzare le distribuzioni dell'infrastruttura e dei carichi di lavoro. Usare soluzioni software standard per gestire, integrare e automatizzare la distribuzione del cluster e dei carichi di lavoro. Integrare le pipeline di distribuzione con il sistema di controllo del codice sorgente e incorporare test automatizzati.

    Creare un processo automatizzato per assicurarsi che i cluster vengano avviati con le configurazioni e le distribuzioni necessarie a livello di cluster. Questo processo viene in genere eseguito usando GitOps.

    Usare processi di distribuzione ripetibili e automatizzati per il carico di lavoro all'interno del ciclo di vita dello sviluppo software.

  • (Cluster e carico di lavoro) Implementare una strategia di monitoraggio completa. Raccogliere log e metriche per monitorare l'integrità del carico di lavoro, identificare le tendenze delle prestazioni e dell'affidabilità e risolvere i problemi. Esaminare le procedure consigliate per il monitoraggio di Kubernetes con monitoraggio di Azure e le raccomandazioni Well-Architected per la progettazione e la creazione di un sistema di monitoraggio per determinare la strategia di monitoraggio migliore per i carichi di lavoro.

    Abilitare le impostazioni di diagnostica per assicurarsi che vengano registrate le interazioni del piano di controllo o del server API principale.

    Il carico di lavoro deve essere progettato per generare dati di telemetria che possono essere raccolti e devono includere anche gli stati di vivacità e prontezza.

  • (Cluster e carico di lavoro) Implementare i test nelle strategie di produzione. Test nell'ambiente di produzione usa distribuzioni reali per convalidare e misurare il comportamento e le prestazioni di un'applicazione nell'ambiente di produzione. Usare procedure di progettazione chaos destinate a Kubernetes per identificare i problemi di affidabilità dell'applicazione o della piattaforma.

    azure Chaos Studio può aiutare a simulare gli errori e attivare situazioni di ripristino di emergenza.

  • (Cluster e carico di lavoro) Imporre la governance del carico di lavoro. Le Azure Policy aiutano a garantire la conformità coerente agli standard dell'organizzazione, automatizzano l'applicazione dei criteri e offrono visibilità centralizzata e controllo sulle risorse del cluster.

    Consultare la sezione Criteri di Azure per ulteriori informazioni sui criteri predefiniti disponibili per AKS.

  • (Cluster e carico di lavoro) Usare distribuzioni a livello di stamp blu-verde per carichi di lavoro cruciali. Un approccio di distribuzione blu-verde a livello di stamp può aumentare la fiducia nel rilasciare le modifiche e consente aggiornamenti senza tempi di inattività perché è possibile convalidare le compatibilità con dipendenze downstream come la piattaforma Di Azure, i provider di risorse e i moduli IaC.

    I controller kubernetes e in ingresso supportano molti modelli di distribuzione avanzati per l'inclusione nel processo di progettazione delle versioni. Prendere in considerazione modelli come distribuzioni blu-verde o versioni canary.

  • (Cluster e carico di lavoro) Rendere i carichi di lavoro più sostenibili. Rendere i carichi di lavoro più efficienti sostenibile e cloud richiede la combinazione di sforzi per l'ottimizzazione dei costi , ridurre le emissioni di carbonioe ottimizzare il consumo di energia. L'ottimizzazione dei costi dell'applicazione è il passaggio iniziale per rendere i carichi di lavoro più sostenibili.

    Per scoprire come creare carichi di lavoro AKS sostenibili ed efficienti, vedere Principi di progettazione del software sostenibile in AKS.

Consigli

Elemento consigliato Vantaggio
(Cluster) Rendere operativo gli standard di configurazione del cluster e dei pod usando criteri di Azure per il servizio Azure Kubernetes. Le policy di Azure per AKS consentono di applicare l'applicazione e le protezioni su larga scala nei cluster in modo centralizzato e coerente. Usare i criteri per definire le autorizzazioni concesse ai pod e garantire la conformità ai criteri aziendali.
(Carico di lavoro) Usare Kubernetes Autoscaler Basato su Eventi (KEDA). KEDA consente alle applicazioni di ridimensionarsi in base agli eventi, ad esempio il numero di eventi elaborati. È possibile scegliere tra un ricco catalogo di oltre 50 scaler KEDA.

Efficienza delle prestazioni

L'efficienza delle prestazioni riguarda il mantenimento dell'esperienza utente anche in caso di aumento del carico attraverso una gestione efficace della capacità. La strategia include il ridimensionamento delle risorse, l'identificazione e l'ottimizzazione dei potenziali colli di bottiglia e il miglioramento delle prestazioni massime.

I principi di progettazione efficienza delle prestazioni forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi di capacità rispetto all'utilizzo previsto.

Elenco di controllo della progettazione

Avvia la strategia di progettazione in base all'elenco di controllo di revisione della progettazione per l'efficienza delle prestazioni per definire una baseline basata su indicatori chiave di prestazione per Azure Kubernetes Service (AKS).

  • (Cluster e carico di lavoro) Condurre la pianificazione della capacità. Eseguire e iterare su un esercizio dettagliato del piano di capacità che includa SKU, configurazioni di scalabilità automatica, indirizzamento IP e considerazioni sul failover.

    Dopo aver formalizzato il piano di capacità, aggiornare di frequente il piano osservando continuamente l'utilizzo delle risorse del cluster.

  • (Cluster) Definire una strategia di ridimensionamento. Configurare il ridimensionamento per garantire che le risorse vengano modificate in modo efficiente per soddisfare le esigenze del carico di lavoro senza sovraccarico o sprechi. Usare le funzionalità di AKS, come la HorizontalPodAutoscaler e la scalabilità automatica dei cluster, per soddisfare dinamicamente le esigenze del carico di lavoro con meno impegno operativo. Ottimizzare il carico di lavoro per operare e distribuire in modo efficiente in un contenitore.

    Esaminando la guida scalabilità e partizionamento per comprendere i vari aspetti della configurazione della scalabilità.

  • (Cluster e carico di lavoro) Eseguire test delle prestazioni. Eseguire attività continue di test del carico che esercitano sia i pod che la scalabilità automatica del cluster. Confrontare i risultati con gli obiettivi di prestazioni e le baseline stabilite.

  • (Cluster e carico di lavoro) ridimensionare i carichi di lavoro e i flussi in modo indipendente. Separare i carichi di lavoro e i flussi in pool di nodi diversi per consentire il ridimensionamento indipendente. Seguire le indicazioni riportate in Ottimizzare la progettazione del carico di lavoro usando i flussi per identificare e definire le priorità dei flussi.

Consigli

Elemento consigliato Vantaggio
(Cluster) Abilitare l'autoscaler del cluster per regolare automaticamente il numero di nodi degli agenti in risposta alle richieste del lavoro.

Usare il HorizontalPodAutoscaler per regolare il numero di pod in una distribuzione a seconda dell'utilizzo della CPU o di altre metriche.
La possibilità di aumentare o ridurre automaticamente il numero di nodi e il numero di pod nel cluster del servizio Azure Kubernetes (AKS) consente di gestire un cluster in modo efficace e conveniente.
(Cluster e carico di lavoro) Separare i carichi di lavoro in pool di nodi diversi e prendere in considerazione il ridimensionamento del pool di nodi utente . A differenza dei pool di nodi di sistema che richiedono sempre nodi in esecuzione, i pool di nodi utente consentono di aumentare o ridurre le prestazioni.
(Carico di lavoro) Usa le funzionalità avanzate del scheduler di AKS per implementare un bilanciamento avanzato delle risorse per i carichi di lavoro che ne hanno bisogno. Quando si gestiscono i cluster AKS, spesso è necessario isolare i team e i carichi di lavoro. Le funzionalità avanzate offerte dall'utilità di pianificazione Kubernetes consentono di controllare quali pod possono essere pianificati in determinati nodi. Consentono anche di controllare in che modo le applicazioni multipodi possono essere distribuite in modo appropriato nel cluster.
(Carico di lavoro) Usare keda per creare un set di regole di scalabilità automatica significativo in base ai segnali specifici del carico di lavoro. Non tutte le decisioni di scalabilità possono essere derivate dalle metriche della CPU o della memoria. Le considerazioni sulla scala spesso provengono da punti dati più complessi o persino esterni. KEDA consente alle applicazioni di ridimensionarsi in base a eventi, ad esempio il numero di messaggi in una coda o la lunghezza di un ritardo di un argomento.

Criteri di Azure

Azure offre un set completo di criteri predefiniti relativi ad AKS che si applicano alle risorse di Azure, come i criteri tipici di Azure e il componente aggiuntivo Criteri di Azure per Kubernetes, e all'interno del cluster. Molti dei criteri delle risorse di Azure sono disponibili sia nelle varianti Audit/Deny che Deploy If Not Exists. Oltre alle definizioni predefinite di Criteri di Azure, è possibile creare criteri personalizzati per la risorsa AKS e per il componente aggiuntivo Criteri di Azure per Kubernetes.

Alcune raccomandazioni di questo articolo possono essere controllate tramite Criteri di Azure. Ad esempio, è possibile controllare i criteri cluster seguenti:

  • I cluster dispongono di sonde di integrità di prontezza o vivacità configurate per la specifica del pod.
  • Microsoft Defender per i criteri basati sul cloud.
  • Modalità di autenticazione e criteri di configurazione, ad esempio Microsoft Entra ID, controllo degli accessi in base al ruolo e disabilitazione dell'autenticazione locale.
  • Criteri di accesso alla rete del server API, incluso il cluster privato.
  • Criteri di configurazione di GitOps.
  • Politiche delle impostazioni di diagnostica.
  • Restrizioni della versione AKS.
  • Impedisci l’invocazione dei comandi.

È anche possibile controllare i criteri del cluster e del carico di lavoro seguenti:

  • Iniziative di sicurezza dei pod del cluster Kubernetes per carichi di lavoro basati su Linux.
  • Includere criteri di funzionalità dei pod e dei contenitori, ad esempio AppArmor, sysctl, limiti di sicurezza, SELinux, seccomp, contenitori con privilegi e credenziali API del cluster di montaggio automatico.
  • Montaggio, driver di volume e criteri del file system.
  • Criteri di rete dei pod e dei contenitori, ad esempio la rete host, la porta, gli indirizzi IP esterni consentiti, ITTP e i servizi di bilanciamento del carico interni.
  • Restrizioni di implementazione dello spazio dei nomi.
  • Limiti delle risorse cpu e memoria.

Per una governance completa, vedere le definizioni predefinite di Criteri di Azure per Kubernetes e altri criteri che potrebbero influire sulla sicurezza del livello di calcolo.

Raccomandazioni di Azure Advisor

Azure Advisor è un consulente cloud personalizzato che consente di seguire le procedure consigliate per ottimizzare le distribuzioni di Azure. Ecco alcune raccomandazioni che consentono di migliorare l'affidabilità, la sicurezza, l'efficacia dei costi, le prestazioni e l'eccellenza operativa del servizio Azure Kubernetes.

Considerare gli articoli seguenti come risorse che illustrano le raccomandazioni evidenziate in questo articolo.

Creare competenze di implementazione usando la documentazione del prodotto seguente: