Dimensionamento automático de pod vertical no Serviço Kubernetes do Azure (AKS)
Este artigo fornece uma visão geral do uso do Vertical Pod Autoscaler (VPA) no Serviço Kubernetes do Azure (AKS), que se baseia na versão de código aberto do Kubernetes .
Quando configurado, o VPA define automaticamente as solicitações de recursos e os limites de contêineres por carga de trabalho com base no uso anterior. O VPA libera CPU e memória para outros pods e ajuda a garantir a utilização eficaz de seus clusters AKS. O Vertical Pod Autoscaler fornece recomendações para o uso de recursos ao longo do tempo. Para gerenciar aumentos repentinos no uso de recursos, use o Horizontal Pod Autoscaler, que dimensiona o número de réplicas de pods conforme necessário.
Benefícios
O Vertical Pod Autoscaler oferece os seguintes benefícios:
- Analisa e ajusta os recursos de processador e memória para o tamanho correto de seus aplicativos. O VPA não é apenas responsável pela expansão, mas também pela redução com base no uso de recursos ao longo do tempo.
- Um pod com um modo de dimensionamento definido como automático ou recriar é removido se precisar alterar suas solicitações de recursos.
- Você pode definir restrições de CPU e memória para contêineres individuais especificando uma política de recursos.
- Garante que os nós tenham recursos corretos para o agendamento de pods.
- Oferece registro configurável de quaisquer ajustes feitos no processador ou nos recursos de memória feitos.
- Melhora a utilização de recursos de cluster e libera CPU e memória para outros pods.
Limitações e considerações
Considere as seguintes limitações e considerações ao usar o Vertical Pod Autoscaler:
- O VPA suporta um máximo de 1.000 pods associados a
VerticalPodAutoscaler
objetos por cluster. - O VPA pode recomendar mais recursos do que os disponíveis no cluster, o que impede que o pod seja atribuído a um nó e executado devido a recursos insuficientes. Você pode superar essa limitação definindo o LimitRange para o máximo de recursos disponíveis por namespace, o que garante que os pods não solicitem mais recursos do que o especificado. Você também pode definir recomendações de recursos máximos permitidos por pod em um
VerticalPodAutoscaler
objeto. O VPA não pode superar completamente um problema de recurso de nó insuficiente. O intervalo de limite é fixo, mas o uso do recurso do nó é alterado dinamicamente. - Não recomendamos o uso do VPA com o Horizontal Pod Autoscaler (HPA), que é dimensionado com base nas mesmas métricas de uso de CPU e memória.
- O VPA Recommender armazena apenas até oito dias de dados históricos.
- O VPA não suporta cargas de trabalho baseadas em JVM devido à visibilidade limitada do uso real da memória da carga de trabalho.
- O VPA não suporta a execução da sua própria implementação de VPA ao lado dele. Ter um recomendado extra ou personalizado é suportado.
- Os contêineres do Windows AKS não são suportados.
Visão geral do VPA
O objeto VPA consiste em três componentes:
- Recomendador: O Recomendado monitora o consumo de recursos atual e passado, incluindo histórico de métricas, eventos OOM (Falta de Memória) e especificações de implantação de VPA, e usa as informações coletadas para fornecer valores recomendados para solicitações/limites de CPU e memória do contêiner.
- Atualizador: o Updater monitora pods gerenciados para garantir que suas solicitações de recursos estejam definidas corretamente. Se não, ele remove esses pods para que seus controladores possam recriá-los com as solicitações atualizadas.
- Controlador de Admissão de VPA: O Controlador de Admissão de VPA define as solicitações de recursos corretas em novos pods criados ou recriados por seu controlador com base na atividade do Atualizador.
Controlador de admissão de VPA
O VPA Admission Controller é um binário que se registra como um Webhook de Admissão Mutante. Quando um novo pod é criado, o VPA Admission Controller recebe uma solicitação do servidor de API e avalia se há uma configuração de VPA correspondente ou encontra uma correspondente e usa a recomendação atual para definir solicitações de recursos no pod.
Um trabalho independente, overlay-vpa-cert-webhook-check
, é executado fora do VPA Admission Controller. O overlay-vpa-cert-webhook-check
trabalho cria e renova os certificados e registra o VPA Admission Controller como um MutatingWebhookConfiguration
.
Modos de operação do objeto VPA
Um recurso Vertical Pod Autoscaler, mais comumente uma implantação, é inserido para cada controlador que você deseja que os requisitos de recursos computados automaticamente.
Existem quatro modos de funcionamento do APV:
Auto
: VPA atribui solicitações de recursos durante a criação de pods e atualiza pods existentes usando o mecanismo de atualização preferido.Auto
, que é equivalente aRecreate
, é o modo padrão. Uma vez que as atualizações livres de reinicialização, ou in-loco, de solicitações de pod estejam disponíveis, ele pode ser usado como o mecanismo de atualização preferido peloAuto
modo. Com o modo, oAuto
VPA expulsa um pod se ele precisar alterar suas solicitações de recursos. Isso pode fazer com que os pods sejam reiniciados de uma só vez, o que pode causar inconsistências no aplicativo. Você pode limitar as reinicializações e manter a consistência nessa situação usando um PodDisruptionBudget.Recreate
: VPA atribui solicitações de recursos durante a criação de pods e atualiza pods existentes, expulsando-os quando os recursos solicitados diferem significativamente das novas recomendações (respeitando o PodDisruptionBudget, se definido). Você só deve usar esse modo se precisar garantir que os pods sejam reiniciados sempre que a solicitação de recurso for alterada. Caso contrário, recomendamos o usoAuto
do modo, que aproveita as atualizações sem reinicialização quando disponíveis.Initial
: VPA só atribui solicitações de recursos durante a criação do pod. Ele não atualiza pods existentes. Este modo é útil para testar e entender o comportamento do VPA sem afetar os pods em execução.Off
: VPA não altera automaticamente os requisitos de recursos dos pods. As recomendações são calculadas e podem ser inspecionadas no objeto VPA.
Padrão de implantação para desenvolvimento de aplicativos
Se você não estiver familiarizado com o VPA, recomendamos o seguinte padrão de implantação durante o desenvolvimento do aplicativo para identificar suas características exclusivas de utilização de recursos, testar o VPA para verificar se está funcionando corretamente e testar junto com outros componentes do Kubernetes para otimizar a utilização de recursos do cluster:
- Defina
UpdateMode = "Off"
seu cluster de produção e execute o VPA no modo de recomendação para que você possa testar e se familiarizar com o VPA.UpdateMode = "Off"
pode evitar a introdução de uma configuração incorreta que pode causar uma interrupção. - Estabeleça a observabilidade primeiro coletando telemetria de utilização de recursos reais durante um determinado período de tempo, o que ajuda a entender o comportamento e quaisquer sinais de problemas de recursos de contêiner e pod influenciados pelas cargas de trabalho em execução neles.
- Familiarize-se com os dados de monitoramento para entender as características de desempenho. Com base nessa perceção, defina as solicitações/limites desejados de acordo e, em seguida, na próxima implantação ou atualização.
- Defina
updateMode
o valor comoAuto
,Recreate
ouInitial
dependendo dos seus requisitos.
Próximos passos
Para saber como configurar o Vertical Pod Autoscaler no seu cluster AKS, consulte Usar o Vertical Pod Autoscaler no AKS.
Azure Kubernetes Service