Crea un pool di nodi

Per creare un pool di nodi in GKE su AWS, devi fornire le seguenti risorse:

  • Il nome di un cluster AWS esistente in cui creare il pool di nodi
  • Un profilo di istanza IAM per le VM del pool di nodi
  • Una subnet in cui verranno eseguite le VM del pool di nodi

Se vuoi accedere tramite SSH ai tuoi nodi, puoi creare una coppia di chiavi EC2.

Crea un pool di nodi standard

Una volta disponibili le risorse, puoi creare un pool di nodi con questo comando:

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --instance-type INSTANCE_TYPE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Sostituisci quanto segue:

  • NODE_POOL_NAME: un nome scelto da te per il pool di nodi
  • CLUSTER_NAME: il nome del cluster a cui collegare il pool di nodi
  • INSTANCE_TYPE: il tipo di istanza di macchina AWS desiderato per questo pool di nodi, ad esempio m5.large
  • ROOT_VOLUME_SIZE: la dimensione desiderata per il volume principale di ogni nodo, in GB
  • NODEPOOL_PROFILE: il profilo dell'istanza IAM per le VM del pool di nodi. Per maggiori dettagli su come aggiornare un profilo di istanza IAM, consulta Aggiornare il profilo di un'istanza AWS IAM.
  • NODE_VERSION: la versione di Kubernetes da installare su ciascun nodo nel pool di nodi (ad es. "1.29.4-gke.200")
  • MIN_NODES: il numero minimo di nodi che il pool di nodi può contenere
  • MAX_NODES: il numero massimo di nodi che il pool di nodi può contenere
  • MAX_PODS_PER_NODE: numero massimo di pod che è possibile creare su qualsiasi singolo nodo del pool
  • GOOGLE_CLOUD_LOCATION: nome della località Google Cloud da cui verrà gestito questo pool di nodi
  • NODEPOOL_SUBNET: l'ID della subnet in cui verrà eseguito il pool di nodi.
    • Non deve esserci alcuna sovrapposizione tra gli intervalli IP di pod/servizio del cluster e la rete di subnet del pool di nodi. Per ulteriori informazioni sulla selezione degli intervalli IP di pod e servizi per il tuo cluster, consulta Selezionare gli intervalli CIDR per il cluster
    • Se questa subnet si trova all'esterno del blocco CIDR primario del VPC, sono necessari alcuni passaggi aggiuntivi. Per maggiori informazioni, consulta la pagina relativa ai gruppi di sicurezza.
  • SSH_KEY_PAIR_NAME: nome della coppia di chiavi AWS SSH creata per l'accesso SSH (facoltativo)
  • CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS AWS che cripta i dati utente

Se presente, il parametro --tags applica il tag specificato a tutti i nodi nel pool di nodi. Questo esempio codifica tutti i nodi del pool con i nomi del cluster e del pool di nodi a cui appartiene.

Pool di nodi di istanza spot

GKE su AWS supporta i pool di nodi di istanze spot AWS come funzionalità di anteprima. I pool di nodi di istanze spot sono pool di istanze Spot di Amazon EC2 disponibili su AWS a un costo inferiore.

Le istanze spot possono comportare risparmi sui costi per le applicazioni stateless, a tolleranza di errore e flessibili. Tuttavia, non sono adatti a carichi di lavoro rigidi, stateful, a tolleranza di errore o caratterizzati dall'alto accoppiamento tra nodi di istanza. Le istanze Spot possono essere interrotte da Amazon EC2 quando EC2 ha bisogno di recuperare la capacità, pertanto sono soggette alle fluttuazioni nel mercato Spot. Se i tuoi carichi di lavoro richiedono capacità garantita e non possono tollerare periodi di indisponibilità occasionali, scegli un pool di nodi standard anziché un pool di nodi di istanza spot.

La strategia di allocazione utilizzata in GKE su AWS si concentra sulla selezione dei pool di istanze spot con la massima disponibilità di capacità, riducendo al minimo il rischio di interruzioni. Questo approccio è particolarmente utile per i carichi di lavoro con un costo di interruzione maggiore, come rendering di immagini e contenuti multimediali o deep learning. In particolare, è stata implementata la strategia di allocazione capacityOptimized, come descritto in Strategie di allocazione per le istanze spot.

Crea un pool di nodi Spot

Per creare un pool di nodi di istanza spot, esegui questo comando:

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --spot-instance-types INSTANCE_TYPE_LIST \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome che vuoi assegnare a questo pool di nodi.
  • CLUSTER_NAME: il nome del cluster a cui vuoi collegare questo pool di nodi.
  • INSTANCE_TYPE_LIST: un elenco separato da virgole di tipi di istanze AWS EC2. Il pool di nodi esegue il provisioning delle istanze Spot con questi tipi di istanza. I tipi di istanza devono avere la stessa architettura della CPU, lo stesso numero di CPU e la stessa quantità di memoria. Ad esempio: "c6g.large,c6gd.large,c6gn.large,c7g.large,t4g.medium". Puoi utilizzare lo strumento Selettore di istanze Amazon EC2 per trovare tipi di istanza con configurazioni di CPU e memoria identiche.
  • ROOT_VOLUME_SIZE: la dimensione desiderata per il volume principale di ogni nodo, in GB
  • NODEPOOL_PROFILE: il profilo dell'istanza IAM per le VM del pool di nodi
  • NODE_VERSION: la versione di Kubernetes da installare su ciascun nodo nel pool di nodi (ad es. "1.29.4-gke.200")
  • MIN_NODES: il numero minimo di nodi che il pool di nodi può contenere
  • MAX_NODES: il numero massimo di nodi che il pool di nodi può contenere
  • MAX_PODS_PER_NODE: numero massimo di pod che è possibile creare su qualsiasi singolo nodo del pool
  • GOOGLE_CLOUD_LOCATION: nome della località Google Cloud da cui verrà gestito questo pool di nodi
  • NODEPOOL_SUBNET: l'ID della subnet in cui verrà eseguito il pool di nodi.
    • Non deve esserci alcuna sovrapposizione tra gli intervalli IP di pod/servizio del cluster e la rete di subnet del pool di nodi. Per ulteriori informazioni sulla selezione degli intervalli IP di pod e servizi per il tuo cluster, consulta Selezionare gli intervalli CIDR per il cluster
    • Se questa subnet si trova all'esterno del blocco CIDR primario del VPC, sono necessari alcuni passaggi aggiuntivi. Per maggiori informazioni, consulta la pagina relativa ai gruppi di sicurezza.
  • SSH_KEY_PAIR_NAME: nome della coppia di chiavi AWS SSH creata per l'accesso SSH (facoltativo)
  • CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS AWS che cripta i dati utente

La best practice prevede l'elenco di un certo numero di tipi di istanza nel campo INSTANCE_TYPE_LIST. Questa best practice è importante perché se un pool di nodi è configurato con un solo tipo di istanza e quel tipo di istanza non è disponibile in nessuna delle zone di disponibilità desiderate, il pool di nodi non può eseguire il provisioning di nuovi nodi. Ciò può influire sulla disponibilità delle applicazioni e può causare interruzioni del servizio.

Tieni presente che il campo spot-instance-types si escludono a vicenda con il campo instance-type. Ciò significa che puoi fornire solo uno di questi campi e non entrambi.