Penskalaan otomatis Pod multidimensi membebaskan Anda dari memilih satu cara untuk menskalakan cluster. Dengan penskalaan otomatis Pod multidimensi, Anda dapat menggunakan penskalaan horizontal berdasarkan CPU dan penskalaan vertikal berdasarkan memori secara bersamaan.
Objek MultidimPodAutoscaler
mengubah permintaan memori dan menambahkan replika sehingga
penggunaan CPU rata-rata setiap replika sesuai dengan target pemanfaatan Anda.
Prasyarat
- Cluster GKE versi 1.19.4-gke.1700 atau yang lebih baru.
- Untuk cluster Standard, aktifkan penskalaan otomatis Pod vertikal di cluster Anda. Penskalaan otomatis Pod vertikal sudah diaktifkan di cluster Autopilot.
Menggunakan penskalaan otomatis Pod multidimensi
Contoh ini menunjukkan cara membuat Deployment dan objek MultidimPodAutoscaler
untuk menskalakan Deployment Anda secara otomatis.
Membuat Deployment
Sebelum dapat membuat MultidimPodAutoscaler
, Anda harus membuat workload
yang dipantau. File berikut, php-apache.yaml
, menentukan nilai untuk
permintaan CPU:
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 80
resources:
# Since MPA does not specify CPU requests, you must specify a request in
# the Deployment
limits:
cpu: 500m
requests:
cpu: 200m
Untuk membuat Deployment, terapkan manifes php-apache.yaml
:
kubectl apply -f php-apache.yaml
Membuat MultidimPodAutoscaler
Setelah membuat Deployment, Anda dapat membuat objek MultidimPodAutoscaler
. Manifes MultidimPodAutoscaler
berikut otomatis menyesuaikan jumlah replika dan permintaan memori berdasarkan nilai yang Anda tentukan.
Untuk mengetahui informasi selengkapnya tentang kolom dalam contoh ini, baca bagian Referensi API.
apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
name: php-apache-autoscaler
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
goals:
metrics:
- type: Resource
resource:
# Define the target CPU utilization request here
name: cpu
target:
type: Utilization
averageUtilization: 60
constraints:
global:
minReplicas: 1
maxReplicas: 5
containerControlledResources: [ memory ]
container:
- name: '*'
# Define boundaries for the memory request here
requests:
minAllowed:
memory: 1Gi
maxAllowed:
memory: 2Gi
policy:
updateMode: Auto
Untuk membuat MultidimPodAutoscaler
, terapkan manifes
php-apache-autoscaler.yaml
:
kubectl apply -f php-apache-autoscaler.yaml
Melihat MultidimPodAutoscaler
Lihat semua objek MultidimPodAutoscaler
dengan menggunakan perintah kubectl get
:
kubectl get mpa
Menghapus MultidimPodAutoscaler
Hapus objek MultidimPodAutoscaler
menggunakan perintah kubectl delete
:
kubectl delete -f php-apache-autoscaler.yaml
Referensi API
Bagian berikut memberikan informasi tentang kemungkinan kolom yang dapat Anda tambahkan ke objek MultidimPodAutoscaler
.
Semua kolom ditujukan untuk apiVersion
v1beta1 autoscaling.gke.io
.
MultidimPodAutoscaler
MultidimPodAutoscaler
adalah konfigurasi untuk autoscaler Pod multidimensi, yang otomatis mengelola resource Pod dan jumlahnya berdasarkan pemakaian resource secara historis dan real-time.
Kolom | Jenis | Deskripsi |
---|---|---|
metadata |
ObjectMeta |
Metadata objek standar. |
spec |
MultidimPodAutoscalerSpec |
Perilaku yang diinginkan dari autoscaler Pod multidimensi. |
status |
MultidimPodAutoscalerStatus |
Status autoscaler Pod multidimensi yang terakhir diamati. |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec
adalah spesifikasi yang menentukan perilaku
autoscaler.
Kolom | Jenis | Deskripsi |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
Referensi yang menunjuk ke resource target untuk diskalakan (dengan subresource Scale). |
Goals |
*MultidimGoals |
Sasaran yang akan dicapai dan dikelola oleh autoscaler Pod multidimensi. |
Constraints |
*MultidimConstraints |
Menjelaskan batasan untuk penskalaan otomatis. Batasan lebih besar daripada sasaran. Jika kendala menghalangi beberapa tujuan, tujuan tidak akan tercapai. Misalnya, mencapai jumlah replika maksimum akan mencegah peningkatan skala lebih lanjut meskipun replika mungkin perlu melakukan penskalaan. |
Policy |
*MultidimPolicy |
Dengan kebijakan, Anda dapat menentukan cara penerapan rekomendasi. |
MultidimGoals
MultidimGoals
adalah sasaran yang akan dicapai oleh autoscaler Pod multidimensi.
Kolom | Jenis | Deskripsi |
---|---|---|
Metrics |
[]MetricSpec |
Berisi daftar metrik beserta nilai yang diinginkan. Autoscaler Pod multidimensi mencoba tetap mendekati nilai yang diinginkan. |
MultidimConstraints
MultidimConstraints
mendeskripsikan batasan untuk penskalaan otomatis. Batasan lebih diutamakan
daripada sasaran.
Kolom | Jenis | Deskripsi |
---|---|---|
Global |
*GlobalConstraints |
Batasan yang berlaku untuk aplikasi yang diskalakan otomatis secara keseluruhan. |
Pod |
*PodConstraints |
Batasan yang berlaku untuk satu Pod dari aplikasi yang ditargetkan. |
ContainerControlledResources |
[]ResourceName |
Resource Container yang harus dikontrol oleh autoscaler. memory adalah satu-satunya nilai yang didukung. |
Container |
[]ContainerConstraints |
Batasan yang berlaku untuk container Pod. |
ResourceConstraints
ResourceConstraints
menentukan jumlah minimum dan maksimum resource yang
dapat ditetapkan ke container, Pod, atau aplikasi.
Kolom | Jenis | Deskripsi |
---|---|---|
MinAllowed |
ResourceList |
Jumlah minimum resource yang dapat Anda tetapkan. Jika tidak diberikan, 0 akan digunakan. |
MaxAllowed |
ResourceList |
Jumlah maksimum resource yang dapat Anda tetapkan. Jika tidak diberikan, tidak ada batasan jumlah maksimum resource. |
GlobalConstraints
GlobalConstraints
menentukan batasan yang sepenuhnya diterapkan ke aplikasi. Batasan ini mencakup jumlah replika atau jumlah total resource.
Kolom | Jenis | Deskripsi |
---|---|---|
MinReplicas |
*Int32 |
Jumlah minimum replika yang dapat dimiliki aplikasi. Jika tidak diberikan, 1 akan digunakan. |
MaxReplicas |
*Int32 |
Jumlah maksimum replika yang dapat dimiliki aplikasi. Jika tidak diberikan, tidak ada batasan jumlah maksimum replika. |
Requests |
*ResourceConstraints |
Jumlah resource minimum dan maksimum yang dapat diminta aplikasi, dijumlahkan di seluruh pod. |
PodConstraints
PodConstraints
menentukan jumlah minimum dan maksimum resource yang dapat diminta oleh satu Pod, yang dijumlahkan di seluruh container yang termasuk dalam Pod.
Kolom | Jenis | Deskripsi |
---|---|---|
Requests |
*ResourceConstraints |
Jumlah minimum dan maksimum resource yang dapat diminta oleh satu Pod, dijumlahkan di seluruh container yang menjadi bagian dari Pod. |
ContainerConstraints
ContainerConstraints
adalah batasan yang berlaku untuk container Pod.
Kolom | Jenis | Deskripsi |
---|---|---|
Name |
String |
Nama container yang menetapkan batasan. Anda juga dapat menggunakan * untuk menentukan batasan bagi semua container dalam Pod. |
Requests |
*ResourceConstraints |
Jumlah minimum dan maksimum resource yang dapat diminta container yang ditentukan. |
UpdateMode
Gunakan UpdateMode
untuk mengontrol cara penerapan rekomendasi yang dihitung.
Kolom | Jenis | Deskripsi |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
Dengan AutoUpdates, semua rekomendasi autoscaler dapat diterapkan kapan saja. |
AutoUpdates |
UpdateMode = "Off" |
Dengan AutoUpdates, rekomendasi autoscaler tidak akan diterapkan sama sekali. |
MultidimPolicy
Kolom | Jenis | Deskripsi |
---|---|---|
Update |
UpdateMode |
Menentukan bagaimana rekomendasi akan diterapkan. Nilai kosong gagal divalidasi. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
menjelaskan status runtime autoscaler.
Kolom | Jenis | Deskripsi |
---|---|---|
ObservedGeneration |
*Int64 |
Generasi terbaru yang diamati oleh autoscaler ini. |
RecommendedPodResources |
*RecommendedPodResources |
Jumlah resource yang terakhir dihitung yang direkomendasikan oleh autoscaler untuk Pod yang dikontrol. |
CurrentReplicas |
Int32 |
CurrentReplicas adalah jumlah replika Pod saat ini yang dikelola oleh autoscaler ini, seperti yang terakhir terlihat oleh autoscaler. |
DesiredReplicas |
Int32 |
DesiredReplicas adalah jumlah replika Pod yang diinginkan yang dikelola oleh autoscaler ini, seperti yang terakhir dihitung oleh autoscaler. |
CurrentMetrics |
[]autoscaling.MetricStatus |
Status baca terakhir dari metrik yang digunakan oleh autoscaler ini. |
Conditions |
[]metav1.Condition |
Conditions adalah kumpulan kondisi yang diperlukan agar autoscaler ini dapat menskalakan targetnya, dan menunjukkan apakah kondisi tersebut terpenuhi atau tidak. |
Langkah selanjutnya
- Pelajari lebih lanjut cara mengonfigurasi penskalaan otomatis Pod horizontal.
- Pelajari lebih lanjut cara mengonfigurasi penskalaan otomatis Pod vertikal.