Crea un cluster

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

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

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 subnet AWS per le tre repliche del control plane. Ognuna deve trovarsi in una zona di disponibilità AWS diversa.
  • Il ruolo IAM AWS che GKE su AWS assume durante la gestione del cluster. È necessario un insieme specifico di autorizzazioni IAM.
  • Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati (etcd) e della configurazione del cluster.
  • Il profilo dell'istanza IAM AWS per ogni replica del control plane. È necessario un insieme specifico di autorizzazioni IAM.
  • Una coppia di chiavi SSH EC2 (facoltativa) se hai bisogno dell'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 cluster GKE. Tutte le altre risorse AWS sottostanti con ambito 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 pod e 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 servizi e pod:

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

Questi intervalli sono abbastanza grandi da consentirti di espandere il cluster senza problemi.

Le seguenti sezioni forniscono ulteriori dettagli.

Dettagli sulla selezione degli intervalli

GKE su AWS utilizza una rete di overlay per pod e servizi, quindi gli intervalli IP per queste reti non devono essere instradabili all'interno del VPC. Tutti gli intervalli IP che utilizzi devono essere garantiti come 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 control plane o del pool di nodi.

  • L'intervallo IP di pod e servizi 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 (deprecato) (RFC 7526)
    • 198.18.0.0/15 — Test di benchmark (RFC 2544)

Ti consigliamo gli intervalli IP all'interno di 100.64.0.0/10 (RFC 6598). Questo intervallo è riservato al NAT di livello carrier, che probabilmente non viene utilizzato nel tuo VPC.

Ad esempio, la seguente è una configurazione valida in cui le reti di pod, servizi e nodi non si sovrappongono (il VPC utilizza indirizzi IP privati RFC 1918, mentre le reti di pod e servizi 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 di pod: 100.65.0.0/16
  • Rete di servizi: 100.66.0.0/16

La seguente è anche una configurazione valida, nonostante le reti di pod e servizi si sovrappongano alla rete VPC, perché non si sovrappongono alle repliche del control plane.

  • Rete VPC: 10.0.0.0/16
  • Rete di pod: 10.0.1.0/24
  • Rete di servizi: 10.0.2.0/24
  • Subnet delle repliche del control plane: 10.0.3.0/24, 10.0.4.0/2410.0.5.0/24

La seguente configurazione non è valida, perché l'intervallo IP dei 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 di pod: 10.0.1.0/24
  • Rete di servizi: 10.1.0.0/24
  • Subnet delle repliche del control plane: 10.0.1.0/24, 10.0.2.0/2410.0.3.0/24

Dettagli sull'intervallo di indirizzi dei pod

Kubernetes alloca gli indirizzi agli oggetti pod dall'intervallo di indirizzi dei pod. L'intervallo di pod di un cluster è suddiviso in intervalli più piccoli per ogni nodo. Quando un pod viene pianificato su un nodo specifico, 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 ogni nodo.

La tabella seguente fornisce consigli sulle dimensioni degli 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 dei pod Indirizzi IP dei pod massimi Numero massimo di nodi Numero massimo di pod
/24
Intervallo di indirizzi dei pod più piccolo possibile
256 indirizzi 1 nodo 110 pod
/23 512 indirizzi 2 nodi 220 pod
/22 1024 indirizzi 4 nodi 440 pod
/21 2048 indirizzi 8 nodi 880 pod
/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 servizio, ad esempio, i bilanciatori del carico, da questo intervallo di indirizzi.

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

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

Tabella degli intervalli di indirizzi di emergenza

Intervallo di indirizzi dei servizi Numero massimo di servizi
/27
Intervallo di indirizzi di emergenza più piccolo possibile
32 servizi
/26 64 servizi
/25 128 servizi
/24 256 servizi
/23 512 servizi
/22 1024 servizi
/21 2048 servizi
/20 4096 servizi
/19 8192 servizi
/18 16.384 servizi
/17 32.768 servizi
/16
Intervallo di indirizzi dei servizi più grande 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. L'API GKE Multi-cloud registra automaticamente i cluster in un parco risorse quando viene creato il cluster.

Quando crei un cluster, devi specificare un progetto host del parco risorse da cui verrà gestito il cluster. Poiché GKE su AWS utilizza il nome del cluster come nome di 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 del parco risorse diverso dal Google Cloud progetto in cui si trova il cluster, devi applicare un'associazione di criteri IAM aggiuntiva al account di servizio dell'agente di servizio multi-cloud. In questo modo, il account di servizio può gestire i parchi risorse con il progetto host del parco risorse.

  1. Per aggiungere l'agente di servizio al progetto, esegui questo comando:

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

    Sostituisci CLUSTER_PROJECT_NUMBER con il tuo Google Cloud progetto numero.

  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 progetto del progetto host del parco risorse Google Cloud
    • CLUSTER_PROJECT_NUMBER: il tuo Google Cloud numero di progetto

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

Puoi trovare i tuoi service account nella pagina dei Google Cloud service account della console. Per ulteriori informazioni su come trovare il numero del progetto, consulta Identifica i progetti.

Crea il cluster

Utilizza il seguente comando per creare il cluster in GKE su AWS. Per ulteriori informazioni su questo comando, inclusi i parametri facoltativi, consulta la pagina di riferimento di 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 località da cui verrà gestito questo cluster, come definito nelle Google Cloud regioni di gestione.
  • CLUSTER_VERSION: la versione di Kubernetes da installare sul cluster
  • FLEET_PROJECT: il progetto host del parco risorse in cui verrà registrato il cluster. Se vuoi gestire questo cluster da un altro Google Cloud progetto, consulta Registrazione tra progetti.
  • VPC_ID: l'ID del VPC AWS per questo cluster
  • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3: gli ID delle subnet per le tre istanze del control plane del cluster
  • POD_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i pod del 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 dell'istanza IAM, consulta Aggiorna il profilo dell'istanza IAM AWS.
  • DB_KMS_KEY_ARN: il nome risorsa Amazon (ARN) di la chiave AWS KMS per criptare i secret del cluster
  • CONFIG_KMS_KEY_ARN: il nome risorsa Amazon (ARN) della chiave AWS KMS per criptare i dati utente
  • ADMIN_USERS_LIST (facoltativo): un elenco separato da virgole di indirizzi email degli utenti a cui concedere i privilegi amministrativi, ad esempio "kai@example.com,hao@example.com,kalani@example.com". Il 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 assegna un tag ai nodi del control plane con il nome del cluster a cui appartengono.

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

Per visualizzare tutte le versioni di Kubernetes supportate in una determinata Google Cloud località, 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 in 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 del progetto del cluster. Google Cloud

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

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

Passaggi successivi