Isolare i carichi di lavoro GKE utilizzando i nodi single-tenant


Questa pagina mostra come isolare i carichi di lavoro in esecuzione sui cluster standard Google Kubernetes Engine (GKE) utilizzando i nodi single-tenant di Compute Engine, ovvero server fisici dedicati che eseguono solo le VM di un progetto specifico. Puoi utilizzare i nodi single-tenant per mantenere le tue VM fisicamente separate dalle VM di altri progetti o per raggrupparle sullo stesso hardware host.

Questa funzionalità non è supportata su GKE Autopilot. Per scoprire di più sui confini di sicurezza di Autopilot, consulta Confini di sicurezza in Autopilot.

Per utilizzare i nodi single-tenant in GKE, crea un gruppo di nodi single-tenant in Compute Engine e utilizza questo gruppo di nodi per creare un pool di nodi GKE. Puoi creare pool di nodi utilizzando nodi sole-tenant dal progetto del cluster GKE o nodi sole-tenant condivisi utilizzando risorse in più progetti all'interno della tua organizzazione. Ad esempio, puoi designare un progetto proprietario nella tua organizzazione in cui creare gruppi di nodi con un solo tenant e progetti consumer in cui sono presenti cluster con pool di nodi che utilizzano questi gruppi di nodi del progetto proprietario.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.

Richiedi quota aggiuntiva

I nodi single-tenant sono grandi (ad esempio, 96 vCPU e 624 GB di memoria) e le quote di progetto predefinite sono troppo basse per gestirli.

Per creare nodi single-tenant, devi richiedere un aumento della quota per le CPU dell'API Compute Engine nella pagina delle quote. Per maggiori informazioni su come richiedere un aumento, consulta la sezione Quote.

Il numero di CPU necessarie dipende da:

  • Utilizzo attuale della quota di CPU.
  • La dimensione del gruppo di nodi.
  • Il modello di nodo.

Esamina il numero di core del tipo di nodo single-tenant e richiedi un limite di CPU pari almeno a questo importo, preferibilmente con 10 CPU aggiuntive per assicurarti che il progetto abbia una capacità adeguata.

Crea un template di nodo single-tenant

Un template di nodo single-tenant è una risorsa regionale che definisce e applica le proprietà a ogni nodo durante la creazione di un gruppo di nodi. Per saperne di più, consulta Tipi di nodi.

Se utilizzi nodi single-tenant condivisi, assicurati di completare queste istruzioni nel progetto proprietario del gruppo di nodi, non nel progetto consumer del cluster.

Console

  1. Vai alla pagina Nodi single-tenant nella console Google Cloud .

    Vai a Nodi single-tenant

  2. Fai clic su Crea modello di nodo.

  3. Specifica un nome e una regione per il template di nodo.

  4. Seleziona un tipo di nodo. Per vedere quali tipi di macchine sono supportati per ogni tipo di nodo, consulta Tipi di nodo nella "Panoramica della single-tenancy".

  5. (Facoltativo) Aggiungi una o più etichette di affinità dei nodi.

  6. Fai clic su Crea per creare il modello di nodo.

gcloud

Utilizza il comando gcloud compute sole-tenancy node-templates create per creare un template di nodo:

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

Sostituisci quanto segue:

  • TEMPLATE_NAME: il nome del nuovo template di nodo
  • NODE_TYPE: il tipo di nodo per i nodi single-tenant creati in base a questo template. Utilizza il comando gcloud compute sole-tenancy node-types list per visualizzare un elenco dei tipi di nodi disponibili in ciascuna zona.
  • AFFINITY_LABELS: le chiavi e i valori, [KEY=VALUE,...] per le etichette di affinità. Con le etichette di affinità puoi raggruppare logicamente nodi e gruppi di nodi e impostarle in un secondo momento sulle VM, durante il loro provisioning, per pianificare quest'ultime su un insieme specifico di nodi o gruppi di nodi. Per ulteriori informazioni, consulta Affinità e anti-affinità dei nodi.
  • COMPUTE_REGION: la regione in cui creare il template di nodo. Puoi utilizzare questo template per creare gruppi di nodi in qualsiasi zona di questa regione.

L'output è simile al seguente:

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

Crea un gruppo di nodi single-tenant

Un gruppo di nodi è un insieme di nodi single-tenant in una zona specifica dello stesso modello di nodo single-tenant. Per i cluster regionali e i pool di nodi disponibili in più zone, devi creare un gruppo di nodi con lo stesso nome in ogni zona. Assicurati di disporre di una quota sufficiente prima di completare questo passaggio.

Se utilizzi nodi single-tenant condivisi, assicurati di completare queste istruzioni nel progetto proprietario del gruppo di nodi, non nel progetto consumer del cluster.

Console

Per creare un gruppo di nodi single-tenant:

  1. Vai alla pagina Nodi single-tenant nella console Google Cloud .

    Vai a Nodi single-tenant

  2. Fai clic su Crea gruppo di nodi.

  3. Specifica un nome per il template di nodo.

  4. Seleziona la stessa regione in cui hai creato il template di nodo, quindi seleziona una zona in quella regione.

  5. Seleziona il Modello di nodo.

  6. (Facoltativo) Attiva la modalità di scalabilità automatica.

  7. Specifica il numero di nodi che vuoi nel gruppo.

  8. (Facoltativo) Modifica la policy di manutenzione.

  9. Se vuoi condividere il gruppo di nodi single-tenant, configura le impostazioni di condivisione specificando una delle seguenti opzioni nella sezione Configura impostazioni di condivisione:

    • Condividi questo gruppo di nodi con tutti i progetti all'interno dell'organizzazione.
    • Condividi questo gruppo di nodi con progetti selezionati all'interno dell'organizzazione.
  10. Fai clic su Crea per creare il gruppo di nodi.

gcloud

Crea un gruppo di nodi dal modello:

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE \
    --share-settings=SHARE_SETTING \
    --share-with=PROJECTS

Sostituisci quanto segue:

  • GROUP_NAME: il nome che vuoi assegnare al nuovo gruppo di nodi.
  • COMPUTE_ZONE: la zona in cui si trova questo gruppo di nodi. Questa zona deve trovarsi nella stessa regione del template di nodo che stai utilizzando.
  • TEMPLATE_NAME: il nome del modello di nodo che stai utilizzando.
  • TARGET_SIZE: il numero di nodi che vuoi creare nel gruppo.
  • SHARE_SETTING: l'impostazione di condivisione per il gruppo di nodi. Imposta projects per la condivisione con progetti specifici o organization per la condivisione con l'intera organizzazione.
  • PROJECTS: un elenco di ID progetto o numeri di progetto con cui condividere il gruppo di nodi. Obbligatorio solo se imposti SHARE_SETTING su projects.

Crea un pool di nodi GKE single-tenant

Ora che hai creato un gruppo di nodi single-tenant in Compute Engine, puoi creare un pool di nodi single-tenant.

Se hai già un cluster GKE, puoi aggiungervi un pool di nodi sole-tenant. In caso contrario, crea un cluster con gcloud container clusters create.

Se utilizzi un cluster regionale o se il tuo pool di nodi è disponibile in più zone, devi creare un gruppo di nodi con lo stesso nome in ciascuna di queste zone. Se non puoi riutilizzare il nome in ogni zona, crea pool di nodi separati per ogni zona.

Crea un pool di nodi con un gruppo di nodi single-tenant dal progetto del cluster

Per creare un pool di nodi utilizzando un gruppo di nodi del progetto del cluster, trasmetti il nome del gruppo di nodi single-tenant. Se vuoi utilizzare un gruppo di nodi single-tenant condiviso o etichette di affinità dei nodi personalizzate che hai configurato quando hai creato il modello di nodo single-tenant, consulta le istruzioni per creare un pool di nodi con un nodo single-tenant condiviso utilizzando un file di affinità dei nodi.

Crea un nuovo pool di nodi con un gruppo di nodi specificato:

Per i node pool zonali:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --location CONTROL_PLANE_LOCATION --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE1

Per i node pool regionali:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --location CONTROL_PLANE_LOCATION --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE1,COMPUTE_ZONE2

Sostituisci quanto segue:

  • NODE_POOL_NAME: un nome per il nuovo pool di nodi.
  • GROUP_NAME: il nome del gruppo di nodi con tenancy esclusiva esistente che vuoi utilizzare.
  • CLUSTER_NAME: il nome del cluster in cui stai creando ilpool di nodil.
  • CONTROL_PLANE_LOCATION: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.
  • MACHINE_TYPE: il tipo di macchina pool di nodi.
  • COMPUTE_ZONE1, COMPUTE_ZONE2,[...]: le zone per i gruppi di nodi con tenancy esclusiva.

Per un elenco completo dei flag facoltativi che puoi specificare, consulta la documentazione gcloud container node-pools create.

Crea un pool di nodi con un nodo single-tenant condiviso utilizzando un file di affinità dei nodi

Per creare un pool di nodi utilizzando un gruppo di nodi single-tenant condiviso, devi utilizzare le etichette di affinità dei nodi. Puoi anche utilizzare l'affinità dei nodi per scegliere gruppi di nodi dello stesso progetto.

Per fare riferimento alle etichette, segui le istruzioni per creare un pool di nodi, sostituendo il flag --node-group con il flag --sole-tenant-node-affinity-file. Trasferisci un file JSON con queste etichette. Ad esempio, vedi il seguente comando:

  gcloud container node-pools create sole-tenant-node-pool \
      --sole-tenant-node-affinity-file /path/to/affinity/file --cluster my-cluster \
      --location us-central1 --machine-type n1-standard-4  \
      --node-locations=us-central1-a,us-central1-b,us-central1-c

Le seguenti sezioni descrivono i casi d'uso per le etichette di affinità dei nodi con nodi sole-tenant.

Specifica un nome di gruppo di nodi da un progetto

Per utilizzare i gruppi di nodi single-tenant di un progetto e un nome di gruppo di nodi specifici, specifica questi valori nel file di affinità dei nodi. Puoi utilizzare questa affinità se stai creando un pool di nodi multizona in cui i nomi dei gruppi di nodi di ogni zona devono corrispondere. Per utilizzare qualsiasi gruppo di nodi nel progetto proprietario specificato, ometti l'intero blocco compute-googleapis.com/node-group-name dal file JSON.

Vedi il seguente esempio:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "compute.googleapis.com/node-group-name",
    "operator" : "IN",
    "values" : ["GROUP_NAME"]
  },
]

Specificare etichette personalizzate

Puoi anche utilizzare l'affinità e l'anti-affinità dei nodi per creare un pool di nodi utilizzando gruppi di nodi con etichette personalizzate. A ogni gruppo di nodi vengono assegnate automaticamente etichette di affinità predefinite. Puoi fare riferimento alle etichette predefinite come negli esempi precedenti o utilizzare etichette personalizzate designate durante la creazione del modello di nodo. Puoi utilizzare le etichette personalizzate per isolare o raggruppare i carichi di lavoro.

Vedi il seguente esempio:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "workload",
    "operator" : "IN",
    "values" : ["frontend"]
  },
]

Limitazioni

Quando crei un pool di nodi con nodi single-tenant, sei responsabile della gestione della capacità sottostante per i gruppi di nodi single-tenant. Considera come le seguenti funzionalità interagiscono con i gruppi di nodi single-tenant:

Passaggi successivi