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 dalam file overrides.yaml
.
Layanan | Diterapkan Sebagai | Penskalaan |
---|---|---|
Cassandra | ApigeeDatastore (CRD) | Lihat Penskalaan Cassandra. |
Ingress/LoadBalancer | Deployment | Anthos Service Mesh menggunakan Penskalaan Otomatis Pod Horizontal (HPA). |
Logger | DaemonSet | DaemonSet mengelola replika pod di semua node, sehingga akan diskalakan ketika Anda menskalakan pod itu sendiri. |
MART Apigee Connect Watcher |
ApigeeOrganization (CRD) | Untuk melakukan penskalaan melalui konfigurasi, tingkatkan nilai properti konfigurasi mart: replicaCountMax: 2 replicaCountMin: 1 watcher: replicaCountMax: 2 replicaCountMin: 1 connectAgent: replicaCountMax: 2 replicaCountMin: 1 Deployment ini menggunakan Autoscaler Pod Horizontal untuk penskalaan otomatis. Tetapkan properti Untuk informasi selengkapnya mengenai menetapkan properti konfigurasi, lihat Mengelola komponen bidang runtime. |
Runtime Sinkronisasi UDCA |
ApigeeEnvironment (CRD) | Untuk melakukan penskalaan 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 di 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 mengenai menetapkan properti konfigurasi, lihat Mengelola komponen bidang runtime. |
Konfigurasi lanjutan
Dalam beberapa skenario, Anda mungkin perlu menggunakan opsi penskalaan lanjutan. Contoh skenario mencakup:
- Menyetel opsi penskalaan yang berbeda untuk setiap lingkungan. Misalnya, jika env1 memiliki
minReplica
5 dan env2 memilikiminReplica
2. - Menyetel opsi penskalaan yang berbeda untuk setiap komponen dalam lingkungan. Misalnya,
dengan komponen
udca
memilikimaxReplica
dari 5 dan komponensynchronizer
memilikimaxReplica
2.
Contoh berikut menunjukkan cara menggunakan perintah kubernetes patch
untuk mengubah
properti maxReplicas
untuk komponen runtime
:
- Buat variabel lingkungan yang akan digunakan dengan perintah:
export ENV=my-environment-name export NAMESPACE=apigee #the namespace where apigee is deployed export COMPONENT=runtime #can be udca or synchronizer export MAX_REPLICAS=2 export MIN_REPLICAS=1
- Terapkan patch. Perhatikan bahwa contoh ini mengasumsikan bahwa
kubectl
ada diPATH
Anda:kubectl patch apigeeenvironment -n $NAMESPACE \ $(kubectl get apigeeenvironments -n $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 tersebut:
kubectl get hpa -n $NAMESPACE
Penskalaan berbasis lingkungan
Secara default, penskalaan dijelaskan di tingkat organisasi. Anda dapat mengganti setelan default ini dengan menentukan penskalaan khusus lingkungan dalam file overrides.yaml
seperti yang ditunjukkan dalam contoh berikut:
envs: # Apigee environment name - name: test 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 peningkatan skala dan penurunan skala layanan target.
Penskalaan berbasis metrik tidak tersedia untuk komponen lain dalam deployment hybrid.
Penskalaan dapat disesuaikan berdasarkan metrik berikut:
Metrik | Ukur | Pertimbangan |
---|---|---|
serverNioTaskWaitTime | Waktu tunggu rata-rata (dalam md) dari antrean pemrosesan dalam instance runtime untuk permintaan proxy di lapisan http. | Metrik ini mengukur dampak jumlah dan ukuran payload permintaan dan respons proxy. |
serverMainTaskWaitTime | Waktu tunggu rata-rata (dalam md) dari antrean pemrosesan dalam instance runtime untuk permintaan proxy untuk memproses kebijakan. | Metrik ini mengukur dampak kompleksitas dalam kebijakan yang terkait dengan alur permintaan proxy. |
Contoh berikut dari stanza runtime
di overrides.yaml
mengilustrasikan parameter standar (dan rentang yang diizinkan) untuk menskalakan pod apigee-runtime
dalam implementasi campuran:
hpaMetrics: serverMainTaskWaitTime: 400M (300M to 450M) serverNioTaskWaitTime: 400M (300M to 450M) targetCPUUtilizationPercentage: 75 hpaBehavior: scaleDown: percent: periodSeconds: 60 (30 - 180) value: 20 (5 - 50) pods: periodSeconds: 60 (30 - 180) value: 2 (1 - 15) selectPolicy: Min stabilizationWindowSeconds: 120 (60 - 300) scaleUp: percent: periodSeconds: 60 (30 - 120) value: 20 (5 - 100) pods: periodSeconds: 60 (30 - 120) value: 4 (2 - 15) selectPolicy: Max stabilizationWindowSeconds: 30 (30 - 120)
Mengonfigurasi penskalaan yang lebih agresif
Peningkatan nilai percent
dan pods
pada kebijakan peningkatan skala akan menghasilkan kebijakan peningkatan skala yang lebih agresif. Demikian pula, meningkatkan nilai percent
dan pods
di scaleDown
akan menghasilkan kebijakan penurunan skala yang agresif. Contoh:
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
dinaikkan menjadi 5, scaleUp.percent.value
dinaikkan menjadi 30, dan scaleUp.pods.value
dinaikkan menjadi 5.
Mengonfigurasi penskalaan yang kurang agresif
Nilai konfigurasi hpaBehavior
juga dapat diturunkan untuk menerapkan kebijakan peningkatan dan penurunan skala yang kurang agresif. Contoh:
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
diturunkan menjadi 10, scaleDown.pods.value
diturunkan menjadi 1, dan scaleUp.stablizationWindowSeconds
dinaikkan menjadi 180.
Untuk mengetahui informasi selengkapnya tentang penskalaan berbasis metrik yang menggunakan kolom hpaBehavior
, lihat
Kebijakan penskalaan.
Menonaktifkan penskalaan berbasis metrik
Meskipun penskalaan berbasis metrik diaktifkan secara default dan tidak dapat dinonaktifkan sepenuhnya, Anda dapat mengonfigurasi nilai minimum metrik pada tingkat yang tidak akan dipicu penskalaan berbasis metrik. Perilaku penskalaan yang dihasilkan akan sama dengan penskalaan berbasis CPU. Misalnya, Anda dapat menggunakan konfigurasi berikut agar tidak memicu penskalaan berbasis metrik:
hpaMetrics: serverMainTaskWaitTime: 4000M serverNioTaskWaitTime: 4000M 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
Pemecahan masalah
Bagian ini menjelaskan metode pemecahan masalah untuk 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-nya akan menampilkan target CPU dan pemanfaatan layanan, yang menunjukkan bahwa penskalaan CPU akan berfungsi tanpa penskalaan berbasis metrik. Untuk perilaku HPA yang menggunakan beberapa parameter, lihat Penskalaan pada beberapa metrik.