Neste documento, descrevemos como melhorar o desempenho das cargas de trabalho do Redis no Google Kubernetes Engine (GKE) gerando configurações otimizadas no nível do aplicativo e do nó. Para mais detalhes, consulte Otimizar para cargas de trabalho no GKE.
As otimizações para o Redis foram determinadas para uma instância do Redis 7 usada como um cache look-aside de nó único com uma proporção de leitura/gravação de 4:1 (4 leituras para 1 gravação), com desempenho medido usando o Memtier 2.2.1. Considere como a carga de trabalho do Redis é usada no cluster em comparação com esse caso de uso. Se o caso de uso for diferente, talvez seja necessário ajustar as otimizações recomendadas para seu contexto.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ative a API GKE Recommender e a API Google Kubernetes Engine. Ativar APIs
- Para usar a Google Cloud CLI nesta tarefa,
instale e inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando
gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
Requisitos
Use o GKE versão 1.31.1-gke.12000 ou posterior.
Otimizar para cargas de trabalho do Redis
Recomendamos usar um pool de nós dedicado para sua carga de trabalho do Redis. Por padrão, um novo pool de nós é criado quando você conclui as etapas a seguir.
Para otimizar o desempenho de uma carga de trabalho do Redis, faça o seguinte:
Crie os manifestos com otimizações para a carga de trabalho do Redis fazendo o seguinte:
Gere manifestos com as otimizações recomendadas executando o seguinte comando:
gcloud container workload profiles manifests create \ --workload=redis-7-caching \ --cluster-version=CLUSTER_VERSION \ --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlSubstitua:
CLUSTER_VERSION: a versão do GKE. A recomendação é a versão 1.31.1-gke.12000 ou posterior do GKE.MACHINE_TYPE: o tipo de máquina desejado.
A sinalização
--output-path=/tmp/manifests.yamlé opcional. Se não for especificado, os manifestos serão impressos no terminal, mas não serão salvos em um arquivo.Esse comando gera um único arquivo YAML com dois recursos do Kubernetes:
- Um ConfigMap que especifica uma configuração do Redis chamada
redis.conf. - Um objeto ComputeClass. Isso especifica as máquinas em que o Redis será executado, o que é opcional. Para detalhes sobre como os tipos de máquina são especificados, consulte Sobre as ComputeClasses personalizadas.
Veja a seguir um exemplo do manifesto gerado:
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: DoNotScaleUpAnalise as recomendações e modifique os manifestos para que eles incluam as otimizações de sua preferência. Para avaliar as recomendações, faça o seguinte:
- Consulte a documentação do Redis para avaliar a configuração recomendada para seu contexto.
- Considere como a carga de trabalho do Redis é usada no cluster em comparação com o caso de uso a seguir. Se o caso de uso for diferente, talvez seja necessário ajustar as otimizações recomendadas para seu contexto.
As otimizações para o Redis foram determinadas para uma instância do Redis 7 usada como um cache look-aside de nó único com uma proporção de leitura/gravação de 4:1 (4 leituras para 1 gravação), com desempenho medido usando o Memtier 2.2.1.
Edite o arquivo de manifesto se quiser modificar ou adicionar algo à configuração.
Aplique os manifestos ao cluster usando o seguinte comando:
kubectl create -f /tmp/manifests.yaml
Implante um pod que faça referência às otimizações. Exemplo:
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-abc123Em seguida, aplique o manifesto do pod ao cluster:
kubectl apply -f pod.yamlConfirme se o Redis está usando a configuração otimizada. Para isso, execute o seguinte comando para garantir que o Redis esteja usando a configuração otimizada:
kubectl exec redis -- redis-cli INFO server | grep config_fileO resultado será semelhante a este:
config_file:/etc/gke/optimization/redis.confTambém é possível usar o comando
redis-clipara consultar as diretivas individuais definidas na configuração otimizada, comoio-threads.
Quando você implanta a carga de trabalho, o cluster cria um novo pool de nós que segue a configuração otimizada e atribui os pods a esses pools de nós.
Os pods que já existem não são modificados. Somente os pods que fazem referência às configurações otimizadas são otimizados. Se você já implantou cargas de trabalho do Redis no cluster, será necessário reimplantá-las para executá-las com as configurações otimizadas.
A seguir
- Saiba mais sobre a otimização de cargas de trabalho no GKE.
- Saiba mais sobre como implantar um cluster do Redis no GKE.
- Saiba mais sobre as ComputeClasses do GKE.
- Para otimizar as cargas de trabalho do MySQL, consulte Otimizar o desempenho da carga de trabalho do MySQL no GKE.