Questo documento descrive come migliorare le prestazioni dei workload Redis su Google Kubernetes Engine (GKE) generando configurazioni ottimizzate a livello di applicazione e di nodo. Per maggiori dettagli, vedi Ottimizzare per i workload su GKE.
Le ottimizzazioni per Redis sono state determinate per un'istanza Redis 7 utilizzata come cache look-aside a nodo singolo con un rapporto di lettura/scrittura di 4:1 (4 letture per 1 scrittura), con prestazioni misurate utilizzando Memtier 2.2.1. Valuta in che modo il workload Redis viene utilizzato nel cluster rispetto a questo caso d'uso. Se il tuo caso d'uso è diverso, le ottimizzazioni consigliate potrebbero dover essere modificate per il tuo contesto.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Recommender di GKE e l'API Google Kubernetes Engine. Abilita le API
- Per utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Requisiti
Utilizza la versione GKE 1.31.1-gke.12000 o successive.
Ottimizzare per i workload Redis
Ti consigliamo di utilizzare un pool di nodi dedicato per il workload Redis. Per impostazione predefinita, quando completi i seguenti passaggi viene creato un nuovo pool di nodi.
Per ottimizzare le prestazioni di un workload Redis:
Crea i manifest con le ottimizzazioni per il workload Redis procedendo nel seguente modo:
Genera i manifest con le ottimizzazioni consigliate eseguendo il seguente comando:
gcloud container workload profiles manifests create \ --workload=redis-7-caching \ --cluster-version=CLUSTER_VERSION \ --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlSostituisci quanto segue:
CLUSTER_VERSION: la versione GKE. La versione GKE consigliata è 1.31.1-gke.12000 o successive.MACHINE_TYPE: il tipo di macchina desiderato.
Il flag
--output-path=/tmp/manifests.yamlè facoltativo. Se non viene specificato, i manifest vengono stampati nel terminale, ma non vengono salvati in un file.Questo comando genera un singolo file YAML contenente due risorse Kubernetes:
- Un ConfigMap che specifica una configurazione Redis denominata
redis.conf. - Un oggetto ComputeClass. Specifica le macchine su cui eseguire Redis, il che è facoltativo. Per informazioni dettagliate su come vengono specificati i tipi di macchina, vedi Informazioni sulle ComputeClass personalizzate
Di seguito è riportato un esempio del manifest generato:
apiVersion: v1 kind: ConfigMap metadata: name: redis.conf data: redis.conf: | io-threads 2 io-threads-do-reads yes save "" --- apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: generateName: optimized-gke-redis-7-caching- spec: nodePoolAutoCreation: enabled: true priorities: - machineType: c4-standard-4 whenUnsatisfiable: DoNotScaleUpEsamina i consigli e modifica i manifest in modo che includano le ottimizzazioni che preferisci. Per valutare i consigli, puoi procedere nel seguente modo:
- Consulta la documentazione di Redis per valutare la configurazione consigliata per il tuo contesto.
- Valuta in che modo il workload Redis viene utilizzato nel cluster rispetto al seguente caso d'uso. Se il tuo caso d'uso è diverso, le ottimizzazioni consigliate potrebbero dover essere modificate per il tuo contesto.
Le ottimizzazioni per Redis sono state determinate per un'istanza Redis 7 utilizzata come cache look-aside a nodo singolo con un rapporto di lettura/scrittura di 4:1 (4 letture per 1 scrittura), con prestazioni misurate utilizzando Memtier 2.2.1.
Modifica il file manifest se vuoi modificare la configurazione o aggiungere elementi alla configurazione.
Applica i manifest al cluster utilizzando il seguente comando:
kubectl create -f /tmp/manifests.yaml
Esegui il deployment di un pod che fa riferimento alle ottimizzazioni. Ad esempio:
apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis:7 args: - /etc/gke/optimization/redis.conf volumeMounts: - name: gke-optimized-workload-config subPath: redis.conf mountPath: /etc/gke/optimization/redis.conf readOnly: true volumes: - name: gke-optimized-workload-config configMap: name: redis.conf nodeSelector: cloud.google.com/compute-class: optimized-gke-redis-7-caching-abc123Quindi, applica il manifest del pod al cluster:
kubectl apply -f pod.yamlVerifica che Redis utilizzi la configurazione ottimizzata. Per farlo, puoi eseguire il seguente comando per assicurarti che Redis utilizzi la configurazione ottimizzata:
kubectl exec redis -- redis-cli INFO server | grep config_fileDovresti visualizzare un output simile al seguente:
config_file:/etc/gke/optimization/redis.confPuoi anche utilizzare il comando
redis-cliper eseguire query sulle singole direttive impostate nella configurazione ottimizzata, ad esempioio-threads.
Quando esegui il deployment del workload, il cluster crea un nuovo pool di nodi che rispetta la configurazione ottimizzata e assegna i pod a questi node pool.
I pod già esistenti non vengono modificati. Vengono ottimizzati solo i pod che fanno riferimento alle configurazioni ottimizzate. Se in precedenza hai eseguito il deployment di workload Redis nel cluster, devi eseguire di nuovo il deployment di questi workload per eseguirli con le configurazioni ottimizzate.
Passaggi successivi
- Scopri di più sull'ottimizzazione dei workload su GKE.
- Scopri di più su come eseguire il deployment di un cluster Redis su GKE.
- Scopri di più sulle ComputeClass GKE.
- Per ottimizzare i workload MySQL, vedi Ottimizzare le prestazioni dei workload MySQL su GKE.