Exercício - Habilite a escalabilidade do cluster no AKS
Habilitar o autoscaler de cluster em um cluster AKS
Abra o Azure Cloud Shell em seu navegador e selecione Bash.
Crie um grupo de recursos do Azure usando o
az group create
comando.az group create --name myResourceGroup --location eastus
Crie um novo cluster do Serviço Kubernetes do Azure (AKS) com o autoscaler de cluster habilitado usando o comando e o
az aks create
--enable-cluster-autoscaler
sinalizador.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
A criação do cluster demora alguns minutos.
Conecte-se ao cluster usando o
az aks get-credentials
comando.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Exiba os nós em seu cluster usando o
kubectl get nodes
comando.kubectl get nodes
Sua saída deve ser semelhante à saída de exemplo a seguir:
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
Implementar o exemplo de aplicação
No Cloud Shell, crie um arquivo de manifesto para a implantação do Kubernetes chamado deployment.yml usando o
touch
comando.touch deployment.yml
Abra o arquivo de manifesto usando o
code
comando.code deployment.yml
Cole o código a seguir no arquivo de manifesto.
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 o ficheiro e feche o editor.
Atualizar o perfil do autoscaler do cluster
Você pode ajustar os perfis do autoscaler definindo uma série de sinalizadores na configuração. Exiba a lista de sinalizadores disponíveis em Usar o perfil do autoscaler do cluster. Neste exemplo, você atualiza o autoscaler para reduzir o tempo de sondagem para verificar se há pods pendentes e reduzir a quantidade de tempo que ele precisa esperar antes de reduzir a partir de um estado anterior.
Atualize o perfil do autoscaler do cluster usando o
az aks update
comando com o--cluster-autoscaler-profile
sinalizador.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
Reduza a implantação usando o
kubectl scale deployment
comando.kubectl scale deployment contoso-website --replicas 5
Verifique os logs do autoscaler do cluster e consulte o mapa de configuração cluster-autoscaler-status usando o
kubectl describe cm
comando.kubectl describe cm cluster-autoscaler-status -n kube-system
Antes da redução da escala, sua saída deve ser semelhante à saída de exemplo a seguir:
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
Aguarde cerca de cinco minutos para que o autoscaler conclua a redução da escala e, em seguida, execute novamente o
kubectl describe cm
anterior .Após a redução da escala, sua saída deve ser semelhante à saída de exemplo a seguir:
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
Exiba os nós em seu cluster usando o
kubectl get nodes
comando.kubectl get nodes
Sua saída deve ser semelhante à saída de exemplo a seguir, com o número de nós reduzido a um:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 37m v1.26.6