Ejercicio: Habilitación de la escalabilidad de clústeres en AKS
Habilitación del escalador automático de clúster en un clúster de AKS
Abra Azure Cloud Shell en el explorador y seleccione Bash.
Cree un grupo de recursos de Azure con el comando
az group create
.az group create --name myResourceGroup --location eastus
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.
Conéctese a su clúster usando el comando
az aks get-credentials
.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
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
En Cloud Shell, cree un archivo de manifiesto para la implementación de Kubernetes denominado deployment.yml mediante el comando
touch
.touch deployment.yml
Abra el archivo de manifiesto mediante el comando
code
.code deployment.yml
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
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.
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
Reduzca verticalmente la implementación mediante el comando
kubectl scale deployment
.kubectl scale deployment contoso-website --replicas 5
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
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
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