Escalonamento automático vertical de pods

Nesta página, você encontra uma visão geral do escalonamento automático vertical de pods e uma explicação sobre como usá-lo para ajustar solicitações de CPU e de memória em contêineres. Nesta página, também forneceremos material de referência para o recurso personalizado VerticalPodAutoscaler e os tipos relacionados.

Visão geral

O escalonamento automático vertical de pods (VPA, na sigla em inglês) evita que você tenha que pensar em quais valores especificar para solicitações de memória e solicitações de CPU de um contêiner. O autoescalador pode recomendar valores de solicitações de CPU e memória ou atualizá-los automaticamente.

O escalonamento automático vertical de pods fornece estes benefícios:

  • Os nós de cluster são usados de forma eficiente, porque os pods usam exatamente o que precisam.

  • Os pods são programados em nós que têm os recursos apropriados disponíveis.

  • Você não precisa executar tarefas de benchmark demoradas para determinar os valores corretos de solicitações de CPU e memória.

  • O tempo de manutenção é reduzido, porque o autoescalador pode ajustar as solicitações de CPU e memória ao longo do tempo sem qualquer ação de sua parte.

Limitações da versão Beta:

Escalonamento automático vertical de pods no modo automático

Devido às limitações do Kubernetes, a única maneira de modificar as solicitações de recursos de um pod em execução é recriá-lo. Portanto, se você criar um VerticalPodAutoscaler com um updateMode de "Auto", o VerticalPodAutoscaler removerá um pod se precisar alterar as solicitações de recursos do pod.

Para limitar a quantidade de reinicializações do pod, use um orçamento de interrupção do pod (em inglês).

Para garantir que o cluster possa lidar com os novos tamanhos das cargas de trabalho, use o Autoescalador de cluster e o Provisionamento automático de nó. O autoescalador vertical de pods notifica o autoescalador de cluster antes da atualização e os recursos necessários para redimensionar a carga de trabalho são fornecidos antes da recriação, para minimizar a interrupção.

A seguir

Referência

VerticalPodAutoscaler v1beta2 autoscaling.k8s.io

Campos

TypeMeta

Grupo, versão e tipo de API.

metadata

ObjectMeta

Metadados de objeto padrão (em inglês).

spec

VerticalPodAutoscalerSpec

O comportamento desejado do VerticalPodAutoscaler.

status

VerticalPodAutosclerStatus

O status mais recentemente observado do VerticalPodAutoscaler.

VerticalPodAutoscalerSpec v1beta2 autoscaling.k8s.io

Campos
targetRef

CrossVersionObjectReference

Referência do controlador que gerencia o conjunto de pods para administração do autoescalador. Por exemplo, uma implantação ou um StatefulSet. É possível apontar um VerticalPodAutoscaler para qualquer controlador que tenha um sub-recurso [Scale](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#scalespec-v1-autoscaling) {: .external}. Normalmente, o VerticalPodAutoscaler recupera o conjunto de pods do ScaleStatus do controlador. Em alguns controladores conhecidos como o DaemonSet, o VerticalPodAutoscaler recupera o conjunto de pods da especificação do controlador.

updatePolicy

PodUpdatePolicy

Especifica se as atualizações recomendadas são aplicadas quando um pod é iniciado e durante a vida útil dele.

resourcePolicy

PodResourcePolicy

Especifica as políticas de como as solicitações de CPU e memória são ajustadas em contêineres individuais.

VerticalPodAutoscalerList v1beta2 autoscaling.k8s.io

Campos

TypeMeta

Grupo, versão e tipo de API.

metadata

ObjectMeta

Metadados de objeto padrão (em inglês).

items

VerticalPodAutoscaler array

Uma lista de objetos VerticalPodAutoscaler.

PodUpdatePolicy v1beta2 autoscaling.k8s.io

Campos
updateMode

string

Especifica se as atualizações recomendadas são aplicadas quando um pod é iniciado e durante a vida útil dele. Os valores possíveis são "Off", "Initial", "Recreate" e "Auto".

PodResourcePolicy v1beta2 autoscaling.k8s.io

Campos
containerPolicies

ContainerResourcePolicy array

Uma matriz de políticas de recursos para contêineres individuais.

ContainerResourcePolicy v1beta2 autoscaling.k8s.io

Campos
containerName

string

O nome do contêiner ao qual a política se aplica. Se não especificado, a política serve como política padrão.

mode

ContainerScalingMode

Especifica se as atualizações recomendadas são aplicadas quando um contêiner é iniciado e durante a vida útil dele. Os valores possíveis são "Off" e "Auto".

minAllowed

ResourceList

Especifica o pedido mínimo de CPU e a solicitação de memória permitida para o contêiner.

maxAllowed

ResourceList

Especifica a solicitação máxima de CPU e a solicitação de memória permitida para o contêiner.

VerticalPodAutoscalerStatus v1beta2 autoscaling.k8s.io

Campos
recommendation

RecommendedPodResources

As solicitações de CPU e memória recomendadas mais recentemente.

conditions

VerticalPodAutoscalerCondition array

Descreve o estado atual do VerticalPodAutoscaler.

RecommendedPodResources v1beta2 autoscaling.k8s.io

Campos
containerRecommendation

RecommendedContainerResources array

Uma matriz de recomendações de recursos para contêineres individuais.

RecommendedContainerResources v1beta2 autoscaling.k8s.io

Campos
containerName

string

O nome do contêiner ao qual a recomendação se aplica.

target

ResourceList

A solicitação de CPU e a solicitação de memória recomendadas para o contêiner.

lowerBound

ResourceList

A solicitação mínima de CPU e solicitação de memória para o contêiner. Não é garantido que esse valor seja suficiente para que o aplicativo seja estável. A execução com solicitações de CPU e memória menores provavelmente terá um impacto significativo no desempenho ou na disponibilidade.

upperBound

ResourceList

A solicitação de CPU e a solicitação de memória máximas recomendadas para o contêiner. Solicitações de CPU e memória mais altas do que esses valores provavelmente serão desperdiçadas.

uncappedTarget

ResourceList

A recomendação de recurso mais recente calculada pelo autoescalador, com base apenas no uso real de recursos, não considerando o ContainerResourcePolicy. Poderá diferir da recomendação limitada se o uso real do recurso fizer com que o destino viole o ContainerResourcePolicy. Esse campo é usado apenas como indicação de status. Isso não afetará a atribuição real de recursos.

VerticalPodAutoscalerCondition v1beta2 autoscaling.k8s.io

Campos
type

VerticalPodAutoscalerConditionType

O tipo de condição que está sendo descrita. Os valores possíveis são "RecommendationProvided", "LowConfidence", "NoPodsMatched" e "FetchingHistory".

status

ConditionStatus

O status da condição. Os valores possíveis são "True", "False" e "Unknown".

lastTransitionTime

Time

A última vez que a condição fez uma transição de um status para outro.

reason

string

O motivo da última transição de um status para outro.

message

string

Uma string legível com detalhes sobre a última transição de um status para outro.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine