Öğretici: Azure Kubernetes Hizmeti’nde (AKS) uygulamaları ölçeklendirme

Öğreticileri izlediysanız AKS'de çalışan bir Kubernetes kümesine sahipsiniz ve örnek Azure Voting uygulamasını dağıttınız. Yedi öğreticinin beşinci parçası olan bu öğreticide, uygulamada pod’ları ölçeklendirirsiniz ve otomatik pod ölçeklendirmeyi denersiniz. Ayrıca, barındırılan iş yükleri için kümenin kapasitesini değiştirmek üzere Azure VM düğümlerinin sayısını ölçeklendirmeyi de öğrenirsiniz. Aşağıdakileri nasıl yapacağınızı öğrenirsiniz:

  • Kubernetes düğümlerini ölçeklendirme
  • Uygulamanızı çalıştıran Kubernetes podlarını el ile ölçeklendirme
  • Uygulama ön ucunu çalıştıran otomatik ölçeklendirme podlarını yapılandırma

Sonraki öğreticilerde, Azure Vote uygulaması yeni bir sürüme güncelleştirilir.

Başlamadan önce

Önceki öğreticilerde, bir uygulama bir kapsayıcı görüntüsüne paketlendi. Bu görüntü Azure Container Registry yüklendi ve bir AKS kümesi oluşturdun. Uygulama daha sonra AKS kümesine dağıtıldı. Bu adımları henüz uygulamadıysanız ve takip etmek için Öğretici 1 – Kapsayıcı görüntüleri oluşturma ile başlayabilirsiniz.

Bu öğretici için Azure CLI 2.0.53 veya sonraki bir sürümünü çalıştırmanız gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Pod’ları el ile ölçeklendirme

Önceki öğreticilerde Azure Vote ön ucu ve Redis örneği dağıtıldığında tek bir çoğaltma oluşturulmuştu. Kümenizdeki podların sayısını ve durumunu görmek için kubectl get komutunu aşağıdaki şekilde kullanın:

kubectl get pods

Aşağıdaki örnek çıktıda bir ön uç podu ve bir arka uç podu gösterilmektedir:

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

azure-vote-front dağıtımındaki pod sayısını el ile değiştirmek için kubectl scale komutunu kullanın. Aşağıdaki örnekte ön uç podlarının sayısı 5'e çıkarılmaktadır:

kubectl scale --replicas=5 deployment/azure-vote-front

AKS'nin ek podları başarıyla oluşturduğunı doğrulamak için kubectl get pods'u yeniden çalıştırın. Bir dakika kadar sonra podlar kümeniz içinde kullanılabilir:

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

Pod’ları otomatik ölçeklendirme

Kubernetes, bir dağıtımdaki pod’ların sayısını CPU kullanımı ve diğer seçili ölçümleri temel alarak ayarlamak için yatay pod otomatik ölçeklendirmeyi destekler. Ölçüm Sunucusu, Kubernetes'e kaynak kullanımı sağlamak için kullanılır ve AKS kümesi 1.10 ve üzeri sürümlerde otomatik olarak dağıtılır. AKS kümenizin sürümünü görmek için aşağıdaki örnekte gösterildiği gibi az aks show komutunu kullanın:

az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table

Not

AKS kümeniz 1.10'dan küçükse Ölçüm Sunucusu otomatik olarak yüklenmez. Ölçüm Sunucusu yükleme bildirimleri, Ölçüm Sunucusu yayınlarına varlık olarak ek olarak mevcuttur. Başka bir ifadeyle bunları components.yaml BIR URL aracılığıyla yükleyebilirsiniz. Bu YAML tanımları hakkında daha fazla bilgi edinmek için beni okuma bölümünün Dağıtım bölümüne bakın.

Örnek yükleme:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

Otomatik vericiyi kullanmak için podlar ve podlarınız için tüm kapsayıcıların CPU istekleri ve sınırları tanımlanmış olması gerekir. Dağıtımda azure-vote-front ön uç kapsayıcısı zaten 0,5 CPU sınırıyla 0,25 CPU isteğinde bulunuyor.

Bu kaynak istekleri ve sınırları, aşağıdaki örnek kod parçacığında gösterildiği gibi her kapsayıcı için tanımlanır:

  containers:
  - name: azure-vote-front
    image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: 250m
      limits:
        cpu: 500m

Aşağıdaki örnek, azure-vote-front dağıtımındaki podların sayısını otomatik olarak ölçeklendirmek için kubectl autoscale komutunu kullanır. Tüm podlar genelinde ortalama CPU kullanımı, istenen kullanımlarının %50'sini aşarsa otomatik artıran pod sayısı en fazla 10 örnek olur. Daha sonra dağıtım için en az 3 örnek tanımlanır:

kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10

Alternatif olarak, otomatik olarak doğrulayan davranışı ve kaynak sınırlarını tanımlamak için bir bildirim dosyası oluşturabilirsiniz. Aşağıda adlı bir bildirim dosyası örneği ve ardından ve ve azure-vote-hpa.yaml 2.

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

Bildirim kubectl apply dosyasında tanımlanan otomatik bir şekilde yalıtarak uygulamak için azure-vote-hpa.yaml kullanın.

kubectl apply -f azure-vote-hpa.yaml

Otomatik ölçeklendirme durumunu görmek için kubectl get hpa komutunu şu şekilde kullanın:

kubectl get hpa

NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m

Birkaç dakika sonra Azure Vote uygulamasında en az yük ile, pod çoğaltmalarının sayısı otomatik olarak üçe iner. kubectl get pods komutunu tekrar kullanarak gereksiz podların kaldırıldığını görebilirsiniz.

AKS düğümlerini el ile ölçeklendirme

Önceki öğreticide yer alan komutları kullanarak Kubernetes kümenizi oluşturduysanız iki düğümü vardır. Kümenizde daha fazla veya daha az kapsayıcı iş yükü planlıyorsanız, düğüm sayısını el ile ayarlayabilirsiniz.

Aşağıdaki örnek, myAKSCluster adlı Kubernetes kümesinde düğümlerin sayısını üçe yükseltir. Komutun tamamlanması birkaç dakika sürer.

az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3

Küme başarıyla ölçeklendirildi, çıktı aşağıdaki örnektekine benzer:

"agentPoolProfiles": [
  {
    "count": 3,
    "dnsPrefix": null,
    "fqdn": null,
    "name": "myAKSCluster",
    "osDiskSizeGb": null,
    "osType": "Linux",
    "ports": null,
    "storageProfile": "ManagedDisks",
    "vmSize": "Standard_D2_v2",
    "vnetSubnetId": null
  }

Sonraki adımlar

Bu öğreticide, Kubernetes kümenizde farklı ölçeklendirme özellikleri kullandınız. Şunları öğrendiniz:

  • Uygulamanızı çalıştıran Kubernetes podlarını el ile ölçeklendirme
  • Uygulama ön ucunu çalıştıran otomatik ölçeklendirme podlarını yapılandırma
  • Kubernetes düğümlerini el ile ölçeklendirme

Kubernetes’te uygulama güncelleştirmeyi öğrenmek için sonraki öğreticiye ilerleyin.