A escala automática de pods multidimensional liberta-o da escolha de uma única forma de dimensionar os seus clusters. Com a escala automática de pods multidimensional, pode usar a escala horizontal com base na CPU e a escala vertical com base na memória em simultâneo.
Um objeto MultidimPodAutoscaler
modifica os pedidos de memória e adiciona réplicas para que a utilização média da CPU de cada réplica corresponda à sua utilização alvo.
Pré-requisitos
- Versão 1.19.4-gke.1700 ou posterior do cluster do GKE.
- Para clusters Standard, ative a escala automática vertical de pods no seu cluster. A escala automática vertical de pods já está ativada nos clusters do Autopilot.
Usar a escala automática de pods multidimensional
Este exemplo mostra como criar uma implementação e um objeto MultidimPodAutoscaler
para ajustar automaticamente a escala da implementação.
Criar uma implementação
Antes de poder criar um MultidimPodAutoscaler
, tem de criar a carga de trabalho que monitoriza. O ficheiro php-apache.yaml
especifica um valor para os pedidos de CPU:
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 80
resources:
# Since MPA does not specify CPU requests, you must specify a request in
# the Deployment
limits:
cpu: 500m
requests:
cpu: 200m
Para criar a implementação, aplique o manifesto php-apache.yaml
:
kubectl apply -f php-apache.yaml
Criar um MultidimPodAutoscaler
Depois de criar a implementação, pode criar um MultidimPodAutoscaler
objeto. O seguinte manifesto MultidimPodAutoscaler
ajusta automaticamente
o número de réplicas e pedidos de memória com base nos valores especificados.
Para mais informações sobre os campos neste exemplo, consulte a secção Referência da API.
apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
name: php-apache-autoscaler
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
goals:
metrics:
- type: Resource
resource:
# Define the target CPU utilization request here
name: cpu
target:
type: Utilization
averageUtilization: 60
constraints:
global:
minReplicas: 1
maxReplicas: 5
containerControlledResources: [ memory ]
container:
- name: '*'
# Define boundaries for the memory request here
requests:
minAllowed:
memory: 1Gi
maxAllowed:
memory: 2Gi
policy:
updateMode: Auto
Para criar o MultidimPodAutoscaler
, aplique o manifesto php-apache-autoscaler.yaml
:
kubectl apply -f php-apache-autoscaler.yaml
Visualizar um MultidimPodAutoscaler
Veja todos os objetos MultidimPodAutoscaler
com o comando kubectl get
:
kubectl get mpa
Eliminar um MultidimPodAutoscaler
Elimine um objeto MultidimPodAutoscaler
com o comando kubectl delete
:
kubectl delete -f php-apache-autoscaler.yaml
Referência da API
As secções seguintes fornecem informações sobre os campos possíveis que pode adicionar ao seu objeto MultidimPodAutoscaler
.
Todos os campos são para apiVersion
v1beta1 autoscaling.gke.io
.
MultidimPodAutoscaler
MultidimPodAutoscaler
é a configuração de um redimensionador automático de pods multidimensional, que gere automaticamente os recursos de pods e a respetiva contagem com base na utilização de recursos histórica e em tempo real.
Campo | Tipo | Descrição |
---|---|---|
metadata |
ObjectMeta |
Metadados de objetos padrão. |
spec |
MultidimPodAutoscalerSpec |
O comportamento pretendido do redimensionador automático de pods multidimensional. |
status |
MultidimPodAutoscalerStatus |
O estado observado mais recentemente do escalador automático de pods multidimensional. |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec
é a especificação que define o comportamento do redimensionador automático.
Campo | Tipo | Descrição |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
Uma referência que aponta para um recurso de destino a dimensionar (com o subrecurso Scale). |
Goals |
*MultidimGoals |
Objetivos que o escalador automático de pods multidimensional tenta alcançar e manter. |
Constraints |
*MultidimConstraints |
Descreve as restrições para o dimensionamento automático. As restrições superam os objetivos. Se as restrições bloquearem algum objetivo, este não é alcançado. Por exemplo, atingir o número máximo de réplicas impede o aumento da escala, mesmo que as réplicas possam precisar de ser aumentadas. |
Policy |
*MultidimPolicy |
A política permite-lhe especificar como as recomendações são aplicadas. |
MultidimGoals
MultidimGoals
são objetivos que o escalador automático de pods multidimensional tenta alcançar.
Campo | Tipo | Descrição |
---|---|---|
Metrics |
[]MetricSpec |
Contém a lista de métricas juntamente com o valor pretendido. O escalador automático de agrupamentos multidimensional tenta manter-se próximo dos valores desejados. |
MultidimConstraints
MultidimConstraints
descrever as restrições da escalabilidade automática. As restrições têm
precedência sobre os objetivos.
Campo | Tipo | Descrição |
---|---|---|
Global |
*GlobalConstraints |
Restrições que se aplicam à aplicação com escalamento automático como um todo. |
Pod |
*PodConstraints |
Restrições que se aplicam a um único Pods da aplicação segmentada. |
ContainerControlledResources |
[]ResourceName |
Recursos de contentores que devem ser controlados pelo escalador automático. memory é o único valor suportado. |
Container |
[]ContainerConstraints |
Restrições que se aplicam aos contentores dos pods. |
ResourceConstraints
ResourceConstraints
definir a quantidade mínima e máxima de recursos que pode atribuir a um contentor, um pod ou uma aplicação.
Campo | Tipo | Descrição |
---|---|---|
MinAllowed |
ResourceList |
Quantidade mínima de recursos que pode atribuir. Se não for indicado, é usado 0. |
MaxAllowed |
ResourceList |
Quantidade máxima de recursos que pode atribuir. Se não for indicado, não existem limites para a quantidade máxima de recursos. |
GlobalConstraints
GlobalConstraints
definem as restrições que se aplicam à aplicação no seu conjunto. Estas restrições incluem o número de réplicas ou a quantidade total de recursos.
Campo | Tipo | Descrição |
---|---|---|
MinReplicas |
*Int32 |
Quantidade mínima de réplicas que a aplicação pode ter. Se não for indicado, é usado 1. |
MaxReplicas |
*Int32 |
Quantidade máxima de réplicas que a aplicação pode ter. Se não for indicado, não existem limites para a quantidade máxima de réplicas. |
Requests |
*ResourceConstraints |
Quantidade mínima e máxima de recursos que uma aplicação pode pedir, somada em todos os agrupamentos. |
PodConstraints
PodConstraints
define a quantidade mínima e máxima de recursos que um único agrupamento pode pedir, somada em todos os contentores pertencentes ao agrupamento.
Campo | Tipo | Descrição |
---|---|---|
Requests |
*ResourceConstraints |
Quantidade mínima e máxima de recursos que um único Pod pode pedir, somada em todos os contentores pertencentes ao Pod. |
ContainerConstraints
ContainerConstraints
são restrições que se aplicam aos contentores dos pods.
Campos | Tipo | Descrição |
---|---|---|
Name |
String |
Nome do contentor para o qual as restrições são especificadas. Também pode usar * para especificar restrições para todos os contentores num agrupamento. |
Requests |
*ResourceConstraints |
A quantidade mínima e máxima de recursos que o contentor especificado pode pedir. |
UpdateMode
Use UpdateMode
para controlar a forma como as recomendações calculadas são aplicadas.
Campos | Tipo | Descrição |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
As atualizações automáticas significam que todas as recomendações do escalador automático podem ser aplicadas em qualquer altura. |
AutoUpdates |
UpdateMode = "Off" |
As atualizações automáticas significam que as recomendações do escalador automático não são aplicadas. |
MultidimPolicy
Campos | Tipo | Descrição |
---|---|---|
Update |
UpdateMode |
Define como as recomendações devem ser aplicadas. Um valor vazio falha a validação. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
descreve o estado de tempo de execução do escalador automático.
Campos | Tipo | Descrição |
---|---|---|
ObservedGeneration |
*Int64 |
A geração mais recente observada por este dimensionador automático. |
RecommendedPodResources |
*RecommendedPodResources |
A quantidade de recursos calculada mais recentemente recomendada pelo escalador automático para os pods controlados. |
CurrentReplicas |
Int32 |
CurrentReplicas é o número atual de réplicas de pods geridas por este escalador automático, conforme visto pela última vez pelo escalador automático. |
DesiredReplicas |
Int32 |
DesiredReplicas é o número desejado de réplicas de pods geridas por este escalador automático, conforme calculado mais recentemente pelo escalador automático. |
CurrentMetrics |
[]autoscaling.MetricStatus |
O último estado de leitura das métricas usadas por este escalador automático. |
Conditions |
[]metav1.Condition |
Conditions é o conjunto de condições necessárias para que este redimensionador automático dimensione o respetivo alvo e indica se essas condições são cumpridas ou não. |
O que se segue?
- Saiba mais sobre a configuração do dimensionamento automático de pods horizontal.
- Saiba mais sobre a configuração do dimensionamento automático de pods vertical.