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


Questa pagina mostra come isolare i carichi di lavoro in esecuzione su cluster Google Kubernetes Engine (GKE) standard 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 di proprietà esclusiva dal progetto del cluster GKE o nodi di proprietà esclusiva condivisi utilizzando le risorse dei progetti all'interno della tua organizzazione. Ad esempio, puoi designare un progetto proprietario nella tua organizzazione in cui crei gruppi di nodi di proprietà esclusiva e progetti consumer in cui hai 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à, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo gcloud components update.

Richiedi quota aggiuntiva

I nodi single-tenant sono di grandi dimensioni (ad esempio 96 vCPU e 624 GB di memoria) e le quote del 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 Quote.

Il numero di CPU di cui hai bisogno dipende da quanto segue:

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

Esamina il numero di core del tipo di nodo di proprietà esclusiva e richiedi un limite di CPU di almeno questa quantità, preferibilmente con 10 CPU aggiuntive per assicurarti che il progetto abbia una capacità adeguata.

Creare un modello di nodo single-tenant

Un modello di nodo single-tenant è una risorsa regionale che definisce e applica proprietà a ogni nodo durante la creazione di un gruppo di nodi. Per ulteriori informazioni, consulta i 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 di proprietà esclusiva 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 modello di nodo.

  4. Seleziona un tipo di nodo.

  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 modello 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 modello di nodo.
  • NODE_TYPE: il tipo di nodo per i nodi single-tenant creati in base a questo modello. Utilizza il comando gcloud compute sole-tenancy node-types list per visualizzare un elenco dei tipi di nodi disponibili in ogni zona.
  • AFFINITY_LABELS: le chiavi e i valori, [KEY=VALUE,...], per le etichette di affinità. Le etichette di affinità ti consentono di raggruppare logicamente i nodi e i gruppi di nodi e, in un secondo momento, durante il provisioning delle VM, puoi specificare le etichette di affinità sulle VM per pianificarle su un insieme specifico di nodi o gruppi di nodi. Per ulteriori informazioni, consulta Affinità nodo e anti-affinità.
  • COMPUTE_REGION: la regione in cui creare il modello di nodo. Puoi utilizzare questo modello 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].

Creare 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 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 di proprietà esclusiva:

  1. Vai alla pagina Nodi di proprietà esclusiva nella console Google Cloud.

    Vai a Nodi single-tenant

  2. Fai clic su Crea gruppo di nodi.

  3. Specifica un nome per il modello di nodo.

  4. Seleziona la stessa Regione in cui hai creato il modello di nodo, quindi seleziona una Zona in quella Regione.

  5. Seleziona il modello di nodo.

  6. Se vuoi, attiva la modalità di scalabilità automatica.

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

  8. (Facoltativo) Modifica il criterio di manutenzione.

  9. Se vuoi, per condividere il gruppo di nodi di proprietà esclusiva, configura le impostazioni di condivisione specificando una delle seguenti opzioni nella sezione Configura le 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 modello di nodo che stai utilizzando.
  • TEMPLATE_NAME: il nome del modello di nodo che utilizzi.
  • TARGET_SIZE: il numero di nodi da creare nel gruppo.
  • SHARE_SETTING: l'impostazione di condivisione per il gruppo di nodi. Imposta su projects per condividerlo con progetti specifici o su organization per condividerlo con l'intera organizzazione.
  • PROJECTS: un elenco di ID progetto o di 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 di proprietà singola. In caso contrario, crea un cluster con gcloud container clusters create.

Se utilizzi un cluster a livello di area geografica 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 distinti per ogni zona.

Crea un pool di nodi con un gruppo di nodi di proprietà esclusiva dal progetto del cluster

Per creare un pool di nodi utilizzando un gruppo di nodi del progetto del cluster, passa il nome del gruppo di nodi di proprietà esclusiva. Se vuoi utilizzare un gruppo di nodi di proprietà esclusiva condiviso o vuoi utilizzare etichette di affinità dei nodi personalizzate che hai configurato quando hai creato il modello di nodo di proprietà esclusiva, consulta le istruzioni per creare un pool di nodi con un nodo di proprietà esclusiva 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 \
      --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE

Per i node pool regionali:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --region COMPUTE_REGION --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 di proprietà esclusiva esistente che vuoi utilizzare.
  • CLUSTER_NAME: il nome del cluster in cui stai creando il pool di nodi.
  • COMPUTE_REGION: la stessa regione del tuo cluster.
  • MACHINE_TYPE: il tipo di macchina del pool di nodi.
  • COMPUTE_ZONE1, COMPUTE_ZONE2,[...]: le zone per i gruppi di nodi con proprietà esclusiva.

Per un elenco completo dei flag facoltativi che puoi specificare, consulta la documentazione di 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 di proprietà esclusiva 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. Passa un file JSON con queste etichette. Ad esempio, guarda il seguente comando:

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

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

Specifica il nome di un gruppo di nodi di un progetto

Per utilizzare gruppi di nodi single-tenant da 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"]
  },
]

Specifica le 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 le etichette di affinità predefinite. Puoi fare riferimento alle etichette predefinite come negli esempi precedenti oppure utilizzare le 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. Valuta come le seguenti funzionalità interagiscono con i gruppi di nodi di proprietà esclusiva:

Passaggi successivi