Sebagai titik masuk lalu lintas, gateway MSE memberikan gambaran paling akurat mengenai volume lalu lintas aplikasi Anda. Gunakan metrik queries per second (QPS) dari gateway untuk mengaktifkan auto scaling pada aplikasi di Container Service for Kubernetes (ACK), sehingga layanan backend dapat melakukan scaling sesuai permintaan. Topik ini menjelaskan cara mengonfigurasi auto scaling untuk aplikasi ACK menggunakan log akses gateway.
Prasyarat
Prosedur
-
Terapkan resource berikut di kluster ACK Anda.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik .
-
Cari ack-alibaba-cloud-metrics-adapter dan klik kartu aplikasinya. Di halaman detail, klik Deploy. Di panel Deploy, konfigurasi parameter lalu klik OK.
Atur parameter berikut: pilih cluster target, atur namespace menjadi
kube-system, dan atur release name menjadiack-alibaba-cloud-metrics-adapter. -
Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di halaman Deployments, klik Create Resources in YAML. Pilih Custom dari daftar templat, tempel YAML berikut, lalu klik Create.
apiVersion: apps/v1 kind: Deployment metadata: name: httpbin-deploy labels: app: httpbin-deploy spec: replicas: 1 selector: matchLabels: app: httpbin template: metadata: labels: app: httpbin spec: containers: - image: kennethreitz/httpbin imagePullPolicy: IfNotPresent name: httpbin ports: - name: http containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: httpbin-svc namespace: default labels: app: httpbin-svc spec: ports: - port: 8080 name: http protocol: TCP targetPort: 80 selector: app: httpbin type: ClusterIP
-
Di gateway MSE, tambahkan sumber layanan dan buat layanan.
-
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
-
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.
-
Di panel navigasi kiri, klik Routes. Lalu, klik tab Source.
-
Klik Add Source. Untuk Source Type, pilih Container Service, pilih kluster ACK tempat aplikasi Anda diterapkan, lalu klik OK.
-
Di panel navigasi kiri, klik Routes. Lalu, klik tab Services.
-
Klik Add Service untuk menambahkan sumber layanan ke Services, lalu klik OK.
-
-
Buat aturan routing untuk layanan yang telah Anda tambahkan. Untuk informasi selengkapnya, lihat Create a routing rule.
-
Aktifkan pengiriman log.
-
Di panel navigasi kiri, klik Parameter Settings.
-
Di bagian Observability Parameters, klik ikon pengaturan
di samping Log Shipping. Di kotak dialog yang muncul, aktifkan pengiriman log dan opsi Compatible with NGINX Ingress.Biarkan Simple Log Service (SLS) Project diatur sebagai Use Default, lalu klik OK.
-
-
Di kluster ACK Anda, buat HorizontalPodAutoscaler (HPA) dan konfigurasi pengaturannya.
Anda perlu menentukan aplikasi backend yang akan di-scale, jumlah replika minimum dan maksimum, serta metrik scaling. Konfigurasi contoh berikut melakukan scale out aplikasi ketika rata-rata QPS per pod melebihi 10. Dalam contoh ini,
sls.projectadalah nama proyek pengiriman log, yang dapat ditemukan di halaman Parameter Settings di konsol gateway. Formatsls.ingress.routeadalah<namespace>-<service-name>-<service-port>.apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: higress-hpa spec: scaleTargetRef: apiVersion: apps/v1beta2 kind: Deployment name: httpbin-deploy minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: sls_ingress_qps selector: matchLabels: sls.project: "aliyun-product-data-xxxxxxxxxxxxx-cn-hangzhou" sls.logstore: "nginx-ingress" sls.ingress.route: "default-httpbin-svc-8080" target: type: AverageValue averageValue: 10 -
Jalankan uji beban terhadap aplikasi dengan mengarahkan lalu lintas melalui gateway menggunakan QPS yang dikontrol. Kemudian, amati event HPA untuk memverifikasi perilaku scaling.
Jalankan perintah berikut:
kubectl describe hpa higress-hpaOutput-nya mirip seperti berikut:
Normal SuccessfulRescale 9m horizontal-pod-autoscaler New size: 3; reason: external metric sls_ingress_qps(&LabelSelector{MatchLabels:map[string]string{sls.ingress.route: default-httpbin-svc-8080,sls.logstore: nginx-ingress,sls.project: aliyun-product-data-xxxxxxxxxxxxxxxx-cn-hangzhou,},MatchExpressions:[]LabelSelectorRequirement{},}) above target Normal SuccessfulRescale 8m45s horizontal-pod-autoscaler New size: 4; reason: external metric sls_ingress_qps(&LabelSelector{MatchLabels:map[string]string{sls.ingress.route: default-httpbin-svc-8080,sls.logstore: nginx-ingress,sls.project: aliyun-product-data-xxxxxxxxxxxxxxxx-cn-hangzhou,},MatchExpressions:[]LabelSelectorRequirement{},}) above target Normal SuccessfulRescale 5m12s horizontal-pod-autoscaler New size: 4; reason: Normal SuccessfulRescale 3m41s horizontal-pod-autoscaler New size: 3; reason: All metrics below target Normal SuccessfulRescale 2m55s horizontal-pod-autoscaler New size: 1; reason: All metrics below target