Questo argomento descrive come personalizzare la configurazione di un cluster Anthos su AWS su GKE (AWS) su AWS.
Puoi creare un cluster utente personalizzato per i seguenti motivi:
- Creazione di un altro cluster per un ambiente gestione temporanea o di test.
- Aggiunta di pool di nodi con tipi di macchine diversi.
- Creazione di un cluster in zone di disponibilità AWS specifiche.
Prima di iniziare
Prima di iniziare a utilizzare Cluster Anthos on AWS, assicurati di aver eseguito le seguenti attività:
- Compila i Prerequisiti.
Installa un servizio di gestione.
Se vuoi creare un cluster senza utilizzare
terraform output example_cluster
, crea subnet AWS private per il tuo piano di controllo. Ogni subnet deve appartenere a una diversa AZ nella stessa regione AWS. Le tabelle di route devono essere configurate per consentire il traffico tra subnet private e ogni subnet deve avere accesso a un gateway NAT.Avere il tuo ID AWS Virtual Private Cloud (VPC). Un ID VPC è simile a
vpc-012345678abcde
. Puoi trovare l'ID VPC nella console AWS.
Per connetterti ai cluster Anthos sulle risorse AWS, esegui questi passaggi: Seleziona questa opzione se disponi di un VPC AWS (o connessione diretta al tuo VPC) esistente 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, Cluster Anthos on AWS include un host bastion in una subnet pubblica.
Per connetterti al servizio di gestione, segui questi passaggi:
Passa alla directory con la configurazione di Cluster Anthos on 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 il comando seguente:
./bastion-tunnel.sh -N
I messaggi del tunnel SSH vengono visualizzati in questa finestra. Quando è tutto pronto per chiudere la connessione, interrompi il processo utilizzando Ctrl+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-info
L'output include l'URL del server API del servizio di gestione.
Seleziona una dimensione dell'istanza del piano di controllo
I cluster Anthos su AWS non supportano il ridimensionamento delle istanze del piano di controllo. Prima di creare il cluster utente, seleziona le dimensioni dell'istanza dei piani di controllo. Le dimensioni del piano di controllo dipendono dal numero di nodi nel cluster. La seguente tabella contiene le dimensioni dell'istanza del piano di controllo consigliate per le varie dimensioni del cluster.
Dimensione cluster (nodi) | Tipo di istanza piano di controllo |
---|---|
1-10 | M5.Large |
11-100 | m5.xlarge |
101-200 | m5,2xlarge |
Creazione di un nuovo cluster con una configurazione personalizzata
Puoi utilizzare terraform output example_cluster
per creare la configurazione per un cluster utente per cluster di gestione. Se vuoi creare cluster aggiuntivi, devi applicare una configurazione personalizzata.
In questo esempio crei manualmente un cluster da CRD AWSCluster
e AWSNodePool
.
Passa alla directory con la configurazione di Cluster Anthos on AWS. Hai creato questa directory durante l'installazione del servizio di gestione.
cd anthos-aws
Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare il contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Apri un editor di testo e copia la definizione di
AWSCluster
che segue in 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_BUCKET
Sostituisci quanto segue:
- CLUSTER_NAME: il nome del tuo cluster.
AWS_REGION: la regione AWS in cui viene eseguito il cluster.
VPC_ID: l'ID del VPC su cui viene eseguito il cluster.
POD_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi IPv4 utilizzati dai pod del cluster. Attualmente è supportato un solo intervallo. L'intervallo non deve sovrapporsi ad alcuna subnet raggiungibile dalla tua rete. È sicuro utilizzare lo stesso intervallo su più oggetti AWSCluster diversi. Ad esempio,
10.2.0.0/16
.SERVICE_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi IPv4 utilizzato dai servizi del cluster. Attualmente è supportato un solo intervallo. L'intervallo non deve sovrapporsi ad alcuna subnet raggiungibile dalla tua rete. È sicuro utilizzare lo stesso intervallo su più oggetti AWSCluster diversi. Ad esempio,
10.1.0.0/16
.SERVICE_LOAD_BALANCER_SUBNETS: gli ID subnet in cui i cluster Anthos su AWS possono creare bilanciatori del carico pubblici o privati.
CLUSTER_VERSION: una versione di Kubernetes supportata dai cluster Anthos 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 AZ in cui vengono eseguite le istanze del piano di controllo.
CONTROL_PLANE_SECURITY_GROUPS: un securityGroupID creato durante l'installazione del servizio di gestione. Puoi personalizzarlo aggiungendo tutti gli ID gruppo di sicurezza necessari per la connessione al piano di controllo.
CONTROL_PLANE_IAM_PROFILE: nome del profilo di istanza AWS EC2 assegnato alle repliche del piano di controllo.
ROOT_VOLUME_SIZE: le dimensioni in gibibyte (GiB) dei volumi root del piano di controllo.
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 saperne di più, consulta Volumi SSD per uso generico (gp3).ROOT_VOLUME_KEY con il nome risorsa Amazon della chiave KMS AWS che cripta i volumi root dell'istanza del piano di controllo.
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 saperne di più, consulta Volumi SSD per uso generico (gp3).ETCD_VOLUME_KEY con Amazon Resource Name della chiave AWS KMS che cripta i volumi di dati del piano di controllo, ecc.
ARN_OF_KMS_KEY: la chiave AWS KMS utilizzata per criptare i Secret del cluster.
ANTHOS_CONNECT_NAME: il nome dell'abbonamento Connect utilizzato per registrare il tuo cluster. Il nome dell'appartenenza deve essere univoco. Ad esempio,
projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
, doveYOUR_PROJECT
è il tuo progetto Google Cloud eCLUSTER_NAME
è un nome univoco nel tuo progetto. Questo campo è facoltativo.YOUR_PROJECT: l'ID del tuo progetto.
GCP_REGION: la regione di Google Cloud in cui vuoi archiviare i log. Scegli una regione vicina a quella AWS. Per maggiori informazioni, consulta Località globali - Regioni e zone , ad esempio
us-central1
.ENABLE_LOGGING:
true
ofalse
, sia che Cloud Logging sia abilitato sui nodi del piano di controllo.ENABLE_MONITORING:
true
ofalse
, indipendentemente dal fatto che Cloud Monitoring sia abilitato sui nodi del piano di controllo.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ù pool di AWSNode per il tuo cluster. Apri un editor di testo e copia la seguente definizione di 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 # Optional
Sostituisci 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 cluster Anthos supportata su versione di Kubernetes AWS.
- AWS_REGION: la stessa regione AWS del tuo AWSCluster.
- AWS_SUBNET_ID: una subnet AWS nella stessa regione del tuo cluster AWS.
- MINIMUM_NODE_COUNT: il numero minimo di nodi nel pool di nodi. Per ulteriori informazioni, consulta la sezione Scalabilità dei cluster utente.
- MAXIMUM_NODE_COUNT: numero massimo di nodi nel pool di nodi.
- MAXIMUM_PODS_PER_NODE_COUNT: numero massimo di pod che i cluster Anthos su AWS possono allocare a un nodo.
- AWS_NODE_TYPE: un tipo di istanza AW2 EC2.
- KMS_KEY_PAIR_NAME: la coppia di chiavi AWS KMS assegnata a ogni worker del pool di nodi.
- NODE_IAM_PROFILE: il nome del profilo di istanza AWS EC2 assegnato ai nodi nel pool.
- ROOT_VOLUME_SIZE: le dimensioni in gibibyte (GiB) dei volumi root del piano di controllo.
- VOLUME_TYPE: il tipo di volume EBS del nodo AWS.
Ad esempio:
gp3
. - IOPS: la quantità di operazioni di I/O al secondo (IOPS) di cui è stato eseguito il provisioning per i volumi. Valido solo quando
volumeType
ègp3
. - NODE_VOLUME_KEY: il file ARN della chiave AWS KMS utilizzato per criptare il volume. Per maggiori informazioni, consulta Utilizzo di un CMK gestito dal cliente per criptare i volumi.
Applica i manifest al tuo 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
Crea una configurazione kubeconfig
All'avvio del cluster utente, puoi creare un contesto kubeconfig
per il nuovo cluster utente. Puoi utilizzare il contesto per autenticarti a un cluster utente o di gestione.
Utilizza
anthos-gke aws clusters get-credentials
per generare unkubeconfig
per il tuo cluster utente in~/.kube/config
.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Sostituisci CLUSTER_NAME con il nome del tuo cluster. Ad esempio:
cluster-0
.Utilizza
kubectl
per eseguire l'autenticazione nel nuovo cluster utente.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Se il cluster è pronto, l'output include gli URL per i componenti Kubernetes all'interno del cluster.
Visualizza lo stato del tuo cluster
Il servizio di gestione esegue il provisioning di risorse AWS quando applichi un AWSCluster
o AWSNodePool
.
Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare il contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Per elencare i tuoi cluster, utilizza
kubectl get AWSClusters
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
L'output include nome, stato, età, versione ed endpoint di ogni cluster.
Ad esempio, il seguente output include solo un
AWSCluster
denominatocluster-0
:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Visualizza gli eventi del cluster
Per visualizzare gli
eventi Kubernetes recenti
dal tuo cluster utente, utilizza kubectl get events
.
Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare il 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 tuo servizio di gestione.
Eliminazione di un cluster utente
Per eliminare un cluster utente, segui questi passaggi:
Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare il contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Utilizza
kubectl delete
per eliminare il manifest contenente i tuoi cluster utente.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
Sostituisci CLUSTER_FILE con il nome del manifest che contiene gli oggetti AWScluster e AWSNodePool. Ad esempio,
cluster-0.yaml
.
Eliminazione di tutti i cluster utente
Per eliminare tutti i cluster utente:
Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare il contesto del servizio di gestione.cd anthos-aws anthos-gke aws management get-credentials
Usa
kubectl delete
per eliminare i tuoi AWSNodePool e i AWSCluster dal tuo 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, consulta la pagina Disinstallare i cluster Anthos su AWS.
Passaggi successivi
Configura il tuo provider di identità con Anthos Identity Service.
Avvia il tuo primo carico di lavoro su Cluster Anthos on AWS.
Crea un deployment rivolto all'esterno utilizzando un bilanciatore del carico o un Ingress.
Leggi le specifiche per le definizioni di risorse personalizzate di AWSCluster e AWSNodePool.