Ejercicio: Habilitación de la escalabilidad de clústeres en AKS

Completado

Habilitación del escalador automático de clúster en un clúster de AKS

  1. Abra Azure Cloud Shell en el explorador y seleccione Bash.

  2. Cree un grupo de recursos de Azure con el comando az group create.

    az group create --name myResourceGroup --location eastus
    
  3. Cree un clúster de Azure Kubernetes Service (AKS) con el escalador automático de clúster habilitado mediante el comando az aks create y la marca --enable-cluster-autoscaler.

    az aks create --resource-group myResourceGroup --name myAKSCluster --enable-addons monitoring --enable-msi-auth-for-monitoring --enable-cluster-autoscaler --min-count 1 --max-count 10 --generate-ssh-keys
    

    La operación de creación del clúster tarda unos minutos.

  4. Conéctese a su clúster usando el comando az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  5. Vea los nodos del clúster mediante el comando kubectl get nodes.

    kubectl get nodes
    

    El resultado debería ser similar al ejemplo siguiente:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   1m    v1.26.6
    aks-nodepool1-12345678-vmss000001   Ready    agent   1m    v1.26.6
    aks-nodepool1-12345678-vmss000002   Ready    agent   1m    v1.26.6
    

Implementación de la aplicación de ejemplo

  1. En Cloud Shell, cree un archivo de manifiesto para la implementación de Kubernetes denominado deployment.yml mediante el comando touch.

    touch deployment.yml
    
  2. Abra el archivo de manifiesto mediante el comando code.

    code deployment.yml
    
  3. Pegue el código siguiente en el archivo de manifiesto.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-website
    spec:
      replicas: 35
      selector:
        matchLabels:
          app: contoso-website
      template:
        metadata:
          labels:
            app: contoso-website
        spec:
          containers:
            - image: mcr.microsoft.com/mslearn/samples/contoso-website
              name: contoso-website
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 250m
                  memory: 256Mi
              ports:
                - containerPort: 80
                  name: http
    
  4. Guarde el archivo y cierre el editor.

Actualización del perfil del escalador automático de clúster

Puede ajustar los perfiles del escalador automático estableciendo una serie de marcas en la configuración. Vea la lista de marcas disponibles en Uso del perfil del escalador automático de clúster. En este ejemplo se actualiza el escalador automático para reducir el tiempo de sondeo para comprobar si hay pods pendientes y reducir la cantidad de tiempo que debe esperar antes de reducir verticalmente desde un estado anterior.

  1. Actualice el perfil del escalador automático de clúster mediante el comando az aks update con la marca --cluster-autoscaler-profile.

    az aks update --resource-group myResourceGroup --name myAKSCluster --cluster-autoscaler-profile scan-interval=5s scale-down-unready-time=5m scale-down-delay-after-add=5m
    
  2. Reduzca verticalmente la implementación mediante el comando kubectl scale deployment.

    kubectl scale deployment contoso-website --replicas 5
    
  3. Compruebe los registros del escalador automático de clúster y consulte la asignación de configuración cluster-autoscaler-status mediante el comando kubectl describe cm.

    kubectl describe cm cluster-autoscaler-status -n kube-system
    

    Antes de la reducción vertical, la salida debe ser similar a la siguiente salida de ejemplo:

    Cluster-autoscaler status at 2023-11-09 20:08:14.892961701 +0000 UTC:
    Cluster-wide:
      Health:      Healthy (ready=3 unready=0 notStarted=0 longNotStarted=0 registered=3 longUnregistered=0)
                   LastProbeTime:      2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892
                   LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731
      ScaleUp:     NoActivity (ready=3 registered=3)
                   LastProbeTime:      2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892
                   LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731
      ScaleDown:   CandidatesPresent (candidates=3)
                   LastProbeTime:      2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892
                   LastTransitionTime: 2023-11-09 19:56:52.440038763 +0000 UTC m=+1101.015036157
    
  4. Espere unos cinco minutos a que el escalador automático complete la reducción vertical y, a continuación, vuelva a ejecutar el comando kubectl describe cm anterior.

    Después de la reducción vertical, la salida debe tener un aspecto similar al del ejemplo siguiente:

    Cluster-autoscaler status at 2023-11-09 20:14:39.123206413 +0000 UTC:
    Cluster-wide:
      Health:      Healthy (ready=1 unready=0 (resourceUnready=0) notStarted=0 longNotStarted=0 registered=1 longUnregistered=0)
                   LastProbeTime:      2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601
                   LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731
      ScaleUp:     NoActivity (ready=1 registered=1)
                   LastProbeTime:      2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601
                   LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731
      ScaleDown:   NoCandidates (candidates=0)
                   LastProbeTime:      2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601
                   LastTransitionTime: 2023-11-09 20:07:08.79828656 +0000 UTC m=+1718.924760896
    
  5. Vea los nodos del clúster mediante el comando kubectl get nodes.

    kubectl get nodes
    

    La salida debe ser similar a la salida del ejemplo siguiente, con el número de nodos reducidos a uno:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   37m    v1.26.6