Ce document explique comment améliorer les performances de vos charges de travail Redis sur Google Kubernetes Engine (GKE) en générant des configurations optimisées au niveau de l'application et du nœud. Pour en savoir plus, consultez Optimiser pour les charges de travail sur GKE.
Les optimisations pour Redis ont été déterminées pour une instance Redis 7 utilisée comme cache look-aside à nœud unique avec un ratio lecture/écriture de 4:1 (quatre lectures pour une écriture), les performances étant mesurées à l'aide de Memtier 2.2.1. Réfléchissez à la façon dont la charge de travail Redis est utilisée sur votre cluster par rapport à ce cas d'utilisation. Si votre cas d'utilisation est différent, les optimisations recommandées devront peut-être être ajustées en fonction de votre contexte.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API GKE Recommender et l'API Google Kubernetes Engine. Activer les API
- Pour utiliser la Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
Conditions requises
Utilisez GKE version 1.31.1-gke.12000 ou ultérieure.
Optimiser pour les charges de travail Redis
Nous vous recommandons d'utiliser un pool de nœuds dédié pour votre charge de travail Redis. Par défaut, un pool de nœuds est créé lorsque vous effectuez les étapes suivantes.
Pour optimiser les performances d'une charge de travail Redis, procédez comme suit :
Créez les fichiers manifestes avec des optimisations pour la charge de travail Redis en procédant comme suit :
Générez des fichiers manifestes avec les optimisations recommandées en exécutant la commande suivante :
gcloud container workload profiles manifests create \ --workload=redis-7-caching \ --cluster-version=CLUSTER_VERSION \ --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlRemplacez les éléments suivants :
CLUSTER_VERSION: version de GKE. Nous vous recommandons d'utiliser GKE version 1.31.1-gke.12000 ou ultérieure.MACHINE_TYPE: type de machine souhaité.
L'option
--output-path=/tmp/manifests.yamlest facultative. Si ce paramètre n'est pas spécifié, les fichiers manifestes sont affichés dans le terminal, mais ne sont pas enregistrés dans un fichier.Cette commande génère un seul fichier YAML contenant deux ressources Kubernetes :
- Un ConfigMap spécifiant une configuration Redis nommée
redis.conf. - Un objet ComputeClass. Cela spécifie les machines sur lesquelles Redis doit s'exécuter (facultatif). Pour en savoir plus sur la spécification des types de machines, consultez À propos des ComputeClasses personnalisées.
Voici un exemple de fichier manifeste généré :
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: DoNotScaleUpExaminez les recommandations et modifiez les fichiers manifestes pour qu'ils incluent les optimisations de votre choix. Pour évaluer les recommandations, vous pouvez procéder comme suit :
- Consultez la documentation Redis pour évaluer la configuration recommandée pour votre contexte.
- Réfléchissez à la façon dont la charge de travail Redis est utilisée sur votre cluster par rapport au cas d'utilisation suivant. Si votre cas d'utilisation est différent, les optimisations recommandées devront peut-être être ajustées en fonction de votre contexte.
Les optimisations pour Redis ont été déterminées pour une instance Redis 7 utilisée comme cache look-aside à nœud unique avec un ratio lecture/écriture de 4:1 (quatre lectures pour une écriture), les performances étant mesurées à l'aide de Memtier 2.2.1.
Modifiez le fichier manifeste si vous souhaitez modifier la configuration ou y ajouter des éléments.
Appliquez les fichiers manifestes au cluster à l'aide de la commande suivante :
kubectl create -f /tmp/manifests.yaml
Déployez un pod faisant référence aux optimisations. Exemple :
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-abc123Ensuite, appliquez le fichier manifeste du pod au cluster :
kubectl apply -f pod.yamlVérifiez que Redis utilise la configuration optimisée. Pour ce faire, vous pouvez exécuter la commande suivante afin de vous assurer que Redis utilise la configuration optimisée :
kubectl exec redis -- redis-cli INFO server | grep config_fileUn résultat semblable aux lignes suivantes doit s'afficher :
config_file:/etc/gke/optimization/redis.confVous pouvez également utiliser la commande
redis-clipour interroger les directives individuelles définies dans la configuration optimisée, telles queio-threads.
Lorsque vous déployez la charge de travail, le cluster crée un pool de nœuds qui respecte la configuration optimisée et attribue vos pods à ces pools de nœuds.
Les pods existants ne sont pas modifiés. Seuls les pods qui font référence aux configurations optimisées sont optimisés. Si vous avez déjà déployé des charges de travail Redis dans votre cluster, vous devez les redéployer pour les exécuter avec les configurations optimisées.
Étapes suivantes
- Apprenez-en plus sur l'optimisation des charges de travail sur GKE.
- Découvrez comment déployer un cluster Redis sur GKE.
- En savoir plus sur les ComputeClasses GKE
- Pour optimiser les charges de travail MySQL, consultez Optimiser les performances des charges de travail MySQL sur GKE.