Tutorial: Menskalakan aplikasi di Azure Kubernetes Service (AKS)
Jika kamu sudah mengikuti tutorial, kamu memiliki kluster Kubernetes yang berfungsi di AKS dan kamu menyebarkan contoh aplikasi Azure Voting. Dalam tutorial ini, bagian lima dari tujuh, Anda menskalakan pod di aplikasi dan mencoba penskalaan otomatis pod. Anda juga belajar cara menskalakan jumlah simpul Azure VM untuk mengubah kapasitas kluster untuk menghosting beban kerja. Anda mempelajari cara untuk:
- Menskalakan simpul Kubernetes
- Menskalakan pod Kubernetes secara manual yang menjalankan aplikasi Anda
- Mengonfigurasi pod penskalaan otomatis yang menjalankan ujung depan aplikasi
Dalam tutorial selanjutnya, aplikasi Azure Vote diperbarui ke versi baru.
Sebelum Anda mulai
Dalam tutorial sebelumnya, aplikasi dikemas ke dalam gambar kontainer. Gambar ini diunggah ke Azure Container Registry, dan Anda membuat kluster AKS. Aplikasi kemudian disebarkan ke kluster AKS. Jika Anda belum melakukan langkah-langkah ini, dan ingin mengikuti, mulailah dengan Tutorial 1 - Membuat citra kontainer.
Tutorial ini mengharuskan Anda menjalankan Azure CLI versi 2.0.53 atau yang lebih baru. Jalankan az --version
untuk menemukan versinya. Jika Anda perlu menginstal atau memutakhirkan, lihat Menginstal Azure CLI.
Penskalaan pod secara manual
Ketika front-end Azure Vote dan instance Redis digunakan dalam tutorial sebelumnya, satu replika dibuat. Untuk melihat jumlah dan status Pod di klaster kamu, gunakan perintah kubectl get sebagai berikut:
kubectl get pods
Contoh output berikut menunjukkan satu pod front-end dan satu pod back-end:
NAME READY STATUS RESTARTS AGE
azure-vote-back-2549686872-4d2r5 1/1 Running 0 31m
azure-vote-front-848767080-tf34m 1/1 Running 0 31m
Untuk mengubah jumlah Pod secara manual pada penyebaran azure-vote-front, gunakan perintah kubectl scale. Contoh berikut menambah jumlah pod front-end menjadi 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Jalankan kubectl get pods lagi untuk memverifikasi bahwa AKS berhasil membuat pod tambahan. Setelah satu menit atau lebih, pod tersebut tersedia di kluster Anda:
kubectl get pods
READY STATUS RESTARTS AGE
azure-vote-back-2606967446-nmpcf 1/1 Running 0 15m
azure-vote-front-3309479140-2hfh0 1/1 Running 0 3m
azure-vote-front-3309479140-bzt05 1/1 Running 0 3m
azure-vote-front-3309479140-fvcvm 1/1 Running 0 3m
azure-vote-front-3309479140-hrbf2 1/1 Running 0 15m
azure-vote-front-3309479140-qphz8 1/1 Running 0 3m
Skala otomatis pod
Kubernetes mendukung penskalaan otomatis pod horizontal untuk menyesuaikan jumlah pod dalam penyebaran tergantung pada utilisasi CPU atau metrik select lainnya. Metrics Server digunakanuntuk memberikan pemanfaatan sumber daya kepada Kubernetes, dan secara otomatis digunakan di kluster AKS versi 1.10 dan yang lebih tinggi. Untuk melihat versi kluster AKS Anda, gunakan perintah az aks show, seperti yang diperlihatkan dalam contoh berikut:
az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
Catatan
Jika kluster AKS Anda kurang dari 1.10, Metrics Server tidak diinstal secara otomatis. Manifes instalasi Metrics Server tersedia sebagai aset components.yaml
pada rilis Metrics Server, yang berarti Anda dapat menginstalnya melalui url. Untuk mempelajari selengkapnya tentang definisi YAML ini, lihat bagian Penyebaran pada readme.
Contoh penginstalan:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
Untuk menggunakan penskala otomatis, semua kontainer dalam pod dan pod Anda harus memiliki permintaan dan batas CPU yang ditentukan. Dalam penyebaran azure-vote-front
, kontainer front-end sudah meminta CPU 0.25, dengan batas CPU 0.5.
Permintaan dan batasan sumber daya ini ditentukan untuk masing-masing kontainer seperti yang ditunjukkan pada contoh cuplikan berikut:
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
Contoh berikut menggunakan perintah kubectl autoscale untuk mengotomatiskan jumlah pod dalam peyebaran azure-vote-front. Jika utilisasi CPU rata-rata di seluruh Pod melebihi 50% dari penggunaan yang diminta, penskala otomatis akan meningkatkan pod hingga maksimal 10 instans. Minimal 3 instans kemudian didefinisikan untuk penyebaran:
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
Atau, Anda dapat membuat file manifes untuk menentukan perilaku penskala otomatis dan batas sumber daya. Berikut ini adalah contoh file manifes bernama azure-vote-hpa.yaml
.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-back-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-back
targetCPUUtilizationPercentage: 50 # target CPU utilization
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-front-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-front
targetCPUUtilizationPercentage: 50 # target CPU utilization
Gunakan kubectl apply
untuk menerapkan penskala otomatis yang ditentukan dalam file manifes azure-vote-hpa.yaml
.
kubectl apply -f azure-vote-hpa.yaml
Untuk melihat status autoscaler, gunakan kubectl get hpa
perintah sebagai berikut:
kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
azure-vote-front Deployment/azure-vote-front 0% / 50% 3 10 3 2m
Setelah beberapa menit, dengan beban minimal pada aplikasi Azure Vote, jumlah replika pod berkurang secara otomatis menjadi tiga. Anda dapat menggunakan kubectl get pods
lagi untuk melihat pod yang tidak perlu dihapus.
Catatan
Untuk contoh tambahan saat sedang menggunakan autoscaler pod horizontal, lihat Panduan HorizontalPodAutoscaler.
Menskalakan simpul AKS secara manual
Jika Anda membuat klaster Kubernetes menggunakan perintah di tutorial sebelumnya, ini akan memiliki dua simpul. Anda dapat menyesuaikan jumlah node secara manual jika Anda merencanakan lebih banyak atau lebih sedikit beban kerja kontainer pada kluster Anda.
Contoh berikut meningkatkan jumlah simpul menjadi tiga di kluster Kubernetes bernama myAKSCluster. Perintah ini membutuhkan waktu beberapa menit untuk menyelesaikannya.
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Ketika kluster berhasil diskalakan, outputnya mirip dengan contoh berikut:
"agentPoolProfiles": [
{
"count": 3,
"dnsPrefix": null,
"fqdn": null,
"name": "myAKSCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
Langkah berikutnya
Dalam tutorial ini, kamu menggunakan fitur penskalaan yang berbeda di kluster Kubernetes Anda. Anda mempelajari cara untuk:
- Menskalakan pod Kubernetes secara manual yang menjalankan aplikasi Anda
- Mengonfigurasi pod penskalaan otomatis yang menjalankan ujung depan aplikasi
- Menskalakan simpul Kubernetes secara manual
Lanjutkan ke tutorial berikutnya untuk mempelajari cara memperbarui aplikasi di Kubernetes.