Panoramica dell'architettura di Knative serving

Questa pagina fornisce una panoramica dell'architettura di Knative serving e illustra le modifiche che si verificano quando attivi Knative serving nel tuo in un cluster Google Kubernetes Engine.

Queste informazioni sono utili per i seguenti tipi di utenti:

  • Utenti che iniziano a utilizzare Knative serving.
  • Operatori con esperienza nell'esecuzione di cluster GKE.
  • Gli sviluppatori di applicazioni che hanno bisogno di saperne di più Knative serving si integra con i cluster Kubernetes per progettare o configurare Knative serving un'applicazione.

Componenti dell'installazione predefinita

Installa Knative serving in il tuo cluster per connettere e gestire i carichi di lavoro stateless. I componenti Knative vengono creati nello spazio dei nomi knative-serving.

Knative serving utilizza Cloud Service Mesh per instradare il traffico. Per impostazione predefinita, Cloud Service Mesh installa i componenti nello spazio dei nomi istio-system.

Di seguito è riportato un elenco dei componenti installati da Knative serving e da Cloud Service Mesh:

  • Componenti installati da Knative serving nello spazio dei nomi knative-serving:

    • Activator: quando i pod. vengono scalati fino a zero o sovraccaricano di richieste inviate revisione, Attivatore mette temporaneamente in coda le richieste e invia le metriche Gestore della scalabilità automatica per l'avvio di più pod. Una volta che il ridimensionamento automatico esegue il ridimensionamento della revisione in base alle metriche registrate e ai pod disponibili, l'attivatore inoltra le richieste in coda alla revisione. L'attivatore è un componente del piano dati. I componenti del piano dati gestiscono tutte le funzioni ed elaborano il traffico utente inoltrato.
    • Gestore della scalabilità automatica: aggrega ed elabora le metriche di Attivatore e il container collaterale proxy, un componente del piano dati che applica limiti di contemporaneità per le richieste. Il gestore della scalabilità automatica calcola quindi della revisione e regola la dimensione del deployment in base sul numero di pod desiderato. Quando i pod sono disponibili nella revisione, il gestore della scalabilità automatica è un componente del piano di controllo. In caso contrario, quando i pod vengono scalati a zero, il gestore della scalabilità automatica è un componente del piano dati.
    • Controller: crea e aggiorna le risorse secondarie di Autoscaler e degli oggetti Service. Il controller è un componente del piano di controllo. I componenti del piano di controllo gestiscono tutte le funzioni e le procedure che stabiliscono il percorso della richiesta del traffico utente.
    • Raccogli metriche: raccoglie le metriche dai componenti di pubblicazione di Knative e poi le inoltra a Cloud Monitoring.
    • Webhook: imposta i valori predefiniti, rifiuta incoerenti e non validi. oggetti e convalida e mutates Chiamate API Kubernetes alle risorse Knative serving. Webhook è un componente del piano di controllo.
  • Componenti installati da Cloud Service Mesh in esecuzione nello spazio dei nomi istio-system:

    • Cluster Local Gateway: bilanciatore del carico nel piano dati responsabile della gestione del traffico interno che arriva da un servizio di pubblicazione Knative a un altro. È possibile accedere al gateway locale del cluster solo dall'interno del cluster GKE e non viene registrato un dominio esterno per evitare l'esposizione accidentale di informazioni private o processi interni.
    • Gateway Istio Ingress: bilanciatore del carico nel piano dati che responsabile della ricezione e della gestione del traffico in entrata dall'esterno nel cluster, incluso il traffico proveniente da indirizzi o reti interne.
    • Istiod: configura il gateway locale del cluster e Istio Gateway in entrata per gestire le richieste HTTP agli endpoint corretti. Istiod è un componente del piano di controllo. Per ulteriori informazioni, consulta Istiod.

I componenti di Knative serving vengono aggiornati automaticamente con Aggiornamenti del cluster del piano di controllo GKE. Per ulteriori informazioni, consulta Versioni di GKE disponibili.

Utilizzo delle risorse del cluster

L'installazione iniziale per Knative serving richiede circa 1,5 con CPU virtuale e 1 GB di memoria per il cluster. Il numero di nodi nel tuo in un cluster non influiscono sui requisiti di spazio e memoria per Installazione di Knative serving.

Un Attivatore può consumare richieste fino a un massimo di 1000 milliCPU e 600 MiB di RAM. Quando un Attivatore esistente non è in grado di supportare il numero di richieste in entrata, l'Activator aggiuntivo si avvia, il che richiede una prenotazione di 300 milliCPU e 60 MiB di RAM.

Ogni pod creato dal servizio Knative serving crea una il sidecar del proxy che applica i limiti di contemporaneità delle richieste. Il proxy della coda prenota 25 milliCPU e non ha prenotazioni di memoria. Il consumo del proxy di coda dipende dal numero di richieste in coda e dalle dimensioni delle richieste. Non ci sono limiti alle risorse di CPU e memoria che può consumare.

Crea un Service

Diagramma che mostra l'architettura del servizio Knative serving
Architettura di Knative serving Service (fai clic per ingrandire)

Knative Serving estende Kubernetes definendo un insieme di definizioni di risorse personalizzate (CRD): servizio, revisione, configurazione e route. Questi CRD definiscono e controllano il comportamento delle tue applicazioni nel cluster:

  • Il servizio Knative serving è la risorsa personalizzata di primo livello definita da Knative serving. Si tratta di una singola applicazione per gestire l'intero ciclo di lavoro del carico di lavoro. Il servizio garantisce che la tua app ha un route, una configurazione e una nuova revisione per ogni aggiornamento il servizio.
  • La revisione è un'istantanea immutabile del codice e della configurazione in un determinato momento.
  • Configurazione mantiene le impostazioni correnti per la revisione più recente e registra una cronologia di tutte le revisioni passate. La modifica di una configurazione crea nuova revisione.
  • Percorso definisce un endpoint HTTP e lo associa a una o più revisioni a cui vengono inoltrate le richieste.

Quando un utente crea un servizio Knative serving, viene fatto quanto segue avvengono nel seguente modo:

  1. L'oggetto Service di Knative serving definisce:

    1. Una configurazione su come pubblicare le tue revisioni.
    2. Una revisione immutabile per questa versione del servizio.
    3. Un percorso per gestire l'assegnazione del traffico specificata alla tua revisione.
  2. L'oggetto di route crea VirtualService. L'oggetto VirtualService configura Gateway in entrata e gateway locale del cluster per instradare il traffico del gateway alla revisione corretta.

  3. L'oggetto revisione crea i seguenti componenti del piano di controllo: un oggetto Servizio Kubernetes e un oggetto Deployment.

  4. La configurazione di rete connette l'attivatore, il gestore della scalabilità automatica e i bilanciatori del carico per la tua app.

Gestione delle richieste

Il seguente diagramma mostra una panoramica generale di un possibile percorso di richiesta per il traffico degli utenti attraverso i componenti del piano dati Knative serving su una cluster Google Kubernetes Engine di esempio:

Diagramma che mostra l'architettura del cluster Knative serving
Architettura dei cluster Knative serving (fai clic per ingrandire)

Il prossimo diagramma si espande rispetto a quello precedente per offrire una visione approfondita al percorso di richiesta del traffico dell'utente, descritto anche nel dettaglio di seguito:

Diagramma che mostra il percorso della richiesta di pubblicazione di Knative
Percorso di richiesta di Knative serving (fai clic per ingrandire)

Per un percorso di richiesta di Knative serving:

  1. Il traffico arriva attraverso:

    • Il gateway in entrata per il traffico proveniente dall'esterno dei cluster
    • Il gateway locale del cluster per il traffico all'interno dei cluster
  2. Il componente VirtualService, che specifica le regole di routing del traffico, configura i gateway in modo che il traffico degli utenti sia instradato al server revisione.

  3. Il servizio Kubernetes, un componente del piano di controllo, determina il passaggio successivo nel percorso della richiesta in base alla disponibilità dei pod per gestire il traffico:

    • Se la revisione non contiene alcun pod:

      1. Activator mette temporaneamente in coda la richiesta ricevuta e invia una metrica ad Autoscaler per scalare più pod.
      2. Il gestore della scalabilità automatica esegue la scalabilità in base allo stato desiderato dei pod nel deployment.
      3. Il deployment crea più pod per ricevere richieste aggiuntive.
      4. L'attivatore riprova le richieste al sidecar proxy della coda.
    • Se il servizio viene scalato (i pod sono disponibili), il servizio Kubernetes invia la richiesta al sidecar proxy della coda.

  4. Il sidecar proxy della coda applica i parametri della coda delle richieste, richieste singole o multithread, che il contenitore può gestire alla volta.

  5. Se il sidecar del proxy della coda ha più richieste di quante ne possa gestire, il gestore della scalabilità automatica crea altri pod per gestire richieste aggiuntive.

  6. Il sidecar proxy della coda invia il traffico al contenitore dell'utente.