Halaman ini menjelaskan cara menskalakan aplikasi yang di-deploy di Google Kubernetes Engine (GKE).
Ringkasan
Saat men-deploy aplikasi di GKE, Anda menentukan jumlah replicas aplikasi yang ingin dijalankan. Saat menskalakan aplikasi, Anda akan menambah atau mengurangi jumlah replika.
Setiap replika aplikasi Anda mewakili Pod Kubernetes yang mengenkapsulasi container aplikasi Anda.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Memeriksa aplikasi
Sebelum menskalakan aplikasi, Anda harus memeriksa aplikasi dan memastikannya responsif.
Untuk melihat semua aplikasi yang di-deploy ke cluster Anda, jalankan perintah berikut:
kubectl get CONTROLLER
Ganti CONTROLLER
untuk deployments
, statefulsets
,
atau jenis objek pengontrol lainnya.
Misalnya, jika Anda menjalankan kubectl get deployments
dan hanya membuat satu
Deployment, output perintahnya akan terlihat seperti berikut:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-app 1 1 1 1 10m
Output perintah ini serupa untuk semua objek, tetapi mungkin tampak sedikit berbeda. Untuk Deployment, output-nya memiliki enam kolom:
NAME
mencantumkan nama Deployment dalam cluster.DESIRED
menampilkan jumlah replicas yang diinginkan, atau replicas, aplikasi, yang Anda tentukan saat membuat Deployment.CURRENT
menampilkan jumlah replika yang sedang berjalan.UP-TO-DATE
menampilkan jumlah replika yang telah diperbarui untuk mencapai status yang diinginkan.AVAILABLE
menampilkan jumlah replika aplikasi yang tersedia untuk pengguna.AGE
menampilkan durasi aplikasi berjalan di cluster.
Dalam contoh ini, hanya ada satu Deployment, my-app
, yang hanya memiliki satu
replika karena status yang diinginkan adalah satu replika. Anda menentukan status yang diinginkan
pada saat pembuatan, dan dapat mengubahnya kapan saja dengan menskalakan
aplikasi.
Memeriksa StatefulSet
Sebelum menskalakan StatefulSet, Anda harus memeriksanya dengan menjalankan perintah berikut:
kubectl describe statefulset my-app
Di output perintah ini, periksa kolom Status Pod. Jika nilai Failed
lebih besar dari 0
, penskalaan mungkin akan gagal.
Jika StatefulSet tampak tidak responsif, lakukan hal berikut:
Dapatkan daftar pod dan lihat pod mana yang tidak responsif:
kubectl get pods
Hapus pod yang tidak responsif:
kubectl delete POD_NAME
Mencoba menskalakan StatefulSet saat tidak responsif dapat menyebabkannya tidak tersedia.
Menskalakan aplikasi
Bagian berikut menjelaskan setiap metode yang dapat Anda gunakan untuk menskalakan aplikasi.
Metode kubectl scale
adalah cara tercepat untuk melakukan penskalaan. Namun, dalam beberapa situasi seperti saat memperbarui file konfigurasi atau
melakukan modifikasi yang sudah diterapkan, Anda mungkin lebih memilih
metode lain.
kubectl scale
Dengan perintah kubectl scale
,
Anda dapat mengubah jumlah replika yang diinginkan untuk
menjalankan aplikasi secara instan.
Untuk menggunakan kubectl scale
, tentukan jumlah replika yang baru dengan menetapkan
flag --replicas
. Misalnya, untuk menskalakan my-app
menjadi empat replika, jalankan
perintah berikut melalui penggantian CONTROLLER
dengan deployment
,
statefulset
, atau jenis objek pengontrol lainnya:
kubectl scale CONTROLLER my-app --replicas 4
Jika berhasil, output perintah ini akan serupa dengan deployment
"my-app" scaled
.
Kemudian jalankan:
kubectl get CONTROLLER my-app
Output-nya akan terlihat seperti berikut:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-app 4 4 4 4 15m
kubectl apply
Anda dapat menggunakan kubectl apply
untuk menerapkan file konfigurasi baru ke objek pengontrol yang ada. kubectl
apply
bermanfaat untuk membuat beberapa perubahan pada resource, dan mungkin
bermanfaat bagi pengguna yang lebih suka mengelola resource mereka dalam file konfigurasi.
Untuk menskalakan menggunakan kubectl apply
, file konfigurasi yang Anda berikan harus
menyertakan jumlah replika baru di kolom replicas
spesifikasi
objek.
Berikut adalah versi terbaru file konfigurasi untuk
contoh objek my-app
. Contoh ini menunjukkan Deployment. Jadi, jika Anda
menggunakan jenis pengontrol lain,
seperti StatefulSet, ubah kind
. Contoh ini berfungsi optimal pada cluster dengan setidaknya tiga Node.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: my-container
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0
Dalam file ini, nilai kolom replicas
adalah 3
. Saat file konfigurasi ini
diterapkan, objek my-app
akan diskalakan menjadi tiga replika.
Untuk menerapkan file konfigurasi yang telah diperbarui, jalankan perintah berikut:
kubectl apply -f config.yaml
Kemudian jalankan:
kubectl get CONTROLLER my-app
Output-nya akan terlihat seperti berikut:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-app 3 3 3 3 15m
Konsol
Untuk menskalakan workload di Konsol Google Cloud, lakukan langkah-langkah berikut:
Buka halaman Workload di Konsol Google Cloud.
Dalam daftar workload, klik nama workload yang ingin diskalakan.
Klik list Tindakan > Skalakan > Edit replika.
Masukkan jumlah baru Replika untuk workload.
Klik Skalakan.
Deployment Penskalaan Otomatis
Anda dapat menskalakan Deployment secara otomatis berdasarkan pemakaian CPU Pod menggunakan kubectl
autoscale
atau dari menu Workload GKE di
Konsol Google Cloud.
kubectl autoscale
kubectl autoscale
akan membuat objek HorizontalPodAutoscaler
(atau HPA) yang menargetkan resource yang ditentukan
(disebut target skala) dan menskalakannya sesuai kebutuhan. HPA
secara berkala menyesuaikan jumlah replika target skala agar sesuai dengan
penggunaan CPU rata-rata yang ditentukan.
Saat menggunakan kubectl autoscale
, Anda harus menentukan jumlah
replika maksimum dan minimum untuk aplikasi, serta target pemakaian CPU. Misalnya,
untuk menetapkan jumlah maksimum replika ke enam dan minimum ke
empat dengan target pemakaian CPU sebesar 50%, jalankan perintah
berikut:
kubectl autoscale deployment my-app --max 6 --min 4 --cpu-percent 50
Dalam perintah ini, flag --max
diperlukan. Flag --cpu-percent
adalah
target pemakaian CPU untuk semua Pod. Perintah ini tidak
langsung menskalakan Deployment menjadi enam replika, kecuali jika sudah ada
permintaan dari sistem.
Setelah menjalankan kubectl autoscale
, objek HorizontalPodAutoscaler
akan
dibuat dan menargetkan aplikasi. Saat ada perubahan beban, objek
akan menambah atau mengurangi replika aplikasi.
Untuk mendapatkan daftar objek HorizontalPodAutoscaler
di cluster Anda, jalankan:
kubectl get hpa
Untuk melihat objek HorizontalPodAutoscaler
tertentu di cluster Anda, jalankan:
kubectl get hpa HPA_NAME
Ganti HPA_NAME
dengan nama objek HorizontalPodAutoscaler
Anda.
Untuk melihat konfigurasi HorizontalPodAutoscaler
:
kubectl get hpa HPA_NAME -o yaml
Output perintah ini akan mirip dengan berikut ini:
apiVersion: v1
items:
- apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
creationTimestamp: ...
name: HPA_NAME
namespace: default
resourceVersion: "664"
selfLink: ...
uid: ...
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: HPA_NAME
targetCPUUtilizationPercentage: 50
status:
currentReplicas: 0
desiredReplicas: 0
kind: List
metadata: {}
resourceVersion: ""
selfLink: ""
Dalam contoh output ini, kolom targetCPUUtilizationPercentage
menyimpan nilai persentase
50
yang diteruskan dari contoh kubectl autoscale
.
Untuk melihat deskripsi terperinci tentang objek HorizontalPodAutoscaler
tertentu di cluster:
kubectl describe hpa HPA_NAME
Anda dapat memodifikasi HorizontalPodAutoscaler
melalui penerapan file konfigurasi
baru dengan kubectl apply
, menggunakan kubectl edit
, atau menggunakan kubectl patch
.
Untuk menghapus objek HorizontalPodAutoscaler
:
kubectl delete hpa HPA_NAME
Konsol
Untuk menskalakan Deployment secara otomatis, lakukan langkah-langkah berikut:
Buka halaman Workload di Konsol Google Cloud.
Dalam daftar workload, klik nama Deployment yang ingin diskalakan otomatis.
Klik list Tindakan > Skalakan otomatis.
Masukkan Jumlah maksimum replika dan, secara opsional, Jumlah minimum replika untuk Deployment.
Di bagian Metrik penskalaan otomatis, pilih dan konfigurasikan metrik sesuai keinginan.
Klik Skalakan otomatis.
Penskalaan otomatis dengan metrik kustom
Anda dapat menskalakan Deployment berdasarkan metrik kustom yang diekspor dari Cloud Monitoring.
Untuk mempelajari cara menggunakan metrik kustom guna menskalakan otomatis deployment, lihat tutorial Menskalakan otomatis deployment dengan metrik kustom.