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 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 (4 lectures pour 1 écriture), avec des performances 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, il faudra peut-être ajuster les optimisations recommandé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 Google Cloud CLI pour cette tâche, installez puis initialisez 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 recommandons la version 1.31.1-gke.12000 ou ultérieure de GKE.MACHINE_TYPE: type de machine souhaité.
L'option
--output-path=/tmp/manifests.yamlest facultative. Si ce n'est pas le cas, les fichiers manifestes sont imprimés dans le terminal, mais ne sont pas enregistrés dans un fichier.Cette commande génère un fichier YAML unique contenant deux ressources Kubernetes :
- Un fichier ConfigMap spécifiant une configuration Redis nommée
redis.conf. - Un objet ComputeClass. Cette option spécifie les machines sur lesquelles Redis doit s'exécuter. Elle est facultative. Pour en savoir plus sur la façon de spécifier les types de machines, consultez À propos des classes de calcul 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 dans votre contexte.
- Comparez l'utilisation de la charge de travail Redis sur votre cluster au cas d'utilisation suivant. Si votre cas d'utilisation est différent, il faudra peut-être ajuster les optimisations recommandé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 (4 lectures pour 1 écriture), avec des performances mesurées à l'aide de Memtier 2.2.1.
Modifiez le fichier manifeste si vous souhaitez modifier la configuration ou l'enrichir.
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-abc123Appliquez ensuite le fichier manifeste de votre 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 y attribue vos pods.
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
- En savoir 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.