Questo argomento descrive come personalizzare la configurazione di un cluster utenteGKE su AWS.
Potresti voler creare un cluster utente personalizzato per i seguenti motivi:
- Creare un altro cluster per un ambiente di staging o di test.
- Aggiungere node pool con tipi di macchine diversi.
- Creare un cluster in zone di disponibilità (AZ) AWS specifiche.
Prima di iniziare
Prima di iniziare a utilizzare GKE su AWS, assicurati di aver eseguito le seguenti attività:
- Completa i prerequisiti.
Installa un servizio di gestione.
Se vuoi creare un cluster senza utilizzare
terraform output example_cluster, devi avere subnet AWS private per il control plane. Ogni subnet deve appartenere a una zona di disponibilità diversa nella stessa regione AWS. Le tabelle di routing devono essere configurate per consentire il traffico tra le subnet private e ogni subnet deve avere accesso a un gateway NAT.Devi avere l'ID del tuo Virtual Private Cloud (VPC) AWS. Un ID VPC ha un aspetto simile a
vpc-012345678abcde. Puoi trovare l'ID VPC nella console AWS.
Per connetterti alle risorse GKE su AWS, segui questi passaggi. Seleziona se hai un VPC AWS esistente (o una connessione diretta al VPC) o se hai creato un VPC dedicato durante la creazione del servizio di gestione.
VPC esistente
Se hai una connessione diretta o VPN a un VPC esistente, ometti la riga env HTTP_PROXY=http://localhost:8118 dai comandi in questo argomento.
VPC dedicato
Quando crei un servizio di gestione in un VPC dedicato, GKE su AWS include un bastion host in una subnet pubblica.
Per connetterti al servizio di gestione:
Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante l' installazione del servizio di gestione.
cd anthos-aws
Per aprire il tunnel, esegui lo script
bastion-tunnel.sh. Il tunnel inoltra alocalhost:8118.Per aprire un tunnel al bastion host, esegui questo comando:
./bastion-tunnel.sh -NI messaggi del tunnel SSH vengono visualizzati in questa finestra. Quando sei pronto per chiudere la connessione, interrompi il processo utilizzando Control+C o chiudendo la finestra.
Apri un nuovo terminale e passa alla directory
anthos-aws.cd anthos-aws
Verifica di poter connetterti al cluster con
kubectl.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-infoL'output include l'URL del server API del servizio di gestione.
Selezionare le dimensioni dell'istanza del control plane
GKE su AWS non supporta il ridimensionamento delle istanze del control plane. Prima di creare il cluster utente, seleziona le dimensioni dell'istanza dei control plane. Le dimensioni del control plane dipendono dal numero di nodi nel cluster. La tabella seguente contiene le dimensioni consigliate delle istanze del control plane per varie dimensioni del cluster.
| Dimensioni del cluster (nodi) | Tipo di istanza del control plane |
|---|---|
| 1-10 | m5.large |
| 11-100 | m5.xlarge |
| 101-200 | m5.2xlarge |
Creare un nuovo cluster con una configurazione personalizzata
Puoi utilizzare
terraform output example_cluster
per creare la configurazione di un cluster utente per cluster di gestione. Se vuoi creare altri cluster, devi applicare una configurazione personalizzata.
In questo esempio, crei un cluster manualmente dai CRD AWSCluster e AWSNodePool.
Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante l' installazione del servizio di gestione.
cd anthos-aws
Dalla directory
anthos-aws, utilizzaanthos-gkeper passare al contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Apri un editor di testo e copia la seguente definizione
AWSClusterin un file denominatocustom-cluster.yaml.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: CLUSTER_NAME spec: region: AWS_REGION networking: vpcID: VPC_ID podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS controlPlane: version: CLUSTER_VERSION # Latest version is 1.25.5-gke.2100 instanceType: AWS_INSTANCE_TYPE keyName: SSH_KEY_NAME subnetIDs: - CONTROL_PLANE_SUBNET_IDS securityGroupIDs: - CONTROL_PLANE_SECURITY_GROUPS iamInstanceProfile: CONTROL_PLANE_IAM_ROLE rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKETSostituisci quanto segue:
- CLUSTER_NAME: il nome del tuo cluster.
AWS_REGION: la regione AWS in cui è in esecuzione il cluster.
VPC_ID: l'ID del VPC in cui è in esecuzione il cluster.
POD_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi IPv4 utilizzati dai pod del cluster. Al momento è supportato un solo intervallo. L'intervallo non deve sovrapporsi a nessuna subnet raggiungibile dalla tua rete. È sicuro utilizzare lo stesso intervallo in più oggetti AWSCluster diversi. Ad esempio,
10.2.0.0/16.SERVICE_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi IPv4 utilizzati dai servizi del cluster. Al momento è supportato un solo intervallo. L'intervallo non deve sovrapporsi a nessuna subnet raggiungibile dalla tua rete. È sicuro utilizzare lo stesso intervallo in più oggetti AWSCluster diversi. Ad esempio,
10.1.0.0/16.SERVICE_LOAD_BALANCER_SUBNETS: gli ID subnet in cui GKE su AWS può creare bilanciatori del carico pubblici o privati.
CLUSTER_VERSION: una versione di Kubernetes supportata da GKE su AWS. La versione più recente è 1.25.5-gke.2100.
AWS_INSTANCE_TYPE: un tipo di istanza EC2 supportato.
SSH_KEY_NAME: una coppia di chiavi AWS EC2.
CONTROL_PLANE_SUBNET_IDS: gli ID subnet nelle zone di disponibilità in cui sono in esecuzione le istanze del control plane.
CONTROL_PLANE_SECURITY_GROUPS: un securityGroupID creato durante l'installazione del servizio di gestione. Puoi personalizzarlo aggiungendo tutti i securityGroupIDs necessari per connetterti al control plane.
CONTROL_PLANE_IAM_PROFILE: il nome del profilo dell'istanza AWS EC2 assegnato alle repliche del control plane.
ROOT_VOLUME_SIZE: le dimensioni, in gibibyte (GiB), dei volumi di root del control plane.
ROOT_VOLUME_TYPE con il tipo di volume EBS. Ad esempio,
gp3.ROOT_VOLUME_IOPS con la quantità di operazioni di I/O sottoposte a provisioning al secondo (IOPS) per il volume. Valido solo quando
volumeTypeèGP3. Per ulteriori informazioni, vedi Volumi SSD per uso generico (gp3).ROOT_VOLUME_KEY con l'Amazon Resource Name della chiave AWS KMS che cripta i volumi di root dell'istanza del control plane.
ETCD_VOLUME_SIZE: le dimensioni dei volumi utilizzati da etcd.
ETCD_VOLUME_TYPE con il tipo di volume EBS. Ad esempio,
gp3.ETCD_VOLUME_IOPS con la quantità di operazioni di I/O sottoposte a provisioning al secondo (IOPS) per il volume. Valido solo quando
volumeTypeègp3. Per ulteriori informazioni, vedi Volumi SSD per uso generico (gp3).ETCD_VOLUME_KEY con l'Amazon Resource Name della chiave AWS KMS che cripta i volumi di dati etcd del control plane.
ARN_OF_KMS_KEY: la chiave AWS KMS utilizzata per criptare i secret del cluster.
ANTHOS_CONNECT_NAME: il nome dell'appartenenza a Connect utilizzato per registrare il cluster. Il nome dell'appartenenza deve essere univoco. Ad esempio,
projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME, doveYOUR_PROJECTè il tuo Google Cloud progetto eCLUSTER_NAMEè un nome univoco nel tuo progetto. Questo campo è facoltativo.YOUR_PROJECT: il tuo ID progetto.
GCP_REGION: la Google Cloud regione in cui vuoi archiviare i log. Scegli una regione vicina alla regione AWS. Per ulteriori informazioni, vedi Località a livello globale - Regioni e zone, ad esempio
us-central1.ENABLE_LOGGING:
trueofalse, indica se Cloud Logging è abilitato sui nodi del control plane.ENABLE_MONITORING:
trueofalse, indica se Cloud Monitoring è abilitato sui nodi del control plane.WORKLOAD_IDENTITY_BUCKET: il nome del bucket Cloud Storage contenente le informazioni di rilevamento dell'identità del carico di lavoro. Questo campo è facoltativo.
Crea uno o più AWSNodePool per il cluster. Apri un editor di testo e copia la seguente definizione AWSCluster in un file denominato
custom-nodepools.yaml.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # OptionalSostituisci quanto segue:
- NODE_POOL_NAME: un nome univoco per il tuo AWSNodePool.
- AWSCLUSTER_NAME: il nome del tuo AWSCluster. Ad esempio,
staging-cluster. - CLUSTER_VERSION: una versione di Kubernetes supportata da GKE su AWS .
- AWS_REGION: la stessa regione AWS del tuo AWSCluster.
- AWS_SUBNET_ID: una subnet AWS nella stessa regione del tuo AWSCluster.
- MINIMUM_NODE_COUNT: il numero minimo di nodi nel pool di nodi. Per ulteriori informazioni, vedi Scalare i cluster utente.
- MAXIMUM_NODE_COUNT: il numero massimo di nodi nel pool di nodi.
- MAXIMUM_PODS_PER_NODE_COUNT: il numero massimo di pod che GKE su AWS può allocare a un nodo.
- AWS_NODE_TYPE: un tipo di istanza AWS EC2.
- KMS_KEY_PAIR_NAME: la coppia di chiavi AWS KMS assegnata a ogni worker pool di nodi.
- NODE_IAM_PROFILE: il nome del profilo dell'istanza AWS EC2 assegnato ai nodi nel pool.
- ROOT_VOLUME_SIZE: le dimensioni, in gibibyte (GiB), dei volumi di root del control plane.
- VOLUME_TYPE: il tipo di volume AWS
EBS del nodo.
Ad esempio,
gp3. - IOPS: la quantità di operazioni di I/O sottoposte a provisioning al secondo (IOPS)
per i volumi. Valido solo quando
volumeTypeègp3. - NODE_VOLUME_KEY: l'ARN della chiave AWS KMS utilizzata per criptare il volume. Per ulteriori informazioni, vedi Utilizzare una CMK gestita dal cliente per criptare i volumi.
Applica i manifest al servizio di gestione.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
Creare un file kubeconfig
Durante l'avvio del cluster utente, puoi creare un contesto kubeconfig per il nuovo cluster utente. Utilizza il contesto per autenticare un cluster utente o di gestione.
Utilizza
anthos-gke aws clusters get-credentialsper generare unkubeconfigper il cluster utente in~/.kube/config.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAMESostituisci CLUSTER_NAME con il nome del cluster. Ad esempio,
cluster-0.Utilizza
kubectlper autenticare il nuovo cluster utente.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-infoSe il cluster è pronto, l'output include gli URL dei componenti Kubernetes all'interno del cluster.
Visualizzare lo stato del cluster
Il servizio di gestione esegue il provisioning delle risorse AWS quando applichi un AWSCluster o un AWSNodePool.
Dalla directory
anthos-aws, utilizzaanthos-gkeper passare al contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Per elencare i cluster, utilizza
kubectl get AWSClusters.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClustersL'output include il nome, lo stato, l'età, la versione e l'endpoint di ogni cluster.
Ad esempio, l'output seguente include un solo
AWSClusterdenominatocluster-0:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Visualizzare gli eventi del cluster
Per visualizzare gli eventi Kubernetes recenti
del cluster utente, utilizza kubectl get events.
Dalla directory
anthos-aws, utilizzaanthos-gkeper passare al contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Esegui
kubectl get events.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
L'output include informazioni, avvisi ed errori relativi al servizio di gestione.
Eliminare un cluster utente
Per eliminare un cluster utente:
Dalla directory
anthos-aws, utilizzaanthos-gkeper passare al contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Utilizza
kubectl deleteper eliminare il manifest contenente i cluster utente.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILESostituisci CLUSTER_FILE con il nome del manifest contenente gli oggetti AWScluster e AWSNodePool. Ad esempio,
cluster-0.yaml.
Eliminare tutti i cluster utente
Per eliminare tutti i cluster utente:
Dalla directory
anthos-aws, utilizzaanthos-gkeper passare al contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Utilizza
kubectl deleteper eliminare AWSNodePool e AWSCluster dal servizio di gestione.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
Per ulteriori informazioni, vedi Disinstallare GKE su AWS.
Passaggi successivi
Configura il provider di identità con il GKE Identity Service.
Avvia il tuo primo workload su GKE su AWS.
Crea un deployment rivolto all'esterno utilizzando un bilanciatore del carico o Ingress.
Leggi le specifiche delle AWSCluster AWSCluster e AWSNodePool.