Questo tutorial mostra come eseguire il deployment di un cluster di database di vettori Elasticsearch su Google Kubernetes Engine (GKE).
I database vettoriali sono spazi di archiviazione dei dati progettati specificamente per gestire e cercare in grandi raccolte di vettori ad alta dimensione. Questi vettori rappresentano dati come testo, immagini, audio, video o qualsiasi dato che può essere codificato numericamente. A differenza dei database relazionali che si basano su corrispondenze esatte, i database vettoriali sono specializzati nel trovare elementi simili o nell'identificare pattern all'interno di set di dati di grandi dimensioni.
Elasticsearch è un database vettoriale che combina funzionalità di ricerca e analisi. È dotato di un'API REST aperta per la gestione del cluster e supporta query strutturate, query full-text e query complesse. Elasticsearch ti consente di eseguire ricerche per frasi, somiglianza e prefisso, con suggerimenti di completamento automatico.
Questo tutorial è rivolto ad amministratori e architetti della piattaforma cloud, ML engineer e professionisti di MLOps (DevOps) interessati a eseguire il deployment di cluster di database Elasticsearch su GKE.
Vantaggi
Elasticsearch offre i seguenti vantaggi:
- Ampia gamma di librerie per vari linguaggi di programmazione e API aperte da integrare con altri servizi.
- Scalabilità orizzontale e supporto per lo sharding e la replica che semplificano la scalabilità e l'alta disponibilità.
- Bilanciamento del cluster multi-nodo per un utilizzo ottimale delle risorse.
- Supporto di container e Kubernetes per un'integrazione perfetta in ambienti cloud-native moderni.
Obiettivi
In questo tutorial imparerai a:
- Pianifica ed esegui il deployment dell'infrastruttura GKE per Elasticsearch.
- Esegui il deployment e la configurazione di Elasticsearch in un cluster GKE.
- Esegui il deployment dell'operatore StatefulHA per garantire l'alta disponibilità di Elasticsearch.
- Esegui un notebook per generare e archiviare esempi di embedding vettoriali nel tuo database ed eseguire query di ricerca basate su vettori.
- Raccogliere e visualizzare le metriche in una dashboard.
Architettura di deployment
In questo tutorial esegui il deployment di un cluster GKE regionale ad alta disponibilità per Elasticsearch con più nodi Kubernetes distribuiti su più zone di disponibilità. Questa configurazione contribuisce a garantire tolleranza di errore, scalabilità e ridondanza geografica. Consente aggiornamenti e manutenzione graduali, fornendo al contempo SLA per uptime e disponibilità. Per ulteriori informazioni, consulta Cluster regionali.
Quando un nodo diventa irraggiungibile, un pod su quel nodo non viene riprogrammato immediatamente. Con i pod che utilizzano uno StatefulSet, possono essere necessari più di otto minuti per eliminare i pod dell'applicazione e riprogrammarli su nuovi nodi.
Per risolvere il problema, l'operatore StatefulHA esegue le seguenti operazioni:
- Risolve il ritardo nella riprogrammazione, gestisce le impostazioni di failover e riduce il tempo di recupero utilizzando le impostazioni
.forceDeleteStrategy
:AfterNodeUnreachable
. - Garantisce che l'applicazione StatefulSet utilizzi RePD.
- Estende GKE con una risorsa HighAvailabilityApplication personalizzata di cui viene eseguito il deployment nello stesso spazio dei nomi di Elasticsearch. In questo modo, l'operatore StatefulHA può monitorare e rispondere agli eventi di failover.
Il seguente diagramma mostra un cluster Elasticsearch in esecuzione su più nodi e zone in un cluster GKE:
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
L'utilizzo di Elasticsearch è gratuito ai sensi della Server Side Public License (SSPL).
Prima di iniziare
In questo tutorial utilizzerai Cloud Shell per eseguire comandi. Cloud Shell è un ambiente shell per la gestione delle risorse ospitate su Google Cloud. È preinstallato con gli strumenti a riga di comando Google Cloud CLI, kubectl, Helm e Terraform. Se non utilizzi Cloud Shell, devi installare Google Cloud CLI.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Resource Manager, Compute Engine, GKE, IAM Service Account Credentials, and Backup for GKE APIs:
gcloud services enable cloudresourcemanager.googleapis.com
compute.googleapis.com container.googleapis.com iamcredentials.googleapis.com gkebackup.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Resource Manager, Compute Engine, GKE, IAM Service Account Credentials, and Backup for GKE APIs:
gcloud services enable cloudresourcemanager.googleapis.com
compute.googleapis.com container.googleapis.com iamcredentials.googleapis.com gkebackup.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/storage.objectViewer, roles/container.admin, roles/iam.serviceAccountAdmin, roles/compute.admin, roles/gkebackup.admin, roles/monitoring.viewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Configura l'ambiente
Per configurare l'ambiente con Cloud Shell:
Imposta le variabili di ambiente per il progetto, la regione e un prefisso della risorsa del cluster Kubernetes:
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=elasticsearch export REGION=us-central1
- Sostituisci
PROJECT_ID
con il tuo ID progetto Google Cloud.
Questo tutorial utilizza la regione
us-central1
per creare le risorse di deployment.- Sostituisci
Controlla la versione di Helm:
helm version
Aggiorna la versione se è precedente alla 3.13:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Clona il repository di codice campione da GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
Vai alla directory
elasticsearch
per iniziare a creare le risorse di deployment:cd kubernetes-engine-samples/databases/elasticsearch
Crea l'infrastruttura del cluster
In questa sezione esegui uno script Terraform per creare un cluster GKE regionale privato e ad alta disponibilità per eseguire il deployment del database Elasticsearch.
Puoi scegliere di eseguire il deployment di Elasticsearch utilizzando un cluster standard o Autopilot. Ognuno ha i suoi vantaggi e modelli di prezzi diversi.
Autopilot
Il seguente diagramma mostra un cluster GKE Autopilot eseguito nel progetto.
Per eseguire il deployment dell'infrastruttura del cluster, esegui i seguenti comandi in Cloud Shell:
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform -chdir=terraform/gke-autopilot init
terraform -chdir=terraform/gke-autopilot apply \
-var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
GKE sostituisce le seguenti variabili in fase di runtime:
GOOGLE_OAUTH_ACCESS_TOKEN
utilizza il comandogcloud auth print-access-token
per recuperare un token di accesso che autentica le interazioni con varie API Google CloudPROJECT_ID
,REGION
eKUBERNETES_CLUSTER_PREFIX
sono le variabili di ambiente definite nella sezione Configurare l'ambiente e assegnate alle nuove variabili pertinenti per il cluster Autopilot che stai creando.
Quando richiesto, digita yes
.
L'output è simile al seguente:
...
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
Outputs:
kubectl_connection_command = "gcloud container clusters get-credentials elasticsearch-cluster --region us-central1"
Terraform crea le seguenti risorse:
- Una rete VPC personalizzata e una subnet privata per i nodi Kubernetes.
- Un router Cloud per accedere a internet tramite Network Address Translation (NAT).
- Un cluster GKE privato nella regione
us-central1
. - Un
ServiceAccount
con autorizzazioni di logging e monitoraggio per il cluster. - Configurazione di Google Cloud Managed Service per Prometheus per il monitoraggio e l'invio di avvisi per i cluster.
Standard
Il seguente diagramma mostra un cluster GKE regionale privato standard di cui è stato eseguito il deployment in tre zone diverse.
Per eseguire il deployment dell'infrastruttura del cluster, esegui i seguenti comandi in Cloud Shell:
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
terraform -chdir=terraform/gke-standard init
terraform -chdir=terraform/gke-standard apply \
-var project_id=${PROJECT_ID} \
-var region=${REGION} \
-var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
GKE sostituisce le seguenti variabili in fase di runtime:
GOOGLE_OAUTH_ACCESS_TOKEN
utilizza il comandogcloud auth print-access-token
per recuperare un token di accesso che autentica le interazioni con varie API Google Cloud.PROJECT_ID
,REGION
eKUBERNETES_CLUSTER_PREFIX
sono le variabili di ambiente definite nella sezione Configurare l'ambiente e assegnate alle nuove variabili pertinenti per il cluster standard che stai creando.
Quando richiesto, digita yes
. Potrebbero essere necessari diversi minuti prima che questi comandi vengano completati e che il cluster mostri lo stato di disponibilità.
L'output è simile al seguente:
...
Apply complete! Resources: 10 added, 0 changed, 0 destroyed.
Outputs:
kubectl_connection_command = "gcloud container clusters get-credentials elasticsearch-cluster --region us-central1"
Terraform crea le seguenti risorse:
- Una rete VPC personalizzata e una subnet privata per i nodi Kubernetes.
- Un router Cloud per accedere a internet tramite Network Address Translation (NAT).
- Un cluster GKE privato nella regione
us-central1
con la scalabilità automatica abilitata (da uno a due nodi per zona). - Un
ServiceAccount
con autorizzazioni di logging e monitoraggio per il cluster. - Configurazione di Google Cloud Managed Service per Prometheus per il monitoraggio e l'invio di avvisi dei cluster.
Connettiti al cluster
Configura kubectl
per recuperare le credenziali e comunicare con il nuovo cluster GKE:
gcloud container clusters get-credentials \
${KUBERNETES_CLUSTER_PREFIX}-cluster --region ${REGION}
Esegui il deployment del database Elasticsearch e dell'operatore StatefulHA
In questa sezione esegui il deployment del database Elasticsearch (in modalità cluster) e dell'operatore StatefulHA nel tuo cluster GKE utilizzando il chart Helm dell'operatore ECK.
Il deployment crea un cluster GKE con la seguente configurazione:
- Tre repliche dei nodi Elasticsearch.
- DaemonSet per modificare le impostazioni della memoria virtuale, per prestazioni ottimali di Elasticsearch.
- Configurazione di NodeAffinity e PodAntiAffinity per garantire una distribuzione corretta tra i nodi Kubernetes, ottimizzare l'utilizzo dei node pool e massimizzare la disponibilità in diverse zone.
- Un operatore HA stateful che gestisce i processi di failover e garantisce la disponibilità elevata.
- Per l'autenticazione, il database crea secret di Kubernetes con credenziali di autenticazione, password e certificati.
Per utilizzare il grafico Helm per eseguire il deployment del database Elasticsearch:
Attiva il componente aggiuntivo StatefulHA:
Autopilot
GKE attiva automaticamente il plug-in
StatefulHA
al momento della creazione del cluster.Standard
Esegui questo comando:
gcloud container clusters update ${KUBERNETES_CLUSTER_PREFIX}-cluster \ --project=${PROJECT_ID} \ --region=${REGION} \ --update-addons=StatefulHA=ENABLED
Il completamento di questo comando e la visualizzazione dello stato di disponibilità del cluster potrebbero richiedere 15 minuti.
Crea una definizione di risorsa personalizzata (CRD) per Elastic Cloud on Kubernetes (ECK):
kubectl apply -f https://download.elastic.co/downloads/eck/2.11.1/crds.yaml
Esegui il deployment dell'operatore ECK:
kubectl apply -f https://download.elastic.co/downloads/eck/2.11.1/operator.yaml
Crea lo spazio dei nomi
elastic
per il database:kubectl create ns elastic
Installa la risorsa
HighAvailabilityApplication
(HAA), che definisce le regole di failover per Elasticsearch.kubectl apply -n elastic -f manifests/01-regional-pd/ha-app.yaml
Il manifest
ha-app.yaml
descrive la risorsaHighAvailabilityApplication
:Applica il manifest per creare un disco SSD permanente a livello di regione
StorageClass
:kubectl apply -n elastic -f manifests/01-regional-pd/regional-pd.yaml
Il file manifest
regional-pd.yaml
descrive il disco SSD permanenteStorageClass
:Esegui il deployment della risorsa DaemonSet per impostare la memoria virtuale in ogni nodo:
kubectl apply -n elastic -f manifests/02-elasticsearch/mmap-count.yaml
Il file manifest
mmap-count.yaml
descrive ilDaemonSet
:Applica il manifest per eseguire il deployment del cluster Elasticsearch:
kubectl apply -n elastic -f manifests/02-elasticsearch/elasticsearch.yaml
Il manifest
elasticsearch.yaml
descrive il deployment:Attendi qualche minuto per l'avvio completo del cluster Elasticsearch.
Controlla lo stato del deployment:
kubectl get elasticsearch -n elastic --watch
L'output è simile al seguente, se il database
elasticsearch
è stato eseguito correttamente:NAME HEALTH NODES VERSION PHASE AGE elasticsearch-ha green 3 8.11.4 Ready 2m30s
Attendi che
HEALTH
venga visualizzato comegreen
. Premi Ctrl+C per uscire dal comando, se necessario.Esegui il deployment di un bilanciatore del carico interno per accedere al database Elasticsearch in esecuzione nella stessa VPC del tuo cluster GKE:
kubectl apply -n elastic -f manifests/02-elasticsearch/ilb.yaml
Il manifest
ilb.yaml
descrive il servizioLoadBalancer
:Per verificare se le regole di failover sono applicate, descrivi la risorsa e conferma
Status: Message: Application is protected
.kubectl describe highavailabilityapplication elasticsearch-ha-es-main -n elastic
L'output è simile al seguente
Status: Conditions: Last Transition Time: 2024-02-01T13:27:50Z Message: Application is protected Observed Generation: 1 Reason: ApplicationProtected Status: True Type: Protected Events: <none>
Una volta che GKE avvia i carichi di lavoro, verifica che GKE abbia creato i carichi di lavoro Elasticsearch:
kubectl get pod,svc,statefulset,pdb,secret,daemonset -n elastic
L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE pod/elasticsearch-ha-es-main-0 2/2 Running 0 7m16s pod/elasticsearch-ha-es-main-1 2/2 Running 0 7m16s pod/elasticsearch-ha-es-main-2 2/2 Running 0 7m16s pod/max-map-count-setter-28wt9 1/1 Running 0 7m27s pod/max-map-count-setter-cflsw 1/1 Running 0 7m27s pod/max-map-count-setter-gzq9k 1/1 Running 0 7m27s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/elasticsearch-ha-es-http ClusterIP 10.52.8.28 <none> 9200/TCP 7m18s service/elasticsearch-ha-es-internal-http ClusterIP 10.52.3.48 <none> 9200/TCP 7m18s service/elasticsearch-ha-es-main ClusterIP None <none> 9200/TCP 7m16s service/elasticsearch-ha-es-transport ClusterIP None <none> 9300/TCP 7m18s NAME READY AGE statefulset.apps/elasticsearch-ha-es-main 3/3 7m16s NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE poddisruptionbudget.policy/elasticsearch-ha-es-default 2 N/A 1 7m16s NAME TYPE DATA AGE secret/elasticsearch-ha-es-elastic-user Opaque 1 7m18s secret/elasticsearch-ha-es-file-settings Opaque 1 7m16s secret/elasticsearch-ha-es-http-ca-internal Opaque 2 7m17s secret/elasticsearch-ha-es-http-certs-internal Opaque 3 7m17s secret/elasticsearch-ha-es-http-certs-public Opaque 2 7m17s secret/elasticsearch-ha-es-internal-users Opaque 4 7m18s secret/elasticsearch-ha-es-main-es-config Opaque 1 7m16s secret/elasticsearch-ha-es-main-es-transport-certs Opaque 7 7m16s secret/elasticsearch-ha-es-remote-ca Opaque 1 7m16s secret/elasticsearch-ha-es-transport-ca-internal Opaque 2 7m16s secret/elasticsearch-ha-es-transport-certs-public Opaque 1 7m16s secret/elasticsearch-ha-es-xpack-file-realm Opaque 4 7m18s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/max-map-count-setter 6 6 6 6 6 <none> 13m
Per il cluster Elasticsearch vengono create le seguenti risorse GKE:
- Elasticsearch
StatefulSet
che controlla tre repliche di pod. - Un DaemonSet per configurare le impostazioni della memoria virtuale.
- Servizi per la connessione a Elasticsearch.
- Secret con credenziali di superutente e certificati relativi al servizio.
- Pod dell'operatore HA stateful e risorsa
HighlyAvailableApplication
che monitora attivamente l'applicazione Elasticsearch.
Esegui query con il notebook Vertex AI Colab Enterprise
Questa sezione spiega come generare embedding nei documenti Elasticsearch ed eseguire query di ricerca semantica utilizzando il client Python Elasticsearch ufficiale nel notebook Colab Enterprise. Un documento in Elasticsearch è composto da vari campi, ciascuno accoppiato con il valore corrispondente.
Per utilizzare efficacemente Elasticsearch, ti consigliamo di strutturare i dati in questi documenti, che vengono poi indicizzati per la ricerca.
In questo esempio, utilizzi un set di dati di un file CSV contenente un elenco di libri di generi diversi. Elasticsearch funge da motore di ricerca e il pod che crei funge da client che esegue query sul database Elasticsearch.
Puoi utilizzare un modello di runtime dedicato per eseguire il deployment nel VPC elasticsearch-vpc
(Virtual Private Cloud) in modo che il notebook possa comunicare con le risorse del tuo cluster GKE.
Creare un modello di runtime
Per creare un modello di runtime:
Nella console Google Cloud, vai alla pagina Modelli di runtime di Colab Enterprise e assicurati che il progetto sia selezionato:
Fai clic su add_box Nuovo modello. Viene visualizzata la pagina Crea nuovo modello di runtime.
Nella sezione Nozioni di base del runtime:
- Nel campo Nome visualizzato, inserisci
elastic-connect
. - Nell'elenco a discesa Regione, seleziona
us-central1
. È la stessa regione del tuo cluster GKE.
- Nel campo Nome visualizzato, inserisci
Nella sezione Configura calcolo:
- Nell'elenco a discesa Tipo di macchina, seleziona
e2-standard-2
. - Nel campo Dimensione disco, inserisci
30
.
- Nell'elenco a discesa Tipo di macchina, seleziona
Nella sezione Networking e sicurezza:
- Nell'elenco a discesa Rete, seleziona la rete in cui si trova il cluster GKE.
- Nell'elenco a discesa Subnet, seleziona una subnet corrispondente.
- Deseleziona la casella di controllo Attiva l'accesso a internet pubblico.
Fai clic su Crea per completare la creazione del modello di runtime. Il modello di runtime viene visualizzato nell'elenco della scheda Modelli di runtime.
Creare un runtime
Per creare un runtime:
Nell'elenco dei modelli di runtime, fai clic su more_vert nella colonna Azioni per il modello appena creato, quindi fai clic su Crea runtime. Viene visualizzato il riquadro Crea runtime di Vertex AI.
Fai clic su Crea per creare un runtime in base al modello.
Nella scheda Ambienti di esecuzione che si apre, attendi che lo stato passi a Intatto.
Importa il notebook
Per importare il notebook:
Vai alla scheda Notebook e fai clic su Importa notebook da URL.
In Origine importazione, seleziona URL.
In URL notebook, incolla il seguente link:
raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/databases/elasticsearch/manifests/03-notebook/vector-database.ipynb
Fai clic su Importa.
Connettiti al runtime ed esegui query
Per connetterti al runtime ed eseguire query:
Nel notebook, accanto al pulsante Connetti, fai clic su arrow_drop_down Altre opzioni di connessione. Viene visualizzato il riquadro Connetti al runtime di Vertex AI.
Seleziona Connetti a un runtime e poi Connetti a un runtime esistente.
Seleziona il runtime che hai avviato e fai clic su Connetti.
Fai clic sul pulsante Esegui cella a sinistra di ogni cella di codice per eseguire le celle del blocco note.
Il notebook contiene celle di codice e testo che descrivono ogni blocco di codice. L'esecuzione di una cella di codice esegue i relativi comandi e mostra un output. Puoi eseguire le celle in ordine o eseguire singole celle in base alle esigenze.
Per ulteriori informazioni su Vertex AI Colab Enterprise, consulta la documentazione di Colab Enterprise.
Visualizzare le metriche Prometheus per il cluster
Il cluster GKE è configurato con Google Cloud Managed Service per Prometheus, che consente la raccolta delle metriche nel formato Prometheus. Questo servizio fornisce una soluzione completamente gestita per il monitoraggio e l'invio di avvisi, consentendo la raccolta, lo stoccaggio e l'analisi delle metriche del cluster e delle sue applicazioni.
Il seguente diagramma mostra come Prometheus raccoglie le metriche per il cluster:
Il cluster privato GKE nel diagramma contiene i seguenti componenti:
- Pod Elasticsearch che espongono le metriche sul percorso
/
e sulla porta9114
. Queste metriche sono fornite dal contenitore sidecar denominatometrics
che contiene elasticsearch_exporter. - Raccoglitori basati su Prometheus che elaborano le metriche del pod Elasticsearch.
- Una risorsa PodMonitoring che invia le metriche a Cloud Monitoring.
La configurazione del cluster definisce un contenitore sidecar con l'esportatore di metriche nel formato Prometheus:
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: elasticsearch-ha
spec:
...
nodeSets:
- name: main
...
podTemplate:
spec:
containers:
...
- name: metrics
image: quay.io/prometheuscommunity/elasticsearch-exporter:v1.7.0
command:
- /bin/elasticsearch_exporter
- --es.ssl-skip-verify
- --es.uri=https://$(ES_USER):$(ES_PASSWORD)@localhost:9200
...
env:
- name: ES_USER
value: "elastic"
- name: ES_PASSWORD
valueFrom:
secretKeyRef:
name: elasticsearch-ha-es-elastic-user
key: elastic
Per esportare e visualizzare le metriche:
Crea la risorsa
PodMonitoring
per eseguire lo scraping delle metriche perlabelSelector
:kubectl apply -n elastic -f manifests/04-prometheus-metrics/pod-monitoring.yaml
Il manifest
pod-monitoring.yaml
descrive la risorsaPodMonitoring
:Dopo alcuni minuti viene visualizzata la dashboard integrata "Panoramica di Prometheus di Elasticsearch".
Per visualizzare altri grafici relativi ai dati, importa una dashboard di Cloud Monitoring personalizzata con le configurazioni definite in
dashboard.json
:gcloud --project "${PROJECT_ID}" monitoring dashboards create --config-from-file monitoring/dashboard.json
Una volta eseguito correttamente il comando, vai alle dashboard di Cloud Monitoring:
Dall'elenco delle dashboard, apri la dashboard
ElasticSearch Overview
. Potrebbero essere necessari 1-2 minuti per raccogliere e visualizzare le metriche.La dashboard mostra un conteggio delle metriche chiave:
- Indici
- Documenti e shard
- Operazioni in attesa
- Nodi in esecuzione con i relativi stati di salute
Esegui il backup della configurazione del cluster
La funzionalità Backup per GKE consente di pianificare backup regolari dell'intera configurazione del cluster GKE, inclusi i carichi di lavoro di cui è stato eseguito il deployment e i relativi dati.
In questo tutorial, configuri un piano di backup per il tuo cluster GKE in modo da eseguire ogni giorno alle 03:00 i backup di tutti i carichi di lavoro, inclusi i secret e i volumi. Per garantire una gestione efficiente dello spazio di archiviazione, i backup precedenti a tre giorni vengono eliminati automaticamente.
Abilita la funzionalità Backup per GKE per il cluster:
gcloud container clusters update ${KUBERNETES_CLUSTER_PREFIX}-cluster \ --project=${PROJECT_ID} \ --region=${REGION} \ --update-addons=BackupRestore=ENABLED
Crea un piano di backup con una pianificazione giornaliera per tutti gli spazi dei nomi all'interno del cluster:
gcloud beta container backup-restore backup-plans create ${KUBERNETES_CLUSTER_PREFIX}-cluster-backup \ --project=${PROJECT_ID} \ --location=${REGION} \ --cluster="projects/${PROJECT_ID}/locations/${REGION}/clusters/${KUBERNETES_CLUSTER_PREFIX}-cluster" \ --all-namespaces \ --include-secrets \ --include-volume-data \ --cron-schedule="0 3 * * *" \ --backup-retain-days=3
Il comando utilizza le variabili di ambiente pertinenti in fase di esecuzione.
Il formato del nome del cluster è relativo al progetto e alla regione come segue:
projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
Quando richiesto, digita
y.
L'output è simile al seguente:Create request issued for: [elasticsearch-cluster-backup] Waiting for operation [projects/PROJECT_ID/locations/us-central1/operations/operation-1706528750815-610142ffdc9ac-71be4a05-f61c99fc] to complete...⠹
Il completamento dell'operazione potrebbe richiedere alcuni minuti. Al termine dell'esecuzione, l'output è simile al seguente:
Created backup plan [elasticsearch-cluster-backup].
Puoi vedere il piano di backup
elasticsearch-cluster-backup
appena creato elencato nella console di Backup per GKE.
Se vuoi ripristinare le configurazioni di backup salvate, consulta Ripristinare un backup.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Il modo più semplice per evitare la fatturazione è eliminare il progetto che hai creato per questo tutorial.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Se hai eliminato il progetto, la pulizia è completata. Se non hai eliminato il progetto, procedi con l'eliminazione delle singole risorse.
Elimina singole risorse
Imposta le variabili di ambiente.
export PROJECT_ID=${PROJECT_ID} export KUBERNETES_CLUSTER_PREFIX=elasticsearch export REGION=us-central1
Esegui il comando
terraform destroy
:export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token) terraform -chdir=terraform/FOLDER destroy \ -var project_id=${PROJECT_ID} \ -var region=${REGION} \ -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX}
Sostituisci
FOLDER
congke-autopilot
ogke-standard
, a seconda del tipo di cluster GKE che hai creato.Quando richiesto, digita
yes
.Trova tutti i dischi scollegati:
export disk_list=$(gcloud compute disks list --filter="-users:* AND labels.name=${KUBERNETES_CLUSTER_PREFIX}-cluster" --format "value[separator=|](name,region)")
Elimina i dischi:
for i in $disk_list; do disk_name=$(echo $i| cut -d'|' -f1) disk_region=$(echo $i| cut -d'|' -f2|sed 's|.*/||') echo "Deleting $disk_name" gcloud compute disks delete $disk_name --region $disk_region --quiet done
Elimina il repository GitHub:
rm -r ~/kubernetes-engine-samples/
Passaggi successivi
- Esplora il software open source Elasticsearch.
- Scopri le best practice per il deployment dei database su GKE.
- Scopri le soluzioni per l'esecuzione di carichi di lavoro con utilizzo intensivo di dati con GKE.