本文說明如何產生經過最佳化的應用程式層級和節點層級設定,進而提升 Google Kubernetes Engine (GKE) 上 Redis 工作負載的效能。詳情請參閱「針對 GKE 上的工作負載進行最佳化」。
我們是針對 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是選用旗標。如果未指定,資訊清單會列印至終端機,但不會儲存至檔案。這項指令會產生單一 YAML 檔案,其中包含兩項 Kubernetes 資源:
- 指定名為「
redis.conf」的 Redis 設定的 ConfigMap。 - 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 7 執行個體做為單一節點的旁置快取,讀取/寫入比率為 4:1 (4 次讀取對 1 次寫入),並使用 Memtier 2.2.1 測量效能,據此決定 Redis 的最佳化設定。
如要修改或新增設定,請編輯資訊清單檔案。
使用下列指令將資訊清單套用至叢集:
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 ComputeClasses。
- 如要最佳化 MySQL 工作負載,請參閱「在 GKE 上最佳化 MySQL 工作負載效能」。