Anda dapat menskalakan sebagian besar layanan yang berjalan di Kubernetes dari
command line atau dalam penggantian konfigurasi. Anda dapat menetapkan parameter
penskalaan untuk layanan runtime hybrid Apigee di
file overrides.yaml.
| Layanan | Diterapkan Sebagai | Penskalaan |
|---|---|---|
| Cassandra | ApigeeDatastore (CRD) | Lihat Menskalakan Cassandra. |
| Ingress/LoadBalancer | Deployment | Cloud Service Mesh menggunakan Penskalaan Otomatis Pod Horizontal (HPA). |
| Logger | DaemonSet | DaemonSet mengelola replika pod di semua node, sehingga ia diskalakan saat Anda menskalakan pod itu sendiri. |
| MART Apigee Connect Watcher |
ApigeeOrganization (CRD) | Untuk menskalakan melalui konfigurasi, tingkatkan nilai properti konfigurasi mart: replicaCountMax: 2 replicaCountMin: 1 watcher: replicaCountMax: 2 replicaCountMin: 1 connectAgent: replicaCountMax: 2 replicaCountMin: 1 Deployment ini menggunakan Horizontal Pod Autoscaler untuk penskalaan otomatis. Tetapkan properti Untuk informasi selengkapnya tentang cara menetapkan properti konfigurasi, lihat Mengelola komponen bidang runtime. |
| Runtime Sinkronisasi UDCA |
ApigeeEnvironment (CRD) | Untuk menskalakan melalui konfigurasi, tingkatkan nilai properti replicaCountMin untuk stanza udca, synchronizer, dan/atau runtime dalam file penggantian. Contoh:
synchronizer: replicaCountMax: 10 replicaCountMin: 1 runtime: replicaCountMax: 10 replicaCountMin: 1 udca: replicaCountMax: 10 replicaCountMin: 1 Catatan: Perubahan ini berlaku untuk SEMUA lingkungan dalam file penggantian. Jika Anda ingin menyesuaikan penskalaan untuk setiap lingkungan, lihat Konfigurasi lanjutan di bawah. Deployment ini menggunakan Horizontal Pod Autoscaler untuk penskalaan otomatis. Tetapkan properti Untuk informasi selengkapnya tentang cara menetapkan properti konfigurasi, lihat Mengelola komponen bidang runtime. |
Konfigurasi lanjutan
Dalam beberapa skenario, Anda mungkin perlu menggunakan opsi penskalaan lanjutan. Contoh skenario mencakup:
- Menetapkan opsi penskalaan yang berbeda untuk setiap lingkungan. Misalnya, dengan env1 memiliki
minReplica5 dan env2 memilikiminReplica2. - Menetapkan opsi penskalaan yang berbeda untuk setiap komponen dalam lingkungan. Misalnya,
dengan komponen
udcamemilikimaxReplica5 dan komponensynchronizermemilikimaxReplica2.
Contoh berikut menunjukkan cara menggunakan perintah kubernetes patch untuk mengubah properti maxReplicas untuk komponen runtime:
- Buat variabel lingkungan untuk digunakan dengan perintah:
export ENV_NAME=my-environment-name
export ENV_RELEASE_NAME=$ENV_NAME # the Helm release name for the environmentexport APIGEE_NAMESPACE=apigee #the namespace where Apigee is deployedexport COMPONENT=runtime #can be udca or synchronizerexport MAX_REPLICAS=2export MIN_REPLICAS=1 - Terapkan patch. Perhatikan bahwa contoh ini mengasumsikan bahwa
kubectlada diPATHAnda:kubectl patch apigeeenvironment -n $APIGEE_NAMESPACE \ $(kubectl get apigeeenvironments -n $APIGEE_NAMESPACE -o jsonpath='{.items[?(@.spec.name == "'$ENV'" )]..metadata.name}') \ --patch "$(echo -e "spec:\n components:\n $COMPONENT:\n autoScaler:\n maxReplicas: $MAX_REPLICAS\n minReplicas: $MIN_REPLICAS")" \ --type merge - Verifikasi perubahan yang terjadi:
kubectl get hpa -n $APIGEE_NAMESPACE
Penskalaan berbasis lingkungan
Secara default, penskalaan dijelaskan di tingkat organisasi. Anda dapat
mengganti setelan default dengan menentukan penskalaan khusus lingkungan
dalam file overrides.yaml seperti yang ditunjukkan dalam contoh berikut:
envs:
# Apigee environment name
- name: ENV_NAME>
components:
# Environment-specific scaling override
# Otherwise, uses scaling defined at the respective root component
runtime:
replicaCountMin: 2
replicaCountMax: 20
Penskalaan berbasis metrik
Dengan penskalaan berbasis metrik, runtime dapat menggunakan metrik CPU dan aplikasi untuk menskalakan pod apigee-runtime.
Horizontal Pod Autoscaler (HPA) API Kubernetes,
menggunakan kolom hpaBehavior untuk mengonfigurasi perilaku penskalaan ke atas dan penskalaan ke bawah layanan target.
Penskalaan berbasis metrik tidak tersedia untuk komponen lain dalam deployment campuran.
Penskalaan dapat disesuaikan berdasarkan metrik berikut:
| Metrik | Ukur | Pertimbangan |
|---|---|---|
| serverMainTaskWaitTime | Waktu tunggu rata-rata (dalam md) antrean pemrosesan di instance runtime untuk permintaan proxy guna memproses kebijakan. | Metrik ini mengukur dampak kompleksitas dalam kebijakan yang dilampirkan ke alur permintaan proxy. |
| serverNioTaskWaitTime | Waktu tunggu rata-rata (dalam md) antrean pemrosesan dalam instance runtime untuk permintaan proxy di lapisan http. | Metrik ini mengukur dampak jumlah dan ukuran payload permintaan dan respons proxy. |
Contoh berikut dari stanza runtime di overrides.yaml
mengilustrasikan parameter standar (dan rentang yang diizinkan) untuk menskalakan pod apigee-runtime dalam implementasi campuran:
runtime:
# the following parameters configure metrics-based scaling
hpaMetrics:
serverMainTaskWaitTime: 400M # (range: 300M to 450M)
serverNioTaskWaitTime: 400M # (range: 300M to 450M)
targetCPUUtilizationPercentage: 75
hpaBehavior:
scaleDown:
percent:
periodSeconds: 60 # (range: 30 - 180)
value: 20 # (range: 5 - 50)
pods:
periodSeconds: 60 # (range: 30 - 180)
value: 2 # (range: 1 - 15)
selectPolicy: Min
stabilizationWindowSeconds: 120 # (range: 60 - 300)
scaleUp:
percent:
periodSeconds: 60 # (range: 30 - 120)
value: 20 # (range: 5 - 100)
pods:
periodSeconds: 60 # (range: 30 - 120)
value: 4 # (range: 2 - 15)
selectPolicy: Max
stabilizationWindowSeconds: 30 # (range: 30 - 120)
Terapkan setelan ini dengan memperbarui diagram apigee-runtime untuk setiap lingkungan. Contoh:
helm upgrade $ENV_RELEASE_NAME apigee-runtime/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
Mengaktifkan atau menonaktifkan penskalaan berbasis metrik
Penskalaan berbasis metrik diaktifkan secara default. Anda dapat mengaktifkan atau menonaktifkan penskalaan berbasis metrik dengan menetapkan properti customAutoscaling.enabled ke true atau false. Terapkan perubahan pada properti customAutoscaling.enabled dengan memperbarui diagram apigee-telemetry. Contoh:
helm upgrade telemetry apigee-telemetry/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides.yaml
Mengonfigurasi penskalaan yang lebih agresif
Meningkatkan nilai percent dan pods kebijakan penskalaan akan menghasilkan kebijakan penskalaan yang lebih agresif. Demikian pula, meningkatkan nilai percent dan pods di scaleDown
akan menghasilkan kebijakan penskalaan turun yang agresif. Contoh:
runtime:
# ...
hpaMetrics:
serverMainTaskWaitTime: 400M
serverNioTaskWaitTime: 400M
targetCPUUtilizationPercentage: 75
hpaBehavior:
scaleDown:
percent:
periodSeconds: 60
value: 20
pods:
periodSeconds: 60
value: 4
selectPolicy: Min
stabilizationWindowSeconds: 120
scaleUp:
percent:
periodSeconds: 60
value: 30
pods:
periodSeconds: 60
value: 5
selectPolicy: Max
stabilizationWindowSeconds: 30
Pada contoh di atas, scaleDown.pods.value ditingkatkan menjadi 5, scaleUp.percent.value
ditingkatkan menjadi 30, dan scaleUp.pods.value ditingkatkan menjadi 5.
Mengonfigurasi penskalaan yang kurang agresif
Nilai konfigurasi hpaBehavior juga dapat dikurangi untuk menerapkan kebijakan penskalaan dan penskalaan turun yang kurang agresif. Contoh:
runtime:
# ...
hpaMetrics:
serverMainTaskWaitTime: 400M
serverNioTaskWaitTime: 400M
targetCPUUtilizationPercentage: 75
hpaBehavior:
scaleDown:
percent:
periodSeconds: 60
value: 10
pods:
periodSeconds: 60
value: 1
selectPolicy: Min
stabilizationWindowSeconds: 180
scaleUp:
percent:
periodSeconds: 60
value: 20
pods:
periodSeconds: 60
value: 4
selectPolicy: Max
stabilizationWindowSeconds: 30
Pada contoh di atas, scaleDown.percent.value dikurangi menjadi 10, scaleDown.pods.value
dikurangi menjadi 1, dan scaleUp.stablizationWindowSeconds ditingkatkan menjadi 180.
Untuk mengetahui informasi selengkapnya tentang penskalaan berbasis metrik menggunakan kolom hpaBehavior, lihat
Kebijakan penskalaan.
Pemecahan masalah
Bagian ini menjelaskan metode pemecahan masalah terkait error umum yang mungkin Anda alami saat mengonfigurasi penskalaan dan penskalaan otomatis.
HPA menampilkan unknown untuk nilai metrik
Jika penskalaan berbasis metrik tidak berfungsi dan HPA menampilkan unknown untuk nilai metrik, gunakan perintah berikut untuk memeriksa output HPA:
kubectl describe hpa HPA_NAME
Saat menjalankan perintah, ganti HPA_NAME dengan nama HPA yang ingin Anda lihat.
Output akan menampilkan target CPU dan penggunaan layanan, yang menunjukkan bahwa penskalaan CPU akan berfungsi tanpa penskalaan berbasis metrik. Untuk perilaku HPA yang menggunakan beberapa parameter, lihat Penskalaan pada beberapa metrik.