Questo tutorial mostra come eseguire il deployment di un'istanza Elasticsearch di database vettoriale su Google Kubernetes Engine (GKE).
Database vettoriali sono datastore progettati specificamente per gestire grandi raccolte ed eseguire ricerche dei vettori ad alta dimensionalità. 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 nella ricerca di elementi simili o identificare modelli all'interno di set di dati enormi.
Elasticsearch è un database vettoriale che combina funzionalità di ricerca e analisi. Dispone di un'API REST aperta per la gestione del cluster e supporta query a testo intero e query complesse. Elasticsearch ti consente eseguire ricerche per frasi, somiglianze e prefissi con suggerimenti di completamento automatico.
Questo tutorial è destinato ad amministratori e architetti di piattaforme cloud, ML engineer e MLOps Professionisti (DevOps) interessati a eseguire il deployment di Elasticsearch cluster di database su GKE.
Vantaggi
Elasticsearch offre i seguenti vantaggi:
- Ampia gamma di librerie per vari linguaggi di programmazione e API aperte per e l'integrazione con altri servizi.
- Scalabilità orizzontale e supporto dello sharding e della replica per semplificare scalabilità e disponibilità elevata.
- Bilanciamento dei cluster a più nodi per un utilizzo ottimale delle risorse.
- Supporto di container e Kubernetes per un'integrazione perfetta nei ambienti cloud-native.
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.
- Caricare un set di dati demo ed eseguire una query di ricerca.
- Raccogli e visualizza le metriche in una dashboard.
Architettura di deployment
In questo tutorial eseguirai il deployment di un cluster GKE a livello di regione ad alta disponibilità per Elasticsearch, con più nodi Kubernetes distribuiti in diverse zone di disponibilità. Questo la configurazione aiuta a garantire la tolleranza di errore, la scalabilità e la ridondanza geografica. it consente aggiornamenti e manutenzione in sequenza fornendo al contempo SLA (accordi sul livello del servizio) per uptime e la disponibilità del servizio. Per saperne di più, consulta Cluster a livello di regione.
Quando un nodo non è raggiungibile, un pod su quel nodo non viene ripianificato immediatamente. Se i pod utilizzano uno StatefulSet, l'applicazione può richiedere più di otto minuti i pod da eliminare e ripianificare in nuovi nodi.
Per risolvere questo problema, l'operatore StatefulHA esegue le seguenti operazioni:
- Risolve il ritardo di ripianificazione, gestisce le impostazioni di failover e riduce i tempi di ripristino utilizzando
.forceDeleteStrategy
:AfterNodeUnreachable
impostazioni. - Assicurati che l'applicazione StatefulSet utilizzi RePD.
- Estende GKE con una risorsa HighAvailabilityApplication personalizzata di cui è stato eseguito il deployment nello stesso spazio dei nomi come Elasticsearch. Ciò consente a StatefulHA per 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 vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
L'utilizzo di Elasticsearch è gratuito in base alla licenza pubblica lato server (SSPL).
Prima di iniziare
In questo tutorial utilizzerai Cloud Shell per . Cloud Shell è un ambiente shell per la gestione di risorse ospitate su Google Cloud. È preinstallato Google Cloud CLI, kubectl, Helm e Terraform a riga di comando. Se non utilizzi Cloud Shell, devi installare Google Cloud CLI.
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
- 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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Resource Manager, Compute Engine, GKE, IAM Service Account Credentials, and Backup for GKE.
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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Cloud Resource Manager, Compute Engine, GKE, IAM Service Account Credentials, and Backup for GKE.
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:
role/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_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:[email protected]
. - Replace
ROLE
with each individual role.
- Replace
Configura l'ambiente
Per configurare l'ambiente con Cloud Shell, segui questi passaggi:
Imposta le variabili di ambiente per il progetto, la regione e un cluster Kubernetes prefisso risorsa cluster:
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=elasticsearch export REGION=us-central1
- Sostituisci
PROJECT_ID
con il tuo Google Cloud dell'ID progetto.
Questo tutorial utilizza la regione
us-central1
per creare il deployment Google Cloud.- 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 risorse di deployment:cd kubernetes-engine-samples/databases/elasticsearch
Crea l'infrastruttura del tuo cluster
In questa sezione eseguirai uno script Terraform per creare un cluster privato, cluster GKE a livello di regione per il deployment del database Elasticsearch.
Puoi scegliere di eseguire il deployment di Elasticsearch utilizzando un Cluster Standard o Autopilot. Ognuno di essi ha i suoi vantaggi e i propri modelli di determinazione dei prezzi.
Autopilot
Il seguente diagramma mostra un cluster GKE Autopilot di cui è stato eseguito il deployment nel progetto.
Per eseguire il deployment dell'infrastruttura del cluster, esegui questi 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
utilizzagcloud 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 l'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 elemento
ServiceAccount
con autorizzazioni di logging e monitoraggio per il cluster. - Configurazione di Google Cloud Managed Service per Prometheus per il monitoraggio e gli avvisi del cluster.
Standard
Il seguente diagramma mostra un cluster GKE a livello di regione privato standard di cui è stato eseguito il deployment in tre diverse zone.
Per eseguire il deployment dell'infrastruttura del cluster, esegui questi 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
utilizzagcloud auth print-access-token
per recuperare un token di accesso che autentica le interazioni con di varie API Google Cloud.PROJECT_ID
,REGION
eKUBERNETES_CLUSTER_PREFIX
sono le variabili di ambiente definita nella sezione Configurare l'ambiente e assegnata al nuovo e variabili pertinenti per il cluster standard che stai creando.
Quando richiesto, digita yes
. Potrebbero essere necessari diversi minuti prima che questi comandi
completata e affinché il cluster mostri lo stato Pronto.
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 scalabilità automatica abilitata (da uno a due nodi per zona). - Un elemento
ServiceAccount
con autorizzazioni di logging e monitoraggio per il cluster. - Configurazione di Google Cloud Managed Service per Prometheus per il monitoraggio e gli 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, eseguirai il deployment del database Elasticsearch (in modalità cluster) e l'operatore statefulHA al cluster GKE utilizzando il grafico 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 ottenere prestazioni ottimali di Elasticsearch.
- Configurazione di NodeAffinity e PodAntiAffinity per garantire una corretta distribuzione nei nodi Kubernetes, ottimizzando l'uso dei pool di nodi per massimizzare la disponibilità in diverse zone.
- Un operatore stateful ad alta disponibilità che gestisce i processi di failover l'alta disponibilità.
- Per l'autenticazione, il database crea secret di Kubernetes con autenticazione credenziali, password e certificati.
Per utilizzare il grafico Helm per eseguire il deployment del database Elasticsearch, segui questi passaggi:
Abilita il componente aggiuntivo StatefulHA:
Autopilot
GKE abilita automaticamente il componente aggiuntivo
StatefulHA
durante la 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 il cluster potrebbero richiedere 15 minuti per mostrare lo stato Pronto.
Crea una definizione di risorse personalizzate (CRD) 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 il
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 regionale
StorageClass
:kubectl apply -n elastic -f manifests/01-regional-pd/regional-pd.yaml
Il manifest
regional-pd.yaml
descrive il disco SSD permanenteStorageClass
:Esegui il deployment della risorsa DaemonSet per impostare la memoria virtuale in ciascun nodo:
kubectl apply -n elastic -f manifests/02-elasticsearch/mmap-count.yaml
Il file manifest
mmap-count.yaml
descriveDaemonSet
: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 alcuni minuti 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
viene eseguito correttamente di cui è stato eseguito il deployment: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 il comando, se necessario.Per verificare se le regole di failover sono state 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>
Dopo che GKE avvia i carichi di lavoro, verifica che GKE ha 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
Le seguenti risorse GKE vengono create per Elasticsearch cluster:
- 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 super user e certificati correlati ai servizi.
- Pod dell'operatore ad alta disponibilità stateful e
HighlyAvailableApplication
risorsa, attivamente il monitoraggio dell'applicazione Elasticsearch.
Carica il set di dati demo ed esegui query di ricerca con il blocco note Jupyter
In questa sezione, caricherai vettori nei documenti Elasticsearch ed eseguirai query di ricerca semantiche utilizzando il client Python ufficiale Elasticsearch. Un documento in Elasticsearch è composto da vari campi, ognuno accoppiato con il suo valore corrispondente. A utilizzare in modo efficace Elasticsearch, ti consigliamo di strutturare i tuoi dati in questi che vengono poi indicizzati ai fini della ricerca.
In questo esempio, usi 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 serve a un client che esegue una query sul database Elasticsearch.
Crea i ConfigMap
books-dataset
enotebook
ed esegui il pod Jupyter per interagire con il tuo cluster Elasticsearch:kubectl create -n elastic configmap books-dataset --from-file=manifests/03-notebook/dataset.csv kubectl create -n elastic configmap notebook --from-file=manifests/03-notebook/vector-database.ipynb kubectl apply -n elastic -f manifests/03-notebook/jupyter.yaml
- Il secret denominato
elasticsearch-ha-es-elastic-user
creato in precedenza è stato montato nel pod del client come variabile di ambiente denominataPW
. - Il ConfigMap
books-dataset
contiene un filecsv
con i dati dei libri per Indice Elasticsearch. - Il ConfigMap
notebook
contiene il blocco note Jupyter per creare l'oggetto Elasticsearch indice dabooks-dataset
.
Il manifest
jupyter.yaml
descrive il deploymentnotebook
e il relativo servizio:- Il secret denominato
Attendi che GKE avvii il pod Jupyter:
kubectl wait pods -l app=jupyter-notebook --for condition=Ready --timeout=300s -n elastic
Ottieni l'URL con il token di accesso per connetterti a Jupyter:
export EXTERNAL_IP=$(kubectl -n elastic get svc notebook --output jsonpath='{.status.loadBalancer.ingress[0].ip}') kubectl logs deploy/notebook -n elastic| grep '^ .*http://127'|sed "s|127.0.0.1|${EXTERNAL_IP}|"
Apri questo URL e fai clic sul file
vector-database.ipynb
.Fai clic su Esegui > Esegui tutte le celle. Jupyter esegue il codice ed esegue una query di ricerca per il testo
drama about people and unhappy love
.Questa query esegue una ricerca semantica sull'indice
books
in Elasticsearch, recuperando un massimo di due risultati con il punteggio di corrispondenza più alto pertinente alla query.L'output è simile al seguente:
Title: Romeo and Juliet, Author: William Shakespeare, Paul Werstine (Editor), Barbara A. Mowat (Editor), Paavo Emil Cajander (Translator), score: 1.8473973 In Romeo and Juliet, Shakespeare creates a violent world, in which two young people fall in love. It is not simply that their families disapprove; the Montagues and the Capulets are engaged in a blood feud.In this death-filled setting, the movement from love at first sight to the lovers' final union in death seems almost inevitable. And yet, this play set in an extraordinary world has become the quintessential story of young love. In part because of its exquisite language, it is easy to respond as if it were about all young lovers. --------- Title: A Midsummer Night's Dream, Author: William Shakespeare, Paul Werstine (Editor), Barbara A. Mowat (Editor), Catherine Belsey (Contributor), score: 1.8415744 Shakespeare's intertwined love polygons begin to get complicated from the start--Demetrius and Lysander both want Hermia but she only has eyes for Lysander. Bad news is, Hermia's father wants Demetrius for a son-in-law. On the outside is Helena, whose unreturned love burns hot for Demetrius. Hermia and Lysander plan to flee from the city under cover of darkness but are pursued by an enraged Demetrius (who is himself pursued by an enraptured Helena). In the forest, unbeknownst to the mortals, Oberon and Titania (King and Queen of the faeries) are having a spat over a servant boy. The plot twists up when Oberon's head mischief-maker, Puck, runs loose with a flower which causes people to fall in love with the first thing they see upon waking. Throw in a group of labourers preparing a play for the Duke's wedding (one of whom is given a donkey's head and Titania for a lover by Puck) and the complications become fantastically funny. ---------
Visualizza le metriche di Prometheus per il tuo cluster
Il cluster GKE è configurato con Google Cloud Managed Service per Prometheus, che consente la raccolta di metriche nel formato Prometheus. Questo servizio fornisce una soluzione completamente gestita per il monitoraggio e gli avvisi, che consente la raccolta, l'archiviazione e l'analisi delle metriche dal cluster e dalle sue applicazioni.
Il seguente diagramma mostra in che modo 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 container collaterale denominatometrics
che contiene elasticsearch_exporter. - Raccoglitori basati su Prometheus che elaborano le metriche dal pod Elasticsearch.
- Una risorsa PodMonitoring che invia le metriche a Cloud Monitoring.
La configurazione del cluster definisce un container collaterale con l'utilità di esportazione delle metriche 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
PodMonitoring
risorsa per eseguire lo scraping delle metriche in base alabelSelector
: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 "Elasticsearch Prometheus Overview" vengono visualizzati i video.
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 a Cloud Monitoring Dashboard:
Dall'elenco delle dashboard, apri la dashboard
ElasticSearch Overview
. Potrebbe impiegano 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 rispettivi stati di integrità
Esegui il backup della configurazione del cluster
La guida di Backup per GKE consente di pianificare backup regolari dell'intero cluster GKE della configurazione, inclusi i carichi di lavoro di cui è stato eseguito il deployment e i relativi dati.
In questo tutorial configurerai un piano di backup per l'esecuzione del tuo cluster GKE backup di tutti i carichi di lavoro, inclusi secret e volumi, ogni giorno alle 03:00. Per garantire una gestione efficiente dello spazio di archiviazione, vengono eseguiti backup più vecchi di tre giorni eliminati automaticamente.
Abilita la funzionalità Backup per GKE per il tuo 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 runtime.
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...⠹
Questa operazione potrebbe richiedere alcuni minuti. Dopo il completa, l'output è simile al seguente:
Created backup plan [elasticsearch-cluster-backup].
Puoi visualizzare il piano di backup
elasticsearch-cluster-backup
appena creato nell'elenco la console 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 per cui questo tutorial.
Elimina un progetto Google Cloud:
gcloud projects delete PROJECT_ID
Se hai eliminato il progetto, la pulizia è stata completata. Se non hai eliminato 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 eseguire carichi di lavoro ad alta intensità di dati con GKE.