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 memasang atau meningkatkan, lihat Memasang CLI Azure.

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.

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.