Mengoptimalkan penskalaan otomatis Pod berdasarkan metrik


Tutorial ini menunjukkan cara menskalakan workload Google Kubernetes Engine (GKE) secara otomatis berdasarkan metrik yang tersedia di Cloud Monitoring.

Dalam tutorial ini, Anda dapat menyiapkan penskalaan otomatis berdasarkan salah satu metrik berikut ini:

CPU

Penggunaan CPU

Penskalaan berdasarkan persentase penggunaan CPU di seluruh node. Cara ini dapat menghemat biaya, sehingga Anda dapat memaksimalkan penggunaan resource CPU. Namun, karena penggunaan CPU merupakan metrik akhir, pengguna mungkin mengalami latensi saat peningkatan skala sedang berlangsung.

Pub/Sub

Backlog Pub/Sub

Skala didasarkan pada metrik eksternal yang melaporkan jumlah pesan yang tidak dikonfirmasi yang tersisa dalam langganan Pub/Sub. Hal ini dapat mengurangi latensi secara efektif sebelum menjadi masalah, tetapi mungkin akan menggunakan resource relatif lebih banyak daripada penskalaan otomatis berdasarkan pemakaian CPU.

Metrik Kustom

Metrik Prometheus Kustom

Skalakan berdasarkan metrik kustom yang ditentukan pengguna dan diekspor dalam format Prometheus melalui Google Managed Prometheus. Metrik Prometheus Anda harus berjenis Gauge.

Pada dasarnya, penskalaan otomatis adalah menemukan keseimbangan yang dapat diterima antara biaya dan latensi. Sebaiknya Anda bereksperimen dengan kombinasi metrik ini dan lainnya untuk menemukan kebijakan yang cocok bagi Anda.

Tujuan

Tutorial ini membahas tugas-tugas berikut:

  1. Cara men-deploy Adaptor Metrik Kustom.
  2. Cara mengekspor metrik dari dalam kode aplikasi.
  3. Cara melihat metrik Anda di antarmuka Cloud Monitoring.
  4. Cara men-deploy resource HorizontalPodAutoscaler (HPA) untuk menskalakan aplikasi Anda berdasarkan metrik Cloud Monitoring.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

Lakukan langkah-langkah berikut untuk mengaktifkan Kubernetes Engine API:
  1. Buka halaman Kubernetes Engine di Konsol Google Cloud.
  2. Buat atau pilih project.
  3. Tunggu hingga API dan layanan terkait diaktifkan. Proses ini dapat memerlukan waktu beberapa menit.
  4. Make sure that billing is enabled for your Google Cloud project.

Anda dapat mengikuti tutorial ini menggunakan Cloud Shell, yang telah diinstal sebelumnya dengan alat command line gcloud dan kubectl yang digunakan dalam tutorial ini. Jika menggunakan Cloud Shell, Anda tidak perlu menginstal alat command line ini di workstation.

Untuk menggunakan Cloud Shell:

  1. Buka Konsol Google Cloud.
  2. Klik tombol Activate Cloud Shell Tombol Activate Shell di bagian atas jendela Konsol Google Cloud.

    Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah Konsol Google Cloud dan menampilkan prompt command line.

    Sesi Cloud Shell

Menyiapkan lingkungan Anda

  1. Tetapkan zona default untuk Google Cloud CLI:

    gcloud config set compute/zone zone
    

    Ganti kode berikut:

    • zone: Pilih zona yang paling dekat dengan Anda. Untuk mengetahui informasi selengkapnya, baca Region dan Zona.
  2. Tetapkan variabel lingkungan PROJECT_ID dan PROJECT_NUMBER ke project ID dan nomor project Google Cloud:

    export PROJECT_ID=project-id
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format 'get(projectNumber)')
    
  3. Tetapkan zona default untuk Google Cloud CLI:

    gcloud config set project $PROJECT_ID
    
  4. Membuat cluster GKE

    Praktik terbaik:

    Untuk meningkatkan keamanan saat mengakses layanan Google Cloud, aktifkan Workload Identity Federation untuk GKE di cluster Anda. Meskipun halaman ini menyertakan contoh yang menggunakan metode lama (dengan Workload Identity Federation untuk GKE dinonaktifkan), mengaktifkannya akan meningkatkan perlindungan.

    Workload Identity

    Untuk membuat cluster dengan Workload Identity Federation untuk GKE diaktifkan, jalankan perintah berikut:

    gcloud container clusters create metrics-autoscaling --workload-pool=$PROJECT_ID.svc.id.goog
    

    Autentikasi lama

    Untuk membuat cluster dengan Workload Identity Federation untuk GKE dinonaktifkan, jalankan perintah berikut:

    gcloud container clusters create metrics-autoscaling
    

Men-deploy Adaptor Metrik Kustom

Dengan Adaptor Metrik Kustom, cluster Anda dapat mengirim dan menerima metrik dengan Cloud Monitoring.

CPU

Tidak berlaku: Autoscaler Pod Horizontal dapat diskalakan berdasarkan penggunaan CPU secara native, sehingga Adaptor Metrik Kustom tidak diperlukan.

Pub/Sub

Prosedur untuk menginstal Adaptor Metrik Kustom berbeda untuk cluster dengan Workload Identity Federation untuk GKE diaktifkan atau tidak diaktifkan. Pilih opsi yang cocok dengan penyiapan yang Anda pilih saat membuat cluster.

Workload Identity

Beri pengguna kemampuan untuk membuat peran otorisasi yang diperlukan:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin --user "$(gcloud config get-value account)"

Deploy adaptor metrik kustom di cluster Anda:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml

Adaptor menggunakan akun layanan Kubernetes custom-metrics-stackdriver-adapter di namespace custom-metrics. Izinkan akun layanan ini untuk membaca metrik Cloud Monitoring dengan menetapkan peran Monitoring Viewer:

gcloud projects add-iam-policy-binding projects/$PROJECT_ID \
  --role roles/monitoring.viewer \
  --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/custom-metrics/sa/custom-metrics-stackdriver-adapter

Autentikasi Lama

Beri pengguna kemampuan untuk membuat peran otorisasi yang diperlukan:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin --user "$(gcloud config get-value account)"

Deploy adaptor metrik kustom di cluster Anda:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml

Metrik Kustom

Prosedur untuk menginstal Adaptor Metrik Kustom berbeda untuk cluster dengan Workload Identity Federation untuk GKE diaktifkan atau tidak diaktifkan. Pilih opsi yang cocok dengan penyiapan yang Anda pilih saat membuat cluster.

Workload Identity

Beri pengguna kemampuan untuk membuat peran otorisasi yang diperlukan:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin --user "$(gcloud config get-value account)"

Deploy adaptor metrik kustom di cluster Anda:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml

Adaptor menggunakan akun layanan Kubernetes custom-metrics-stackdriver-adapter di namespace custom-metrics. Izinkan akun layanan ini untuk membaca metrik Cloud Monitoring dengan menetapkan peran Monitoring Viewer:

gcloud projects add-iam-policy-binding projects/$PROJECT_ID \
  --role roles/monitoring.viewer \
  --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/custom-metrics/sa/custom-metrics-stackdriver-adapter

Autentikasi Lama

Beri pengguna kemampuan untuk membuat peran otorisasi yang diperlukan:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin --user "$(gcloud config get-value account)"

Deploy adaptor metrik kustom di cluster Anda:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml

Men-deploy aplikasi dengan metrik

Download repositori yang berisi kode aplikasi untuk tutorial ini:

CPU

git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
cd kubernetes-engine-samples/quickstarts/hello-app

Pub/Sub

git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
cd kubernetes-engine-samples/databases/cloud-pubsub

Metrik Kustom

git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
cd kubernetes-engine-samples/observability/custom-metrics-autoscaling/google-managed-prometheus

Repositori berisi kode yang mengekspor metrik ke Cloud Monitoring:

CPU

Aplikasi ini merespons "Halo dunia!" ke permintaan web apa pun pada port 8080. Metrik CPU Compute Engine dikumpulkan secara otomatis oleh Cloud Monitoring.

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	// register hello function to handle all requests
	mux := http.NewServeMux()
	mux.HandleFunc("/", hello)

	// use PORT environment variable, or default to 8080
	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
	}

	// start the web server on port and accept requests
	log.Printf("Server listening on port %s", port)
	log.Fatal(http.ListenAndServe(":"+port, mux))
}

// hello responds to the request with a plain-text "Hello, world" message.
func hello(w http.ResponseWriter, r *http.Request) {
	log.Printf("Serving request: %s", r.URL.Path)
	host, _ := os.Hostname()
	fmt.Fprintf(w, "Hello, world!\n")
	fmt.Fprintf(w, "Version: 1.0.0\n")
	fmt.Fprintf(w, "Hostname: %s\n", host)
}

Pub/Sub

Aplikasi ini melakukan polling langganan Pub/Sub untuk menemukan pesan baru, yang mengonfirmasi saat pesan tersebut masuk. Metrik langganan Pub/Sub dikumpulkan secara otomatis oleh Cloud Monitoring.

from google import auth
from google.cloud import pubsub_v1


def main():
    """Continuously pull messages from subsciption"""

    # read default project ID
    _, project_id = auth.default()
    subscription_id = 'echo-read'

    subscriber = pubsub_v1.SubscriberClient()
    subscription_path = subscriber.subscription_path(
        project_id, subscription_id)

    def callback(message: pubsub_v1.subscriber.message.Message) -> None:
        """Process received message"""
        print(f"Received message: ID={message.message_id} Data={message.data}")
        print(f"[{datetime.datetime.now()}] Processing: {message.message_id}")
        time.sleep(3)
        print(f"[{datetime.datetime.now()}] Processed: {message.message_id}")
        message.ack()

    streaming_pull_future = subscriber.subscribe(
        subscription_path, callback=callback)
    print(f"Pulling messages from {subscription_path}...")

    with subscriber:
        try:
            streaming_pull_future.result()
        except Exception as e:
            print(e)

Metrik Kustom

Aplikasi ini merespons permintaan web apa pun ke jalur /metrics dengan metrik nilai konstanta menggunakan format Prometheus.

metric := prometheus.NewGauge(
	prometheus.GaugeOpts{
		Name: *metricName,
		Help: "Custom metric",
	},
)
prometheus.MustRegister(metric)
metric.Set(float64(*metricValue))

http.Handle("/metrics", promhttp.Handler())
log.Printf("Starting to listen on :%d", *port)
err := http.ListenAndServe(fmt.Sprintf(":%d", *port), nil)

Repositori ini juga berisi manifes Kubernetes untuk men-deploy aplikasi ke cluster Anda. Deployment adalah objek Kubernetes API yang memungkinkan Anda menjalankan beberapa replika Pod yang didistribusikan di antara node dalam cluster:

CPU

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  selector:
    matchLabels:
      app: hello
      tier: web
  template:
    metadata:
      labels:
        app: hello
        tier: web
    spec:
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 200m

Pub/Sub

Manifes berbeda untuk cluster dengan Workload Identity Federation untuk GKE diaktifkan atau tidak diaktifkan. Pilih opsi yang cocok dengan penyiapan yang dipilih saat Anda membuat cluster.

Workload Identity

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pubsub
spec:
  selector:
    matchLabels:
      app: pubsub
  template:
    metadata:
      labels:
        app: pubsub
    spec:
      serviceAccountName: pubsub-sa
      containers:
      - name: subscriber
        image: us-docker.pkg.dev/google-samples/containers/gke/pubsub-sample:v2

Autentikasi lama

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pubsub
spec:
  selector:
    matchLabels:
      app: pubsub
  template:
    metadata:
      labels:
        app: pubsub
    spec:
      volumes:
      - name: google-cloud-key
        secret:
          secretName: pubsub-key
      containers:
      - name: subscriber
        image: us-docker.pkg.dev/google-samples/containers/gke/pubsub-sample:v2
        volumeMounts:
        - name: google-cloud-key
          mountPath: /var/secrets/google
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/secrets/google/key.json

Metrik Kustom

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: custom-metrics-gmp
  name: custom-metrics-gmp
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      run: custom-metrics-gmp
  template:
    metadata:
      labels:
        run: custom-metrics-gmp
    spec:
      containers:
      # sample container generating custom metrics
      - name: prometheus-dummy-exporter
        image: us-docker.pkg.dev/google-samples/containers/gke/prometheus-dummy-exporter:v0.2.0
        command: ["./prometheus-dummy-exporter"]
        args:
        - --metric-name=custom_prometheus
        - --metric-value=40
        - --port=8080

Dengan resource PodMonitoring, Google Cloud Managed Service for Prometheus mengekspor metrik Prometheus ke Cloud Monitoring:

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: "custom-metrics-exporter"
spec:
  selector:
    matchLabels:
      run: custom-metrics-gmp
  endpoints:
  - port: 8080
    path: /metrics
    interval: 15s

Mulai dari GKE Standard versi 1.27 atau GKE Autopilot versi 1.25, Google Cloud Managed Service for Prometheus diaktifkan. Untuk mengaktifkan Google Cloud Managed Service for Prometheus di cluster pada versi sebelumnya, lihat Mengaktifkan koleksi terkelola.

Deploy aplikasi ke cluster Anda:

CPU

kubectl apply -f manifests/helloweb-deployment.yaml

Pub/Sub

Prosedur untuk men-deploy aplikasi berbeda untuk cluster dengan Workload Identity Federation untuk GKE diaktifkan atau tidak diaktifkan. Pilih opsi yang cocok dengan penyiapan yang Anda pilih saat membuat cluster.

Workload Identity

  1. Aktifkan Pub/Sub API di project Anda:

    gcloud services enable cloudresourcemanager.googleapis.com pubsub.googleapis.com
    
  2. Buat topik dan langganan Pub/Sub:

    gcloud pubsub topics create echo
    gcloud pubsub subscriptions create echo-read --topic=echo
    
  3. Deploy aplikasi ke cluster Anda:

    kubectl apply -f deployment/pubsub-with-workload-identity.yaml
    
  4. Aplikasi ini menentukan akun layanan Kubernetes pubsub-sa. Tetapkan peran pelanggan Pub/Sub sehingga aplikasi dapat memublikasikan pesan ke topik Pub/Sub.

    gcloud projects add-iam-policy-binding projects/$PROJECT_ID \
      --role=roles/pubsub.subscriber \
      --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/default/sa/pubsub-sa
    

    Perintah sebelumnya menggunakan Principal Identifier, yang memungkinkan IAM merujuk langsung ke akun layanan Kubernetes.

    Praktik terbaik:

    Gunakan Principal identifier, tetapi pertimbangkan batasan dalam deskripsi metode alternatif.

Autentikasi lama

  1. Aktifkan Pub/Sub API di project Anda:

    gcloud services enable cloudresourcemanager.googleapis.com pubsub.googleapis.com
    
  2. Buat topik dan langganan Pub/Sub:

    gcloud pubsub topics create echo
    gcloud pubsub subscriptions create echo-read --topic=echo
    
  3. Buat akun layanan dengan akses ke Pub/Sub:

    gcloud iam service-accounts create autoscaling-pubsub-sa
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:autoscaling-pubsub-sa@$PROJECT_ID.iam.gserviceaccount.com" \
      --role "roles/pubsub.subscriber"
    
  4. Download file kunci akun layanan:

    gcloud iam service-accounts keys create key.json \
      --iam-account autoscaling-pubsub-sa@$PROJECT_ID.iam.gserviceaccount.com
    
  5. Impor kunci akun layanan ke cluster Anda sebagai Secret:

    kubectl create secret generic pubsub-key --from-file=key.json=./key.json
    
  6. Deploy aplikasi ke cluster Anda:

    kubectl apply -f deployment/pubsub-with-secret.yaml
    

Metrik Kustom

kubectl apply -f custom-metrics-gmp.yaml

Setelah menunggu beberapa saat hingga aplikasi di-deploy, semua Pod mencapai status Ready:

CPU

kubectl get pods

Output:

NAME                        READY   STATUS    RESTARTS   AGE
helloweb-7f7f7474fc-hzcdq   1/1     Running   0          10s

Pub/Sub

kubectl get pods

Output:

NAME                     READY   STATUS    RESTARTS   AGE
pubsub-8cd995d7c-bdhqz   1/1     Running   0          58s

Metrik Kustom

kubectl get pods

Output:

NAME                                  READY   STATUS    RESTARTS   AGE
custom-metrics-gmp-865dffdff9-x2cg9   1/1     Running   0          49s

Melihat metrik di Cloud Monitoring

Saat berjalan, aplikasi Anda akan menulis metrik ke Cloud Monitoring.

Untuk melihat metrik untuk resource yang dimonitor menggunakan Metrics Explorer, lakukan langkah berikut:

  1. Di konsol Google Cloud, buka halaman  Metrics explorer:

    Buka Metrics explorer

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Pada elemen Metric, luaskan menu Select a metric, lalu pilih jenis resource dan jenis metrik. Misalnya, untuk membuat diagram penggunaan CPU virtual machine, lakukan tindakan berikut:
    1. (Opsional) Untuk mengurangi opsi menu, masukkan bagian nama metrik dalam Panel filter. Untuk contoh ini, masukkan utilization.
    2. Di menu Active resources, pilih VM instance.
    3. Di menu Active metric category, pilih Instance.
    4. Di menu Active metrics, pilih CPU utilization, lalu klik Apply.
  3. Untuk memfilter deret waktu yang ditampilkan, gunakan elemen Filter.

  4. Untuk menggabungkan deret waktu, gunakan menu pada elemen Aggregation. Misalnya, untuk menampilkan pemakaian CPU untuk VM Anda, berdasarkan zonanya, tetapkan menu pertama ke Mean dan menu kedua ke zone.

    Semua deret waktu akan ditampilkan saat menu pertama elemen Aggregation ditetapkan ke Unaggregated. Setelan default untuk elemen Aggregation ditentukan oleh jenis metrik yang Anda pilih.

Jenis dan metrik resource adalah sebagai berikut:

CPU

Metrics Explorer

Jenis resource: gce_instance

Metrik: compute.googleapis.com/instance/cpu/utilization

Pub/Sub

Metrics Explorer

Jenis resource: pubsub_subscription

Metrik: pubsub.googleapis.com/subscription/num_undelivered_messages

Metrik Kustom

Metrics Explorer

Jenis resource: prometheus_target

Metrik: prometheus.googleapis.com/custom_prometheus/gauge

Bergantung pada metriknya, Anda mungkin belum melihat banyak aktivitas di Metrics Explorer Cloud Monitoring. Jangan heran jika metrik Anda tidak diperbarui.

Membuat objek HorizontalPodAutoscaler

Saat melihat metrik di Cloud Monitoring, Anda dapat men-deploy HorizontalPodAutoscaler untuk mengubah ukuran Deployment berdasarkan metrik.

CPU

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: cpu
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: helloweb
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 30

Pub/Sub

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: pubsub
spec:
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - external:
      metric:
       name: pubsub.googleapis.com|subscription|num_undelivered_messages
       selector:
         matchLabels:
           resource.labels.subscription_id: echo-read
      target:
        type: AverageValue
        averageValue: 2
    type: External
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: pubsub

Metrik Kustom

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: custom-metrics-gmp-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: custom-metrics-gmp
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Pods
    pods:
      metric:
        name: prometheus.googleapis.com|custom_prometheus|gauge
      target:
        type: AverageValue
        averageValue: 20

Deploy HorizontalPodAutoscaler ke cluster Anda:

CPU

kubectl apply -f manifests/helloweb-hpa.yaml

Pub/Sub

kubectl apply -f deployment/pubsub-hpa.yaml

Metrik Kustom

kubectl apply -f custom-metrics-gmp-hpa.yaml

Membuat beban

Untuk beberapa metrik, Anda mungkin perlu menghasilkan beban agar dapat melihat penskalaan otomatis:

CPU

Simulasikan 10.000 permintaan ke server helloweb:

 kubectl exec -it deployments/helloweb -- /bin/sh -c \
     "for i in $(seq -s' ' 1 10000); do wget -q -O- localhost:8080; done"

Pub/Sub

Publikasikan 200 pesan ke topik Pub/Sub:

for i in {1..200}; do gcloud pubsub topics publish echo --message="Autoscaling #${i}"; done

Metrik Kustom

Tidak Berlaku: Kode yang digunakan dalam contoh ini mengekspor nilai konstanta 40 untuk metrik kustom. HorizontalPodAutoscaler disetel dengan nilai target 20 sehingga akan mencoba meningkatkan skala Deployment secara otomatis.

Anda mungkin perlu menunggu beberapa menit hingga HorizontalPodAutoscaler merespons perubahan metrik.

Mengamati peningkatan skala HorizontalPodAutoscaler

Anda dapat memeriksa jumlah replika Deployment saat ini dengan menjalankan:

kubectl get deployments

Setelah memberikan beberapa waktu agar metrik menyebar, Deployment akan membuat lima Pod untuk menangani backlog.

Anda juga dapat memeriksa status dan aktivitas terbaru HorizontalPodAutoscaler dengan menjalankan:

kubectl describe hpa

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus masing-masing resource.

CPU

Hapus cluster GKE Anda:

 gcloud container clusters delete metrics-autoscaling

Pub/Sub

  1. Bersihkan langganan Pub/Sub dan topik:

    gcloud pubsub subscriptions delete echo-read
    gcloud pubsub topics delete echo
    
  2. Hapus cluster GKE Anda:

    gcloud container clusters delete metrics-autoscaling
    

Metrik Kustom

Hapus cluster GKE Anda:

 gcloud container clusters delete metrics-autoscaling

Langkah berikutnya