本文档介绍如何通过生成优化的应用级和节点级配置,提高 Redis 工作负载在 Google Kubernetes Engine (GKE) 上的性能。如需了解详情,请参阅针对 GKE 上的工作负载进行优化。
Redis 的优化是针对以下情况确定的:Redis 7 实例用作读写比为 4:1(4 次读取与 1 次写入)的单节点旁路缓存,并使用 Memtier 2.2.1 测量性能。考虑一下您的集群上 Redis 工作负载的使用情况与此使用情形的对比。如果您的使用情形有所不同,则可能需要根据您的具体情况调整推荐的优化措施。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 GKE Recommender API 和 Google Kubernetes Engine API。 启用 API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行
gcloud components update命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
要求
使用 GKE 1.31.1-gke.12000 版或更高版本。
针对 Redis 工作负载进行优化
我们建议您为 Redis 工作负载使用专用节点池。默认情况下,完成以下步骤后,系统会创建新的节点池。
如需优化 Redis 工作负载的性能,请执行以下操作:
通过执行以下操作,创建针对 Redis 工作负载进行优化的清单:
运行以下命令,生成包含推荐优化的清单:
gcloud container workload profiles manifests create \ --workload=redis-7-caching \ --cluster-version=CLUSTER_VERSION \ --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yaml替换以下内容:
CLUSTER_VERSION:GKE 版本。 建议使用 GKE 1.31.1-gke.12000 版或更高版本。MACHINE_TYPE:所需的机器类型。
--output-path=/tmp/manifests.yaml标志是可选的。如果未指定,则清单会打印到终端,但不会保存到文件中。此命令会生成一个包含两个 Kubernetes 资源的 YAML 文件:
- 指定 Redis 配置的 ConfigMap,名为
redis.conf。 - ComputeClass 对象。 此参数用于指定 Redis 运行的机器,是可选参数。 如需详细了解如何指定机器类型,请参阅自定义 ComputeClass 简介
以下是生成的清单示例:
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: DoNotScaleUp查看建议并修改清单,使其包含您偏好的优化。如需评估建议,您可以执行以下操作:
- 查看 Redis 文档,评估适合您情况的推荐配置。
- 请考虑您的集群上 Redis 工作负载的使用方式与以下使用情形有何不同。如果您的使用情形有所不同,则可能需要根据您的具体情况调整建议的优化措施。
Redis 的优化是针对以下情况确定的:Redis 7 实例用作读写比为 4:1(4 次读取与 1 次写入)的单节点旁路缓存,并使用 Memtier 2.2.1 测量性能。
如果您想修改配置或向配置中添加内容,请修改清单文件。
使用以下命令将清单应用于集群:
kubectl create -f /tmp/manifests.yaml
部署引用优化的 Pod。例如:
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-abc123然后,将您的 Pod 清单应用到集群:
kubectl apply -f pod.yaml确认 Redis 是否正在使用优化配置。为此,您可以运行以下命令,确保 Redis 使用的是优化后的配置:
kubectl exec redis -- redis-cli INFO server | grep config_file您应该会看到类似于如下内容的输出:
config_file:/etc/gke/optimization/redis.conf您还可以使用
redis-cli命令查询在优化配置中设置的各个指令,例如io-threads。
部署工作负载时,集群会创建一个符合优化配置的新节点池,并将您的 Pod 分配给这些节点池。
现有 Pod 不会发生变化。只有引用优化配置的 Pod 才会得到优化。如果您之前已在集群中部署 Redis 工作负载,则需要重新部署这些工作负载,以便使用优化后的配置来运行它们。
后续步骤
- 详细了解 GKE 上的工作负载优化。
- 详细了解如何在 GKE 上部署 Redis 集群
- 详细了解 GKE ComputeClass。
- 如需针对 MySQL 工作负载进行优化,请参阅在 GKE 上优化 MySQL 工作负载性能。