이 문서에서는 최적화된 애플리케이션 수준 및 노드 수준 구성을 생성하여 Google Kubernetes Engine (GKE)에서 Redis 워크로드의 성능을 개선하는 방법을 설명합니다. 자세한 내용은 GKE에서 워크로드에 맞게 최적화를 참조하세요.
Redis 최적화는 읽기-쓰기 비율이 4:1 (읽기 4회, 쓰기 1회)인 단일 노드 look-aside 캐시로 사용되는 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플래그는 선택사항입니다. 지정하지 않으면 매니페스트가 터미널에 출력되지만 파일에 저장되지는 않습니다.이 명령어는 다음 두 개의 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회)인 단일 노드 look-aside 캐시로 사용되는 Redis 7 인스턴스에 대해 결정되었으며, 성능은 Memtier 2.2.1을 사용하여 측정되었습니다.
구성을 수정하거나 구성에 추가하려면 매니페스트 파일을 수정합니다.
다음 명령어를 사용하여 매니페스트를 클러스터에 적용합니다.
kubectl create -f /tmp/manifests.yaml
최적화를 참조하는 포드를 배포합니다. 예를 들면 다음과 같습니다.
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그런 다음 포드 매니페스트를 클러스터에 적용합니다.
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와 같이 최적화된 구성에 설정된 개별 지시어를 쿼리할 수도 있습니다.
워크로드를 배포하면 클러스터에서 최적화된 구성을 준수하는 새 노드 풀을 만들고 포드를 이러한 노드 풀에 할당합니다.
이미 존재하는 포드는 수정되지 않습니다. 최적화된 구성을 참조하는 포드만 최적화됩니다. 이전에 클러스터에 Redis 워크로드를 배포한 경우 최적화된 구성으로 실행하려면 이러한 워크로드를 다시 배포해야 합니다.
다음 단계
- GKE의 워크로드 최적화에 대해 자세히 알아보세요.
- GKE에서 Redis 클러스터를 배포하는 방법을 자세히 알아보세요.
- GKE ComputeClass에 대해 자세히 알아보세요.
- MySQL 워크로드에 맞게 최적화하려면 GKE에서 MySQL 워크로드 성능 최적화를 참조하세요.