Topik ini menjelaskan cara mengonfigurasi metrik yang ditentukan pengguna untuk penskalaan otomatis Pod Horizontal (HPA) di GKE pada VMware.
Mengaktifkan Logging dan Pemantauan untuk aplikasi pengguna
Konfigurasi untuk Logging dan Monitoring disimpan dalam objek Stackdriver bernama stackdriver
.
Buka objek
stackdriver
untuk diedit:kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG --namespace kube-system edit stackdriver stackdriver
Ganti USER_CLUSTER_KUBECONFIG dengan jalur file cluster kubeconfig pengguna Anda.
Di bagian
spec
, tetapkanenableStackdriverForApplications
danenableCustomMetricsAdapter
ketrue
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: project-id clusterName: cluster-name clusterLocation: cluster-location proxyConfigSecretName: secret-name enableStackdriverForApplications: true enableCustomMetricsAdapter: true scalableMonitoring: true enableVPC: stackdriver-enable-VPC optimizedMetrics: true
Simpan dan tutup file yang diedit.
Setelah langkah-langkah ini selesai, semua log aplikasi pengguna dikirim ke Cloud Logging.
Langkah berikutnya adalah menganotasi aplikasi pengguna untuk pengumpulan metrik.
Menganotasi aplikasi pengguna untuk pengumpulan metrik
Untuk menganotasi aplikasi pengguna yang akan disalin dan log dikirim ke Cloud Monitoring, Anda harus menambahkan annotations
yang sesuai ke metadata untuk service, Pod, dan endpoint.
metadata: name: "example-monitoring" namespace: "default" annotations: prometheus.io/scrape: "true" prometheus.io/path: "" - Overriding metrics path (default "/metrics")
Men-deploy contoh aplikasi pengguna
Di bagian ini, Anda akan men-deploy aplikasi contoh dengan log dan metrik yang kompatibel dengan prometheus.
- Simpan manifes Layanan dan Deployment berikut ke file bernama
my-app.yaml
. Perhatikan bahwa Layanan memiliki anotasiprometheus.io/scrape: "true"
:
kind: Service
apiVersion: v1
metadata:
name: "example-monitoring"
namespace: "default"
annotations:
prometheus.io/scrape: "true"
spec:
selector:
app: "example-monitoring"
ports:
- name: http
port: 9090
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: "example-monitoring"
namespace: "default"
labels:
app: "example-monitoring"
spec:
replicas: 1
selector:
matchLabels:
app: "example-monitoring"
template:
metadata:
labels:
app: "example-monitoring"
spec:
containers:
- image: gcr.io/google-samples/prometheus-example-exporter:latest
name: prometheus-example-exporter
imagePullPolicy: Always
command:
- /bin/sh
- -c
- ./prometheus-example-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090
resources:
requests:
cpu: 100m
Membuat Deployment dan Service:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG apply -f my-app.yaml
Menggunakan metrik kustom di HPA
Deploy objek HPA untuk menggunakan metrik yang ditampilkan di langkah sebelumnya. Lihat Penskalaan otomatis pada beberapa metrik dan metrik kustom untuk informasi lanjutan tentang berbagai jenis metrik kustom.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: example-monitoring-hpa namespace: default spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: example-monitoring minReplicas: 1 maxReplicas: 5 metrics: - type: Pods pods: metric: name: example_monitoring_up target: type: AverageValue averageValue: 20
Metrik jenis Pod memiliki pemilih metrik default untuk label Pod target, yang merupakan cara kerja kube-controller-maneger. Dalam contoh ini, Anda cna akan membuat kueri metrik example_monitoring_up dengan pemilih {matchLabels: {app: example-monitoring}}
karena tersedia di Pod target. Pemilih lain yang ditentukan akan ditambahkan ke daftar. Untuk menghindari pemilih default, Anda dapat menghapus label apa pun di Pod target atau menggunakan metrik jenis Objek.
Memastikan metrik aplikasi buatan pengguna digunakan oleh HPA
Pastikan metrik aplikasi buatan pengguna digunakan oleh HPA:
kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG describe hpa example-monitoring-hpa
Output akan terlihat seperti ini:
Name: example-monitoring-hpa Namespace: default Labels:Annotations: CreationTimestamp: Mon, 19 Jul 2021 16:00:40 -0800 Reference: Deployment/example-monitoring Metrics: ( current / target ) "example_monitoring_up" on pods: 1 / 20 Min replicas: 1 Max replicas: 5 Deployment pods: 1 current / 1 desired Conditions: Type Status Reason Message
AbleToScale True ReadyForNewScale recommended size matches current size ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from pods metric example_monitoring_up ScalingLimited False DesiredWithinRange the desired count is within the acceptable range
Biaya
Penggunaan metrik kustom untuk HPA tidak dikenai biaya tambahan. Pengguna hanya dikenai biaya untuk metrik dan log aplikasi. Lihat Harga Google Cloud Observability untuk mengetahui detailnya. Pod untuk mengaktifkan metrik kustom menggunakan CPU ekstra 15 m dan memori 20 MB.