Crea un cluster

Questa pagina descrive come creare un cluster GKE su AWS. Puoi anche creare una VPC e un cluster con Terraform.

Questa pagina è rivolta ad amministratori, architetti e operatori che vogliono configurare, monitorare e gestire l'infrastruttura cloud. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta Ruoli e attività comuni degli utenti di GKE Enterprise. Google Cloud

Prima di iniziare

Prima di creare un cluster, devi completare i prerequisiti. In particolare, devi fornire le seguenti risorse:

  • Un VPC AWS in cui verrà eseguito il cluster.
  • Fino a tre sottoreti AWS per le tre repliche del piano di controllo. Ognuna deve essere in una zona di disponibilità AWS diversa.
  • Il ruolo IAM AWS assunto da GKE su AWS durante la gestione del cluster. Ciò richiede un insieme specifico di autorizzazioni IAM.
  • Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati e della configurazione del cluster (etcd).
  • Il profilo istanza AWS IAM per ogni replica del piano di controllo. È necessario un insieme specifico di autorizzazioni IAM.
  • Una coppia di chiavi SSH EC2 (facoltativa) se hai bisogno di accesso SSH alle istanze EC2 che eseguono ogni replica del control plane.

È tua responsabilità creare e gestire queste risorse, che possono essere condivise tra tutti i tuoi cluster GKE. Tutte le altre risorse AWS di base basate su cluster sono gestite da GKE su AWS.

Seleziona gli intervalli CIDR per il cluster

Quando crei un cluster in GKE su AWS, devi fornire gli intervalli di indirizzi IPv4 da utilizzare per i pod e i servizi.

Questi intervalli IP vengono specificati utilizzando la notazione Classless Inter-Domain Routing (CIDR), ad esempio 100.64.0.0/16.

Ti consigliamo i seguenti intervalli CIDR per i servizi e i pod:

  • Servizi: 100.64.0.0/16
  • Pod: 100.96.0.0/11

Questi intervalli sono sufficientemente ampi per consentirti di far crescere il cluster senza problemi.

Le seguenti sezioni forniscono ulteriori dettagli.

Dettagli sulla selezione degli intervalli

GKE su AWS utilizza una rete overlay per i pod e i servizi, pertanto gli intervalli IP di queste reti non devono essere instradabili all'interno del VPC. Gli eventuali intervalli IP utilizzati devono essere garantiti disponibili. Per ulteriori informazioni, consulta Dataplane V2.

  • Gli intervalli IP di pod e servizi possono sovrapporsi alla rete VPC, a condizione che non includano gli intervalli IP della subnet del piano di controllo o del pool di nodi.

  • L'intervallo IP del pod e del servizio deve rientrare in uno dei seguenti intervalli IP privati:

    • 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16: indirizzi IP privati (RFC 1918)
    • 100.64.0.0/10 - Spazio di indirizzi condiviso (RFC 6598)
    • 192.0.0.0/24 - Assegnazioni di protocollo IETF (RFC 6890)
    • 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 - Documentazione (RFC 5737)
    • 192.88.99.0/24 - Relay da IPv6 a IPv4 (non più supportato) (RFC 7526)
    • 198.18.0.0/15 - Test di benchmark (RFC 2544)

Consigliamo intervalli IP compresi tra 100.64.0.0/10 (RFC 6598). Questo intervallo è riservato per la NAT di livello operatore, che probabilmente non viene utilizzata nella VPC.

Ad esempio, la seguente è una configurazione valida in cui le reti di pod, servizio e nodi non si sovrappongono (la VPC utilizza indirizzi IP privati RFC 1918, mentre le reti di pod e servizio sono sovrapposte agli IP privati RFC 6598).

  • Rete VPC: 10.0.0.0/16, 172.16.1.0/24, 172.16.2.0/24
  • Rete pod: 100.65.0.0/16
  • Rete di servizio: 100.66.0.0/16

Anche la seguente è una configurazione valida, nonostante le reti di pod e di servizio si sovrappongano alla rete VPC, poiché non si sovrappongono alle repliche del control plane.

  • Rete VPC: 10.0.0.0/16
  • Rete pod: 10.0.1.0/24
  • Rete di servizio: 10.0.2.0/24
  • Subnet di replica del piano di controllo: 10.0.3.0/24, 10.0.4.0/2410.0.5.0/24

La seguente configurazione è non valida, perché l'intervallo IP del pod si sovrappone alla rete del control plane. Questa sovrapposizione potrebbe impedire ai carichi di lavoro di comunicare con la replica del control plane nella rete VPC:

  • Rete VPC: 10.0.0.0/16
  • Rete pod: 10.0.1.0/24
  • Rete di servizio: 10.1.0.0/24
  • Subnet di replica del piano di controllo: 10.0.1.0/24, 10.0.2.0/2410.0.3.0/24

Dettagli sull'intervallo di indirizzi del pod

Kubernetes assegna gli indirizzi agli oggetti Pod dall'intervallo di indirizzi dei pod. L'intervallo di pod di un cluster è suddiviso in intervalli più piccoli per ciascun nodo. Quando un pod viene pianificato su un determinato nodo, Kubernetes assegna un indirizzo IP del pod dall'intervallo del nodo.

Per calcolare le dimensioni dell'intervallo di indirizzi dei pod, devi stimare il numero di nodi che vuoi nel cluster e il numero di pod che vuoi eseguire su ciascun nodo.

La tabella seguente fornisce consigli sulle dimensioni per gli intervalli CIDR dei pod in base al numero di nodi e pod che intendi eseguire.

Tabella degli intervalli di indirizzi dei pod

Intervallo di indirizzi del pod Indirizzi IP pod massimi Numero massimo di nodi Pod massimi
/24
Minimo intervallo di indirizzi del pod possibile
256 indirizzi 1 nodo 110 pod
/23 512 indirizzi 2 nodi 220 Pods
/22 1024 indirizzi 4 nodi 440 pod
/21 2048 indirizzi 8 nodi Pod 880
/20 4096 indirizzi 16 nodi 1760 pod
/19 8192 indirizzi 32 nodi 3520 pod
/18 16.384 indirizzi 64 nodi 7040 pod
/17 32.768 indirizzi 128 nodi 14.080 pod
/16 65.536 indirizzi 256 nodi 28.160 pod
/15 131.072 indirizzi 512 nodi 56.320 pod
/14 262.144 indirizzi 1024 nodi 112.640 pod

Dettagli sull'intervallo di indirizzi dei servizi

Kubernetes alloca indirizzi IP virtuali per gli oggetti Service, ad esempio i bilanciatori del carico, da questo intervallo di indirizzi.

Per calcolare le dimensioni dell'intervallo di indirizzi di servizio, devi stimare il numero di servizi che vuoi nel cluster.

La tabella seguente fornisce consigli sulle dimensioni per gli intervalli CIDR dei servizi in base al numero di servizi che intendi eseguire.

Tabella degli intervalli di indirizzi di servizio

Intervallo di indirizzi dei servizi Numero massimo di servizi
/27
Minimo intervallo di indirizzi dei servizi possibile
32 servizi
/26 64 servizi
/25 128 servizi
/24 256 servizi
/23 512 Services
/22 1024 servizi
/21 2048 servizi
/20 4096 servizi
/19 8192 servizi
/18 16.384 servizi
/17 32.768 servizi
/16
Maggiore intervallo di indirizzi di servizio possibile
65.536 servizi

Seleziona il progetto host del parco risorse

I parchi risorse sono un Google Cloud concetto per organizzare i cluster in gruppi più grandi. Con i parchi risorse, puoi gestire più cluster su diversi cloud e applicare criteri coerenti a tutti. L'API GKE Multi-Cloud registra automaticamente i cluster in un parco risorse al momento della creazione.

Quando crei un cluster, specifichi un progetto host del parco risorse da cui verrà gestito il cluster. Poiché GKE on AWS utilizza il nome del cluster come nome dell'appartenenza al parco risorse, devi assicurarti che i nomi dei cluster siano univoci nel parco risorse.

Registrazione tra progetti

Se vuoi utilizzare un progetto host di Fleet diverso dal Google Cloud progetto in cui si trova il cluster, devi applicare un'associazione di criteri IAM aggiuntiva all'account di servizio Multi-Cloud Service Agent. In questo modo, l'account di servizio può gestire i parchi risorse con il progetto host del parco risorse.

  1. Per aggiungere Service Agent al progetto, esegui questo comando:

    gcloud beta services identity create --service=gkemulticloud.googleapis.com \
      --project=CLUSTER_PROJECT_NUMBER
    

    Sostituisci CLUSTER_PROJECT_NUMBER con il numero Google Cloud del tuo progetto.

  2. Assegna questa associazione con il seguente comando:

    gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \
      --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com" \
      --role="roles/gkemulticloud.serviceAgent"
    

    Sostituisci quanto segue:

    • FLEET_PROJECT_ID: il progettoGoogle Cloud del tuo progetto host del parco risorse
    • CLUSTER_PROJECT_NUMBER: il numero del Google Cloud progetto

Il nome dell'account agente di servizio multicloud ha il seguente formato: service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com.

Puoi trovare i tuoi account di servizio nella pagina Account di servizio della Google Cloud console. Per scoprire di più su come trovare il numero di progetto, consulta la sezione Identificazione dei progetti.

Crea il cluster

Utilizza il seguente comando per creare il cluster in GKE su AWS. Per ulteriori informazioni su questo comando, inclusi i relativi parametri facoltativi, consulta la pagina di riferimento gcloud container aws.

gcloud container aws clusters create CLUSTER_NAME \
  --aws-region AWS_REGION \
  --location GOOGLE_CLOUD_LOCATION \
  --cluster-version CLUSTER_VERSION \
  --fleet-project FLEET_PROJECT \
  --vpc-id VPC_ID \
  --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
  --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \
  --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \
  --role-arn API_ROLE_ARN \
  --database-encryption-kms-key-arn DB_KMS_KEY_ARN \
  --admin-users ADMIN_USERS_LIST \
  --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
  --iam-instance-profile CONTROL_PLANE_PROFILE \
  --tags "Name=CLUSTER_NAME-cp"

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster scelto
  • AWS_REGION: la regione AWS in cui creare il cluster
  • GOOGLE_CLOUD_LOCATION: il nome della Google Cloud posizione da cui verrà gestito questo cluster, come definito nelle Google Cloud regioni di gestione.
  • CLUSTER_VERSION: la versione di Kubernetes da installare sul tuo cluster
  • FLEET_PROJECT: il progetto Parco risorse host in cui verrà registrato il cluster. Se vuoi gestire questo cluster da un altroGoogle Cloud progetto, consulta la sezione Registrazione tra progetti.
  • VPC_ID: l'ID della VPC AWS per questo cluster
  • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3: gli ID subnet per le tre istanze del control plane del tuo cluster
  • POD_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i pod del tuo cluster
  • SERVICE_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i servizi del cluster
  • API_ROLE_ARN: l'ARN del ruolo dell'API GKE Multi-cloud
  • CONTROL_PLANE_PROFILE: il profilo dell'istanza IAM associata al cluster. Per informazioni dettagliate su come aggiornare un profilo istanza IAM, consulta Aggiornare il profilo istanza AWS IAM.
  • DB_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS di AWS per criptare i secret del cluster
  • CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave AWS KMS per criptare i dati utente
  • ADMIN_USERS_LIST (facoltativo): un elenco separato da virgole degli indirizzi email degli utenti a cui concedere i privilegi amministrativi, ad esempio "kai@example.com,hao@example.com,kalani@example.com". Valore predefinito: l'utente che crea il cluster

Se presente, il parametro --tags applica il tag AWS specificato a tutte le risorse AWS sottostanti gestite da GKE su AWS. Questo esempio contrassegna i nodi del control plane con il nome del cluster a cui appartengono.

Non potrai accedere tramite SSH a questi nodi del piano di controllo, a meno che non specifichi una coppia di chiavi SSH con il flag --ssh-ec2-key-pair.

Per visualizzare tutte le versioni di Kubernetes supportate in una determinata Google Cloud posizione, esegui il seguente comando.

gcloud container aws get-server-config --location GCP_LOCATION

Autorizza Cloud Logging / Cloud Monitoring

Affinché GKE su AWS possa creare e caricare log e metriche di sistema su Google Cloud, deve essere autorizzato.

Per autorizzare l'identità del carico di lavoro Kubernetes gke-system/gke-telemetry-agent a scrivere log in Google Cloud Logging e metriche in Google Cloud Monitoring, esegui questo comando:

gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
  --member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
  --role=roles/gkemulticloud.telemetryWriter

Sostituisci GOOGLE_PROJECT_ID con l'ID Google Cloud del progetto del cluster.

Questa associazione IAM concede l'accesso a tutti i cluster del progetto Google Cloud per caricare log e metriche. Devi eseguirlo solo dopo aver creato il primo cluster per il progetto.

L'aggiunta di questa associazione IAM non andrà a buon fine a meno che non sia stato creato almeno un cluster nel tuo Google Cloud progetto. Questo perché il pool di identità per i carichi di lavoro a cui fa riferimento (GOOGLE_PROJECT_ID.svc.id.goog) non viene eseguito fino alla creazione del cluster.

Passaggi successivi