このドキュメントでは、最適化されたアプリケーション レベルとノードレベルの構成を生成して、Google Kubernetes Engine(GKE)で Redis ワークロードのパフォーマンスを改善する方法について説明します。詳細については、GKE のワークロード向けに最適化するをご覧ください。
Redis の最適化は、読み取り / 書き込み比率が 4:1(読み取り 4 回に対して書き込み 1 回)の単一ノードのルックアサイド キャッシュとして使用される Redis 7 インスタンスに対して決定されました。パフォーマンスは 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フラグは省略可能です。指定されていない場合、マニフェストはターミナルに出力されますが、ファイルには保存されません。このコマンドは、2 つの Kubernetes リソースを含む単一の YAML ファイルを生成します。
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 の最適化は、読み取り / 書き込み比率が 4:1(読み取り 4 回、書き込み 1 回)の単一ノードのルックアサイド キャッシュとして使用される Redis 7 インスタンスに対して決定されました。パフォーマンスは 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.yamlRedis が最適化された構成を使用していることを確認します。これを行うには、次のコマンドを実行して、Redis が最適化された構成を使用していることを確認します。
kubectl exec redis -- redis-cli INFO server | grep config_file出力は次のようになります。
config_file:/etc/gke/optimization/redis.confredis-cliコマンドを使用して、io-threadsなど、最適化された構成で設定されている個々のディレクティブをクエリすることもできます。
ワークロードをデプロイすると、クラスタは最適化された構成に準拠する新しいノードプールを作成し、Pod をこれらのノードプールに割り当てます。
すでに存在する Pod は変更されません。最適化された構成を参照する Pod のみが最適化されます。クラスタに Redis ワークロードを以前にデプロイしたことがある場合は、最適化された構成で実行するために、これらのワークロードを再デプロイする必要があります。
次のステップ
- GKE でのワークロードの最適化について学習する。
- GKE に Redis クラスタをデプロイする方法の詳細を確認する
- GKE ComputeClass についての詳細を確認する。
- MySQL ワークロードを最適化するには、GKE で MySQL ワークロードのパフォーマンスを最適化するをご覧ください。