Mengoptimalkan performa workload Redis di GKE

Dokumen ini menjelaskan cara meningkatkan performa workload Redis Anda di Google Kubernetes Engine (GKE) dengan membuat konfigurasi tingkat aplikasi dan tingkat node yang dioptimalkan. Untuk mengetahui detail selengkapnya, lihat Mengoptimalkan workload di GKE.

Pengoptimalan untuk Redis ditentukan untuk instance Redis 7 yang digunakan sebagai cache look-aside node tunggal dengan rasio baca-tulis 4:1 (4 bacaan untuk 1 tulisan), dengan performa yang diukur menggunakan Memtier 2.2.1. Pertimbangkan cara workload Redis digunakan di cluster Anda dibandingkan dengan kasus penggunaan ini. Jika kasus penggunaan Anda berbeda, pengoptimalan yang direkomendasikan mungkin perlu disesuaikan dengan konteks Anda.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Mengaktifkan GKE Recommender API dan Google Kubernetes Engine API.
  • Mengaktifkan API
  • Untuk menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Persyaratan

Gunakan GKE versi 1.31.1-gke.12000 atau yang lebih baru.

Mengoptimalkan workload Redis

Sebaiknya gunakan node pool khusus untuk workload Redis Anda. Secara default, node pool baru akan dibuat saat Anda menyelesaikan langkah-langkah berikut.

Untuk mengoptimalkan performa workload Redis, lakukan hal berikut:

  1. Buat manifes dengan pengoptimalan untuk workload Redis dengan melakukan hal berikut:

    1. Buat manifes dengan pengoptimalan yang direkomendasikan dengan menjalankan perintah berikut:

      gcloud container workload profiles manifests create \
         --workload=redis-7-caching \
         --cluster-version=CLUSTER_VERSION \
         --options=machineType=MACHINE_TYPE \
         --output-path=/tmp/manifests.yaml
      

      Ganti kode berikut:

      • CLUSTER_VERSION: versi GKE. Rekomendasinya adalah GKE versi 1.31.1-gke.12000 atau yang lebih baru.
      • MACHINE_TYPE: jenis mesin yang diinginkan.

      Flag --output-path=/tmp/manifests.yaml bersifat opsional. Jika tidak ditentukan, manifes akan dicetak ke terminal, tetapi tidak disimpan ke file.

      Perintah ini membuat satu file YAML yang berisi dua resource Kubernetes:

      • ConfigMap yang menentukan konfigurasi Redis bernama redis.conf.
      • Objek ComputeClass. Objek ini menentukan mesin untuk menjalankan Redis, yang bersifat opsional. Untuk mengetahui detail tentang cara menentukan jenis mesin, lihat Tentang ComputeClass kustom

      Berikut adalah contoh manifes yang dibuat:

      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
      
    2. Tinjau rekomendasi dan ubah manifes sehingga menyertakan pengoptimalan pilihan Anda. Untuk menilai rekomendasi, Anda dapat melakukan hal berikut:

      • Tinjau dokumentasi Redis untuk menilai konfigurasi yang direkomendasikan untuk konteks Anda.
      • Pertimbangkan cara workload Redis digunakan di cluster Anda dibandingkan dengan kasus penggunaan berikut. Jika kasus penggunaan Anda berbeda, pengoptimalan yang direkomendasikan mungkin perlu disesuaikan dengan konteks Anda.

      Pengoptimalan untuk Redis ditentukan untuk instance Redis 7 yang digunakan sebagai cache look-aside node tunggal dengan rasio baca-tulis 4:1 (4 bacaan untuk 1 tulisan), dengan performa yang diukur menggunakan Memtier 2.2.1.

    3. Edit file manifes jika Anda ingin mengubah konfigurasi atau menambahkan konfigurasi.

    4. Terapkan manifes ke cluster menggunakan perintah berikut:

      kubectl create -f /tmp/manifests.yaml
      
  2. Deploy Pod yang mereferensikan pengoptimalan. Contoh:

    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
    

    Kemudian, terapkan manifes Pod ke cluster:

    kubectl apply -f pod.yaml
    
  3. Konfirmasi bahwa Redis menggunakan konfigurasi yang dioptimalkan. Untuk melakukannya, Anda dapat menjalankan perintah berikut untuk memastikan Redis menggunakan konfigurasi yang dioptimalkan:

    kubectl exec redis -- redis-cli INFO server | grep config_file
    

    Anda akan melihat output yang mirip dengan berikut ini:

    config_file:/etc/gke/optimization/redis.conf
    

    Anda juga dapat menggunakan perintah redis-cli untuk membuat kueri direktif individual yang ditetapkan dalam konfigurasi yang dioptimalkan, seperti io-threads.

Saat Anda men-deploy workload, cluster akan membuat node pool baru yang mematuhi konfigurasi yang dioptimalkan, dan menetapkan Pod Anda ke node pool tersebut.

Pod yang sudah ada tidak akan diubah. Hanya Pod yang mereferensikan konfigurasi yang dioptimalkan yang akan dioptimalkan. Jika sebelumnya Anda telah men-deploy workload Redis di cluster, Anda harus men-deploy ulang workload ini untuk menjalankannya dengan konfigurasi yang dioptimalkan.

Langkah berikutnya