Architettura di base per il servizio Azure Kubernetes in Azure Stack HCI

Azure Stack
Windows Server

Questo scenario illustra come progettare e implementare un'architettura di base per Microsoft servizio Azure Kubernetes (AKS) in esecuzione in Azure Stack HCI (ibrido del servizio Azure Kubernetes).

Questo articolo include raccomandazioni per la rete, la sicurezza, l'identità, la gestione e il monitoraggio del cluster in base ai requisiti aziendali di un'organizzazione. Fa parte di un set di linee guida di base per l'architettura di due articoli. Vedere le raccomandazioni per la progettazione di rete qui.

Architettura

L'immagine seguente mostra l'architettura di base per servizio Azure Kubernetes nel cluster di failover del data center di Azure Stack HCI o Windows Server 2019/2022:

Conceptual image of Baseline architecture for Azure Kubernetes Service on Azure Stack HCI.

Scaricare un file di Visio di questa architettura.

L'architettura è costituita dai componenti e dalle funzionalità seguenti:

  • Azure Stack HCI (20H2). Soluzione cluster di infrastruttura iperconvergente che ospita carichi di lavoro Windows e Linux virtualizzati e la relativa archiviazione in un ambiente locale ibrido. Un cluster Azure Stack HCI viene implementato come cluster a 2-8 nodi.
  • servizio Azure Kubernetes in Azure Stack HCI (ibrido del servizio Azure Kubernetes). Implementazione locale del servizio Azure Kubernetes, che automatizza l'esecuzione di applicazioni in contenitori su larga scala.
  • Azure Arc. Un servizio basato sul cloud che estende il modello di gestione basato su Azure Resource Manager a risorse non di Azure, incluse macchine virtuali (VM), cluster Kubernetes e database in contenitori.
  • Criteri di Azure. Un servizio basato sul cloud che consente di applicare gli standard dell'organizzazione e di valutare la conformità su larga scala valutando le risorse di Azure (incluse quelle abilitate per Arc) alle proprietà di tali risorse alle regole business. Questi standard includono anche Criteri di Azure per Kubernetes, che applica i criteri ai carichi di lavoro in esecuzione all'interno del cluster.
  • Monitoraggio di Azure. Un servizio basato sul cloud che ottimizza la disponibilità e le prestazioni delle applicazioni e dei servizi offrendo una soluzione completa per raccogliere, analizzare e agire sui dati di telemetria dagli ambienti cloud e locali.
  • Microsoft Defender per il cloud. Un sistema di gestione della sicurezza dell'infrastruttura unificato che rafforza il comportamento di sicurezza dei data center e fornisce protezione avanzata dalle minacce nei carichi di lavoro ibridi nel cloud e in locale.
  • Automazione di Azure. Offre un servizio di automazione e configurazione basato sul cloud che supporta la gestione coerente tra gli ambienti Azure e non Azure.
  • Velero. Uno strumento open source che supporta il backup su richiesta e il backup pianificato e ripristina tutti gli oggetti nel cluster Kubernetes.
  • Archiviazione BLOB di Azure. Archiviazione di oggetti altamente scalabile e sicura per carichi di lavoro nativi del cloud, archivi, data lake, elaborazione ad alte prestazioni e Machine Learning.

Componenti

Dettagli dello scenario

Potenziali casi d'uso

  • Implementare carichi di lavoro basati su contenitori a disponibilità elevata in un'implementazione di Kubernetes locale del servizio Azure Kubernetes.
  • Automatizzare l'esecuzione di applicazioni in contenitori su larga scala.
  • Riduzione del costo totale di proprietà (TCO) tramite soluzioni certificate Microsoft, automazione basata sul cloud, gestione centralizzata e monitoraggio centralizzato.

Hardware certificato

Usare l'hardware certificato Azure Stack HCI, che fornisce impostazioni UEFI (Secure Boot, United Extensible Firmware Interface) e Trusted Platform Module (TPM) predefinite. I requisiti di calcolo dipendono dall'applicazione e dal numero di nodi di lavoro eseguiti nel servizio Azure Kubernetes nel cluster Azure Stack HCI. Usare più nodi fisici per la distribuzione di Azure Stack HCI o almeno un cluster di failover windows Server Datacenter a due nodi per ottenere una disponibilità elevata. È necessario che tutti i server abbiano lo stesso produttore e lo stesso modello, usando il livello Intel Nehalem a 64 bit, il livello AMD EPYC o i processori compatibili con versioni successive con SLAT (Second-Level Address Translation).

Strategie di distribuzione del cluster

Il servizio Azure Kubernetes semplifica la distribuzione di Kubernetes locale fornendo procedure guidate o cmdlet di PowerShell che è possibile usare per configurare Kubernetes e componenti aggiuntivi di Azure Stack HCI essenziali. Un cluster servizio Azure Kubernetes include i componenti seguenti in Azure Stack HCI:

  • Cluster di gestione: Distribuire il cluster di gestione in una macchina virtuale a disponibilità elevata in esecuzione in Azure Stack HCI o in un cluster di failover di Windows Server 2019/2022 Datacenter. Il cluster di gestione è responsabile della distribuzione e della gestione di più cluster del carico di lavoro e include i componenti seguenti:
    • Server API. Interagisce con gli strumenti di gestione.
    • Servizio di bilanciamento del carico. Gestisce le regole di bilanciamento del carico per il server API del cluster di gestione.
  • Cluster del carico di lavoro. Implementare componenti del piano di controllo a disponibilità elevata e componenti del nodo di lavoro. Le applicazioni in contenitori vengono eseguite in un cluster del carico di lavoro. Per ottenere l'isolamento dell'applicazione, è possibile distribuire fino a otto cluster del carico di lavoro. Il cluster del carico di lavoro è costituito dai componenti seguenti:
    • Piano di controllo. Viene eseguito in una distribuzione Linux e contiene componenti del server API per l'interazione con l'API Kubernetes e un archivio chiave-valore distribuito, etcd, per archiviare tutti i dati e la configurazione del cluster.
    • Servizio di bilanciamento del carico. Viene eseguito in una macchina virtuale Linux e fornisce servizi con carico bilanciato per il cluster del carico di lavoro.
    • Nodi di lavoro. Eseguire in un sistema operativo Windows o Linux che ospita applicazioni in contenitori.
    • Risorse Kubernetes. I pod rappresentano una singola istanza dell'applicazione, che in genere hanno un mapping 1:1 con un contenitore, ma alcuni pod possono contenere più contenitori. Le distribuzioni rappresentano uno o più pod identici. I pod e le distribuzioni vengono raggruppati logicamente in uno spazio dei nomi che controlla l'accesso alla gestione delle risorse.

Requisiti di rete

Kubernetes fornisce un livello di astrazione alla rete virtuale connettendo i nodi Kubernetes alla rete virtuale. Fornisce anche connettività in ingresso e in uscita per i pod tramite il componente kube-proxy . La piattaforma Azure Stack HCI offre ulteriore semplificazione della distribuzione configurando la macchina virtuale del servizio di bilanciamento del carico HAProxy .

Nota

Per informazioni su come progettare e implementare concetti di rete per la distribuzione di nodi del servizio Azure Kubernetes in cluster Azure Stack HCI e Windows Server, vedere il secondo articolo di questa serie, Architettura di rete.

L'architettura usa una rete virtuale che alloca gli indirizzi IP usando una delle opzioni di rete seguenti:

  • Rete IP statica. Usa un pool di indirizzi statico definito per tutti gli oggetti nella distribuzione. Offre vantaggi aggiuntivi e garantisce che il carico di lavoro e l'applicazione siano sempre raggiungibili. Questo è il metodo consigliato.
  • Rete DHCP. Alloca gli indirizzi IP dinamici ai nodi Kubernetes, alle macchine virtuali sottostanti e ai servizi di bilanciamento del carico usando un server DHCP (Dynamic Host Configuration Protocol).

Un pool di indirizzi IP virtuali è un intervallo di indirizzi IP riservati usati per l'allocazione di indirizzi IP al server API del cluster Kubernetes e per i servizi Kubernetes.

Usare Project Calico per Kubernetes per ottenere altre funzionalità di rete, ad esempio criteri di rete e controllo del flusso.

requisiti di Archiviazione

Per ogni server nel cluster, usare gli stessi tipi di unità con le stesse dimensioni e modello. Azure Stack HCI funziona con sata (Serial Advanced Technology Attachment), SAS (Serial Attached SCSI), NVMe (Non Volatile Memory Express) o unità di memoria persistente collegate fisicamente a un server. Per i volumi del cluster, HCI usa la tecnologia di archiviazione software-defined (Spazi di archiviazione diretta) per combinare le unità fisiche nel pool di archiviazione per la tolleranza di errore, la scalabilità e le prestazioni. Le applicazioni eseguite in Kubernetes in Azure Stack HCI spesso prevedono che le opzioni di archiviazione seguenti siano disponibili:

  • Volumi. Rappresenta un modo per archiviare, recuperare e rendere persistenti i dati tra i pod e il ciclo di vita dell'applicazione.
  • Volumi permanenti. Una risorsa di archiviazione creata e gestita dall'API Kubernetes e può esistere oltre la durata di un singolo pod.

Valutare la possibilità di definire classi di archiviazione per livelli e posizioni diversi per ottimizzare i costi e le prestazioni. Le classi di archiviazione supportano il provisioning dinamico dei volumi permanenti e definiscono il metodo reclaimPolicy per specificare l'azione della risorsa di archiviazione sottostante per la gestione dei volumi permanenti quando il pod viene eliminato.

Gestire il servizio Azure Kubernetes in Azure Stack HCI

È possibile gestire il servizio Azure Kubernetes in Azure Stack HCI usando le opzioni di gestione seguenti:

  • Windows Amministrazione Center. Offre un'interfaccia utente intuitiva per l'operatore Kubernetes per gestire il ciclo di vita dei cluster servizio Azure Kubernetes in Azure Stack HCI.
  • PowerShell. Semplifica il download, la configurazione e la distribuzione del servizio Azure Kubernetes in Azure Stack HCI. Il modulo PowerShell supporta anche la distribuzione, la configurazione di altri cluster del carico di lavoro e la riconfigurazione di quelli esistenti.

Requisiti di Active Directory

Integrare il servizio Azure Kubernetes in Azure Stack HCI o nel cluster di failover di Windows Server Datacenter con un ambiente Dominio di Active Directory Services (AD DS) per una gestione ottimale. Quando possibile, usare unità organizzative separate per i server e i servizi del servizio Azure Kubernetes in Azure Stack HCI per fornire autorizzazioni e accesso di controllo più granulari. L'integrazione di Active Directory con servizio Azure Kubernetes in Azure Stack HCI consente a un utente in un computer aggiunto a un dominio Windows di connettersi al server API (con kubectl) usando le credenziali di Single Sign-On (SSO).

Consigli

Le raccomandazioni seguenti sono valide per la maggior parte degli scenari. Seguire le raccomandazioni, a meno che non si disponga di un requisito specifico che ne esegue l'override.

Integrare le distribuzioni ibride del servizio Azure Kubernetes con Azure Arc

Per ridurre al minimo il costo totale di proprietà, integrare le distribuzioni ibride del servizio Azure Kubernetes con Azure Arc. Prendere in considerazione l'uso dei servizi di Azure seguenti:

  • Informazioni dettagliate contenitore di Monitoraggio di Azure. Monitora le prestazioni dei carichi di lavoro dei contenitori in esecuzione in cluster Linux e Windows. Raccoglie metriche di memoria e processore, da controller, nodi e contenitori tramite l'API Metrica. Con informazioni dettagliate sui contenitori, è possibile identificare l'utilizzo della memoria e del processore, rilevare le prestazioni complessive del pod, comprendere il comportamento del cluster e configurare gli avvisi per il monitoraggio proattivo.
  • Funzionalità di automazione. Il servizio Azure Kubernetes ibrido offre un'ampia gamma di funzionalità di automazione, con aggiornamenti del sistema operativo combinati con aggiornamenti full-stack, inclusi firmware e driver forniti dai fornitori e dai partner di Azure Stack HCI. È possibile eseguire Windows PowerShell in locale da uno dei server Azure Stack HCI o in remoto da un computer di gestione. L'integrazione con Automazione di Azure e Azure Arc facilita un'ampia gamma di scenari di automazione per carichi di lavoro virtualizzati e in contenitori.
  • Velero e Archiviazione BLOB di Azure. Velero è uno strumento open source che supporta il backup su richiesta, il backup pianificato e il ripristino di tutti gli oggetti nel cluster Kubernetes per tutte le risorse definite e archiviate in un database etcd come definizione di risorsa personalizzata (CRD) di Kubernetes. Fornisce il backup di risorse e volumi Kubernetes per un intero cluster o parte di un cluster usando spazi dei nomi o selettori di etichetta. Archiviare il set di backup creato con lo strumento Velero in un account di archiviazione di Azure in un contenitore BLOB.
  • Servizio Kubernetes abilitato per Azure Arc. Fornisce la rappresentazione di Azure Resource Manager del servizio Azure Kubernetes nel cluster Azure Stack HCI. Distribuire agenti abilitati per Azure Arc in uno spazio dei nomi Kubernetes, per raccogliere log e metriche, per raccogliere metadati del cluster, versione del cluster e numero di nodi e assicurarsi che gli agenti presentino prestazioni ottimali.
  • Criteri di Azure. Distribuire e applicare criteri di sicurezza predefiniti nel cluster del servizio Azure Kubernetes usando Criteri di Azure. È anche possibile usare la definizione di criteri personalizzata per applicare GitOps, ovvero la procedura per dichiarare lo stato desiderato della configurazione di Kubernetes (distribuzioni, spazi dei nomi e così via) in un repository Git.
  • Criteri di Azure per Kubernetes. Gestire i criteri dei cluster interni implementati da Gatekeeper, distribuisce la definizione dei criteri nel cluster come modello di vincolo e segnala lo stato di conformità dei cluster Kubernetes da un'unica posizione.
  • Controllo degli accessi in base al ruolo di Azure. Usare per l'assegnazione di ruolo e per gestire l'accesso a Kubernetes abilitato per Azure Arc.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Framework ben progettato di Microsoft Azure.

Affidabilità

  • Implementare una macchina virtuale a disponibilità elevata per il cluster di gestione e più host nel cluster Kubernetes per soddisfare il livello minimo di disponibilità per i carichi di lavoro.
  • Eseguire il backup e il ripristino di cluster di carico di lavoro usando Velero e Archiviazione BLOB di Azure. Definire obiettivi di disponibilità e ripristino per soddisfare i requisiti aziendali.
  • Le distribuzioni ibride del servizio Azure Kubernetes usano il clustering di failover e la migrazione in tempo reale per la disponibilità elevata e la tolleranza di errore. La migrazione in tempo reale è una funzionalità hyper-V che consente di spostare in modo trasparente le macchine virtuali in esecuzione da un host Hyper-V a un altro senza tempi di inattività percepiti.
  • Configurare le distribuzioni per l'uso delle funzionalità di Kubernetes, ad esempio Distribuzioni, Mapping di affinità e ReplicaSet, per garantire che i pod siano resilienti negli scenari di interruzione.
  • È necessario assicurarsi che i servizi a cui si fa riferimento nella sezione Architettura siano supportati nell'area in cui viene distribuito Azure Arc.
  • Prendere in considerazione la limitazione dell'utilizzo delle immagini dei contenitori pubbliche e il pull solo dai registri contenitori per i quali si ha il controllo del contratto di servizio, ad esempio Registro Azure Container.

Sicurezza

Concentrarsi sull'intero stack proteggendo l'host e i contenitori.

Sicurezza dell'infrastruttura

  • Usare l'hardware certificato Azure Stack HCI che fornisce impostazioni di avvio protetto, UEFI e TPM predefinite. Queste tecnologie, combinate con la sicurezza basata su virtualizzazione ,consentono di proteggere i carichi di lavoro sensibili alla sicurezza. Per le soluzioni convalidate, vedere Soluzioni Azure Stack HCI.
  • Usare l'avvio protetto per assicurarsi che il server avvii solo il software considerato attendibile da un produttore di apparecchiature originali.
  • Usare UEFI per controllare il processo di avvio del server.
  • Usare TPM per archiviare le chiavi crittografiche e isolare tutte le funzioni correlate alla sicurezza basate su hardware.
  • Crittografia unità BitLocker consente di crittografare Spazi di archiviazione diretta volumi inattivi.
  • Configurare i criteri di rete Calico per definire le regole di isolamento della rete tra contenitori.
  • Per requisiti di sicurezza più elevati, è consigliabile distribuire un cluster del carico di lavoro in un server Windows dedicato.
  • Usare Microsoft Defender per il cloud, disponibile tramite Windows Amministrazione Center, per gestire centralmente le impostazioni di sicurezza per server e cluster. Fornisce la protezione dalle minacce per i cluster Kubernetes abilitati per Arc. L'estensione Microsoft Defender per il cloud raccoglie i dati dai nodi del cluster e li invia al back-end di Azure Defender per Kubernetes nel cloud per un'ulteriore analisi.
  • Proteggere la comunicazione con i certificati.
  • Ruotare le chiavi di crittografia dell'archivio segreto Kubernetes (etcd) usando il plug-in Key Management Server (Servizio di gestione delle chiavi).

Sicurezza delle applicazioni

  • Usare l'estensione del provider di segreti di Azure Key Vault nel servizio Azure Kubernetes in Azure Stack HCI per proteggere ulteriormente i segreti usati da applicazioni diverse, archiviandoli nel servizio Azure Key Vault.
  • Usare il componente aggiuntivo del servizio Azure Kubernetes Open Service Mesh per proteggere la comunicazione da servizio a servizio abilitando tls reciproco (mTLS). È anche possibile usare questo componente aggiuntivo per definire ed eseguire criteri di controllo di accesso con granularità fine per i servizi.
  • Usare Criteri di Azure per Kubernetes per applicare criteri di sicurezza del cluster, ad esempio senza pod con privilegi.
  • Usare un Registro Azure Container che contiene l'analisi delle vulnerabilità nel repository del contenitore.
  • Usare gli account di sicurezza gestiti dal gruppo per i carichi di lavoro di Windows con un host non aggiunto a un dominio. (Applicabile solo per Windows Server).

Sicurezza dei contenitori

  • Rafforzare la protezione avanzata dell'ambiente host e del daemon rimuovendo i servizi non necessari.
  • Mantenere i segreti fuori dalle immagini e montarli solo tramite il motore di orchestrazione dei contenitori.
  • Proteggere le immagini in un Registro Azure Container che supporta l'analisi delle vulnerabilità e il controllo degli accessi in base al ruolo.
  • Usare l'isolamento dei contenitori ed evitare l'esecuzione di contenitori in modalità con privilegi per impedire agli utenti malintenzionati di inoltrare i privilegi se il contenitore viene compromesso.

Ottimizzazione dei costi

Eccellenza operativa

  • Creazione guidata cluster. Esperienza di provisioning e gestione semplificata con Windows Amministrazione Center. La creazione guidata cluster in Windows Amministrazione Center offre un'interfaccia guidata che guida la creazione di un cluster Azure Stack HCI. La Creazione guidata cluster è un compromesso per semplificare e creare script di distribuzione che è possibile controllare il codice sorgente per il controllo e la ripetibilità tra più distribuzioni. Analogamente, Windows Amministrazione Center semplifica il processo di gestione delle macchine virtuali di Azure Stack HCI.
  • Azure Arc. Eseguire l'integrazione con Azure Arc o una gamma di servizi di Azure che offrono funzionalità aggiuntive di gestione, manutenzione e resilienza, ad esempio Monitoraggio di Azure e Log Analytics.
  • GitOps. Anziché configurare manualmente i componenti Kubernetes, usare strumenti automatizzati per applicare configurazioni a un cluster Kubernetes, perché queste configurazioni vengono archiviate in un repository di origine. Questo processo viene spesso definito GitOps e le soluzioni GitOps più diffuse per Kubernetes includono Flux e Argo CD. In questa architettura è consigliabile usare l'estensione GitOps fornita da Microsoft, basata su Flux.
  • Open Service Mesh (OSM) abilitato per Azure Arc. Mesh di servizi leggera, estendibile e nativa del cloud che consente agli utenti di gestire in modo uniforme, proteggere e ottenere funzionalità di osservabilità predefinite per ambienti di microservizi altamente dinamici.

Efficienza prestazionale

  • Usare l'hardware certificato Azure Stack HCI per migliorare il tempo di attività e le prestazioni dell'applicazione, la gestione e le operazioni semplificate e ridurre il costo totale di proprietà.
  • Informazioni sui limiti del servizio Azure Kubernetes in Azure Stack HCI. Microsoft supporta le distribuzioni del servizio Azure Kubernetes in Azure Stack con un massimo di otto server fisici per cluster, otto cluster Kubernetes e 200 macchine virtuali.
  • Il ridimensionamento del servizio Azure Kubernetes in Azure Stack HCI dipende dal numero di nodi di lavoro e dai cluster di destinazione. Per dimensionare correttamente l'hardware per i nodi di lavoro, è necessario prevedere il numero di pod, contenitori e nodi di lavoro in un cluster di destinazione. È necessario assicurarsi che almeno il 15% della capacità di Azure Stack HCI sia riservato per errori pianificati e non pianificati. Per garantire l'efficienza delle prestazioni, usare le risorse di calcolo in modo efficiente per soddisfare i requisiti di sistema e mantenere tale efficienza man mano che la domanda cambia e le tecnologie si evolvono. La regola generale è che se un nodo passa offline durante la manutenzione o durante un errore non pianificato, i nodi rimanenti possono avere capacità sufficiente per gestire il carico aumentato.
  • Valutare la possibilità di aumentare le dimensioni della macchina virtuale del servizio di bilanciamento del carico se si eseguono molti servizi Kubernetes in ogni cluster di destinazione.
  • Il servizio Azure Kubernetes in Azure Stack HCI distribuisce i nodi di lavoro per ogni pool di nodi in un cluster di destinazione usando la logica di posizionamento di Azure Stack HCI.
  • Pianificare le prenotazioni di indirizzi IP per configurare host del servizio Azure Kubernetes, cluster cluster, server API cluster, servizi Kubernetes e servizi dell'applicazione. Microsoft consiglia di riservare almeno 256 indirizzi IP per la distribuzione del servizio Azure Kubernetes in Azure Stack HCI.
  • Prendere in considerazione l'implementazione di un controller di ingresso che funziona al livello 7 e usa regole più intelligenti per distribuire il traffico dell'applicazione.
  • Implementare l'ottimizzazione delle prestazioni di rete per l'allocazione della larghezza di banda del traffico.
  • Usare l'accelerazione GPU (Graphics Processing Unit) per carichi di lavoro estesi.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Altri collaboratori:

Passaggi successivi