Cluster Autoscaler
Ao ativar o complemento Cluster Autoscaler, você pode passar os pares de chave/valor a seguir como argumentos.
| Chave (API e CLI) | Nome para Exibição da Chave (Console) | Descrição | Obrigatório/Opcional | Valor Padrão | Valor de Exemplo |
|---|---|---|---|---|---|
affinity |
afinidade |
Um grupo de regras de programação de afinidade. Formato JSON em texto simples ou codificado em Base64. Não utilizado por:
Possíveis equivalentes:
|
Opcional | nulo | nulo |
nodeSelectors |
seletores de nó |
Você pode usar seletores de nó e labels de nó para controlar os nós de trabalho nos quais os pods complementares são executados. Para que um pod seja executado em um nó, o seletor de nós do pod deve ter a mesma chave/valor do label do nó. Defina Formato JSON em texto simples ou codificado em Base64. Não utilizado por:
Possíveis equivalentes:
|
Opcional | nulo | {"foo":"bar", "foo2": "bar2"}O pod só será executado em nós que tenham o label |
numOfReplicas |
numOfReplicas | O número de réplicas da implantação do complemento. Não utilizado por:
Possíveis equivalentes:
|
Obrigatório | 1Cria uma réplica da implantação do complemento por cluster. |
2Cria duas réplicas da implantação do complemento por cluster. |
rollingUpdate |
rollingUpdate |
Controla o comportamento desejado de atualização incremental por maxSurge e maxUnavailable. Formato JSON em texto simples ou codificado em Base64. Não utilizado por:
Possíveis equivalentes:
|
Opcional | nulo | nulo |
tolerations |
tolerâncias |
Você pode usar taints e tolerations para controlar os nós de trabalho nos quais os pods complementares são executados. Para que um pod seja executado em um nó que tenha uma taint, o pod deve ter uma tolerância correspondente. Defina Formato JSON em texto simples ou codificado em Base64. Possíveis equivalentes:
|
Opcional | nulo | [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]Somente pods que têm essa tolerância podem ser executados em nós de trabalho que têm a mancha |
topologySpreadConstraints |
topologySpreadConstraints |
Como distribuir pods correspondentes entre a topologia fornecida. Formato JSON em texto simples ou codificado em Base64. Não utilizado por:
|
Opcional | nulo | nulo |
| Chave (API e CLI) | Nome para Exibição da Chave (Console) | Descrição | Obrigatório/Opcional | Valor Padrão | Valor de Exemplo |
|---|---|---|---|---|---|
| annotations | anotações |
Anotações a serem passadas para a implantação do Cluster Autoscaler. Por exemplo, Formato JSON em texto simples ou codificado em Base64. |
Opcional | "" | |
| authType | authType | O tipo de autenticação que o Cluster Autoscaler usa ao fazer solicitações, como um dos seguintes:
|
Obrigatório |
instance
|
|
| balanceSimilarNodeGroups | balanceSimilarNodeGroups | Detecte grupos de nós semelhantes e balanceie o número de nós entre eles. | Opcional |
false
|
|
| balancingIgnoreLabel | balancingIgnoreLabel | Definir um rótulo de nó que deve ser ignorado ao considerar a similaridade de grupo de nós. Um label por ocorrência de flag. O formato é label1, label2. |
Opcional | "" | |
| balancingLabel | balancingLabel | Defina um rótulo de nó a ser usado ao comparar a similaridade de grupo de nós. Se definido, todas as outras lógicas de comparação serão desativadas, e somente os rótulos serão considerados ao comparar grupos. Um label por ocorrência de flag. O formato é label1, label2. |
Opcional | "" | |
| cluster-autoscaler.ContainerResources | recursos de contêiner do cluster-autoscaler |
Você pode especificar as quantidades de recursos solicitadas pelos contêineres de complementos e definir limites de uso de recursos que os contêineres de complementos não podem exceder. Formato JSON em texto simples ou codificado em Base64. |
Opcional | nulo |
{"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}
Crie contêineres complementares que solicitem 100 mililitros de CPU e 100 mebibytes de memória. Limite os contêineres complementares a 500 milicores de CPU e 200 mebibytes de memória. |
| cordonNodeBeforeTerminating | (Não mostrado na Console) | Se CA cordonar nós antes de encerrar durante o processo de downscale. | Opcional |
false
|
|
| coresTotal | (Não mostrado na Console) | Número mínimo e máximo de núcleos no cluster, no formato <min>:<max>. O dimensionador automático do cluster não dimensionará o cluster além desses números. |
Opcional |
0:320000
|
|
| daemonsetEvictionForEmptyNodes | (Não mostrado na Console) | Se os pods DaemonSet serão normalmente encerrados de nós vazios. | Opcional |
false
|
|
| daemonsetEvictionForOccupiedNodes | (Não mostrado na Console) | Se os pods DaemonSet serão normalmente encerrados de nós não vazios. | Opcional |
true
|
|
| debuggingSnapshotEnabled | (Não mostrado na Console) | Se o snapshot de depuração do recurso de dimensionamento automático do cluster está ativado. | Opcional |
false
|
|
| emitPerNodegroupMetrics | (Não mostrado na Console) | Se verdadeiro, emita métricas por grupo de nós. | Opcional |
false
|
|
| enforceNodeGroupMinSize | (Não mostrado na Console) | A CA deve ampliar o grupo de nós para o tamanho mínimo configurado, se necessário. | Opcional |
false
|
|
| estimator | (Não mostrado na Console) | Tipo de estimador de recursos a ser usado na ampliação. | Opcional |
binpacking
|
|
| expander | expansor | Tipo de expansor do grupo de nós a ser usado na ampliação. Observe que |
Opcional |
random
|
|
| expendablePodsPriorityCutoff | (Não mostrado na Console) | Pods com prioridade abaixo do limite serão dispensáveis. Eles podem ser mortos sem qualquer consideração durante a redução e eles não causam aumento de escala. Os pods com prioridade nula (PodPriority desativado) não podem ser gastos. | Opcional |
-10
|
|
| ignoreDaemonsetsUtilization | (Não mostrado na Console) | Se os pods DaemonSet serão ignorados ao calcular a utilização de recursos para redução. | Opcional |
false
|
|
| ignoreMirrorPodsUtilization | (Não mostrado na Console) | Se os pods de Espelho serão ignorados ao calcular a utilização de recursos para redução. | Opcional |
false
|
|
| leaderElect | (Não mostrado na Console) | Inicie um cliente de eleição líder e ganhe liderança antes de executar o loop principal. Ative isso ao executar componentes replicados para alta disponibilidade. | Opcional |
true
|
|
| leaderElectLeaseDuration | (Não mostrado na Console) | A duração que os candidatos não-líderes vão esperar depois de observar uma renovação de liderança até tentar adquirir a liderança de um líder liderado, mas não renovado slot. Esta é efetivamente a duração máxima que um líder pode ser interrompido antes de ser substituído por outro candidato. Isso só é aplicável se a eleição do líder estiver ativada. | Opcional |
15s
|
|
| leaderElectRenewDeadline | (Não mostrado na Console) | O intervalo entre as tentativas do dimensionador automático de cluster ativo de renovar um slot de liderança antes que ele pare de liderar. Deve ser menor ou igual à duração do leasing. Isso só é aplicável se a eleição do líder estiver ativada. | Opcional |
10s
|
|
| leaderElectResourceLock | (Não mostrado na Console) | O tipo de objeto de recurso usado para bloqueio durante a escolha do líder. As opções suportadas são leases (padrão), endpoints, endpointsleases, configmaps e configmapsleases. |
Opcional |
leases
|
|
| leaderElectRetryPeriod | (Não mostrado na Console) | A duração que os clientes devem esperar entre a tentativa de aquisição e renovação de uma liderança. Isso só é aplicável se a eleição do líder estiver ativada. | Opcional |
2s
|
|
| maxAutoprovisionedNodeGroupCount | (Não mostrado na Console) | O número máximo de grupos provisionados automaticamente no cluster. | Opcional |
15
|
|
| maxEmptyBulkDelete | maxEmptyBulkDelete | Número máximo de nós vazios que podem ser excluídos ao mesmo tempo. | Opcional |
10
|
|
| maxFailingTime | (Não mostrado na Console) | Tempo máximo da última execução bem-sucedida do dimensionador automático registrada antes da reinicialização automática. | Opcional |
15m
|
|
| maxGracefulTerminationSec | (Não mostrado na Console) | Número máximo de segundos que a CA aguarda o encerramento do pod ao tentar reduzir um nó. | Opcional |
600
|
|
| maxInactivity | (Não mostrado na Console) | Tempo máximo da última atividade do dimensionador automático registrada antes da reinicialização automática. | Opcional |
10m
|
|
| maxNodeProvisionTime | maxNodeProvisionTime | Tempo máximo que a CA aguarda o provisionamento do nó. | Opcional |
15m
|
|
| maxNodesTotal | (Não mostrado na Console) | Número máximo de nós em todos os pools de nós. O dimensionador automático do cluster não aumentará o cluster além desse número. | Opcional |
0
|
|
| maxTotalUnreadyPercentage | (Não mostrado na Console) | Porcentagem máxima de nós não prontos no cluster. Depois que isso é excedido, a CA interrompe as operações. | Opcional |
45
|
|
| memoryTotal | (Não mostrado na Console) | Número mínimo e máximo de gigabytes de memória no cluster, no formato <min>:<max>. O dimensionador automático do cluster não dimensionará o cluster além desses números. |
Opcional |
0:6400000
|
|
| minReplicaCount | (Não mostrado na Console) | Número mínimo ou réplicas que um conjunto de réplicas ou controlador de replicação deve ter para permitir a exclusão de seus pods em redução. | Opcional |
0
|
|
| nodes | nós |
Uma lista de Número mínimo de nós, Número máximo de nós e o OCID do pool de nós a ser gerenciado pelo dimensionador automático do cluster. O formato é Use Formato JSON em texto simples ou codificado em Base64. |
Obrigatório, se nodeGroupAutoDiscovery não estiver definido |
"" | |
| nodeGroupAutoDiscovery | (Não mostrado na Console) |
Uma lista de pares de chave/valor de tag, Número mínimo de nós, Número máximo de nós e o OCID do compartimento no qual o pool de nós a ser gerenciado pelo dimensionador automático do cluster está localizado. O formato é Use Observe que as tags de pool de nós Suportado com o Cluster Autoscaler versão 1.30.3, versão 1.31.1, versão 1.32.0 e posterior. Formato JSON em texto simples ou codificado em Base64. |
Obrigatório, se nodes não estiver definido |
||
| okTotalUnreadyCount | (Não mostrado na Console) | Número de nós não prontos permitidos, independentemente de maxTotalUnreadyPercentage. |
Opcional |
3
|
|
| recordDuplicatedEvents | (Não mostrado na Console) | Ative o dimensionador automático para imprimir eventos duplicados em uma janela de 5 minutos. | Opcional |
false
|
|
| scaleDownCandidatesPoolMinCount | (Não mostrado na Console) |
Número mínimo de nós que são considerados candidatos não vazios adicionais para redução quando alguns candidatos da iteração anterior não são mais válidos. Ao calcular o tamanho do pool para candidatos adicionais que tomamos.
|
Obrigatório |
50
|
|
| scaleDownCandidatesPoolRatio | (Não mostrado na Console) | Uma proporção de nós que são considerados candidatos não vazios adicionais para redução quando alguns candidatos da iteração anterior não são mais válidos. Menor valor significa melhor capacidade de resposta da CA, mas possível latência de redução mais lenta. Um valor mais alto pode afetar o desempenho da CA com grandes clusters (centenas de nós). Definir como 1.0 para desativar essa heurística - a CA usará todos os nós como candidatos adicionais. | Obrigatório |
0.1
|
|
| scaleDownDelayAfterAdd | scaleDownDelayAfterAdd | Quanto tempo depois de aumentar essa escala, a avaliação é retomada. | Obrigatório |
10m
|
|
| scaleDownDelayAfterDelete | (Não mostrado na Console) | Quanto tempo após a exclusão do nó que a avaliação de redução é retomada, o padrão é scan-interval. | Obrigatório |
10s
|
|
| scaleDownDelayAfterFailure | (Não mostrado na Console) | Quanto tempo após a falha de redução que a avaliação de redução é retomada. | Obrigatório |
3m
|
|
| scaleDownEnabled | scaleDownEnabled | A CA deve reduzir o cluster. | Opcional |
true
|
|
| scaleDownNonEmptyCandidatesCount | (Não mostrado na Console) | Número máximo de nós não vazios considerados em uma iteração como candidatos para redução com drenagem. Menor valor significa melhor capacidade de resposta da CA, mas possível latência de redução mais lenta. Um valor mais alto pode afetar o desempenho da CA com grandes clusters (centenas de nós). Definir como valor não positivo para desativar essa heurística - A CA não limitará o número de nós que considera. | Obrigatório |
30
|
|
| scaleDownUnneededTime | scaleDownUnneededTime | Quanto tempo um nó deve ser desnecessário antes de ser elegível para redução. | Obrigatório |
10m
|
|
| scaleDownUnreadyTime | (Não mostrado na Console) | Quanto tempo um nó não pronto deve ser desnecessário antes de ser elegível para redução. | Obrigatório |
20m
|
|
| scaleDownUtilizationThreshold | (Não mostrado na Console) | Nível de utilização do nó, definido como a soma dos recursos solicitados divididos por capacidade, abaixo da qual um nó pode ser considerado para redução. | Obrigatório |
0.5
|
|
| scanInterval | scanInterval | Com que frequência o cluster é reavaliado para expansão ou redução. | Opcional |
10s
|
|
| skipNodesWithCustomControllerPods | (Não mostrado na Console) | Se true, o dimensionador automático do cluster nunca excluirá nós com pods de propriedade de controladores personalizados. |
Opcional |
true
|
|
| skipNodesWithLocalStorage | (Não mostrado na Console) | Se o true, o dimensionador automático do cluster nunca excluirá nós com pods com armazenamento local, por exemplo, EmptyDir ou HostPath. |
Opcional |
true
|
|
| skipNodesWithSystemPods | (Não mostrado na Console) | Se true, o dimensionador automático do cluster nunca excluirá nós com pods do kube-system (exceto para DaemonSet ou pods de espelho).
|
Opcional |
true
|
|
| statusConfigMapName | (Não mostrado na Console) | O nome do status ConfigMap que a CA grava. | Opcional |
cluster-autoscaler-status
|
|
| stderrthreshold | (Não mostrado na Console) | O limite de severidade do log, além do qual os logs são enviados para stderr. Por exemplo, se você definir isso como error, todos os logs com uma severidade maior que error serão enviados ao stderr. |
Opcional |
info
|
|
| unremovableNodeRecheckTimeout | unremovableNodeRecheckTimeout | O timeout antes de verificarmos novamente um nó que não pôde ser removido antes. | Obrigatório |
5m
|
|
| v | (Não mostrado na Console) | O número do nível de detalhamento do log. | Opcional |
0
|
|
| writeStatusConfigmap | (Não mostrado na Console) | A CA deve gravar informações de status em um configmap. | Opcional |
true
|
A tabela a seguir descreve considerações para configurar este complemento de cluster em clusters grandes.
| Nome do Argumento | Número wrt de Atribuições dos Nós | Descrição | À medida que o tamanho do cluster aumenta | Riscos | Recomendação |
|---|---|---|---|---|---|
cluster-autoscaler.ContainerResources
|
S |
Define solicitações e limites de CPU e memória para o pod do Cluster Autoscaler. |
À medida que o tamanho do cluster aumenta, o Cluster Autoscaler experimenta:
|
Se os recursos forem subdimensionados:
|
Aumente os recursos de CPU e memória conforme apropriado:
|
balanceSimilarNodeGroups
|
N |
Controla se o Cluster Autoscaler equilibra nós em pools de nós semelhantes. |
Clusters grandes geralmente usam vários pools de nós, aumentando a possibilidade de dimensionamento desigual entre pools. A ativação desse argumento adiciona a sobrecarga de computação e aumenta ligeiramente a complexidade das decisões de dimensionamento. |
Se este argumento estiver desativado:
|
Ative esse argumento para ambientes com vários pools de nós e para cenários de alta disponibilidade que exigem dimensionamento balanceado. |
numOfReplicas
|
N |
Controla o número de pods do Cluster Autoscaler. |
O Cluster Autoscaler usa a eleição de líderes. Somente uma instância ativa toma decisões de dimensionamento, enquanto outras réplicas fornecem alta disponibilidade. |
Se a contagem for muito baixa, uma falha de nó, falha de pod ou upgrade poderá interromper temporariamente as decisões de dimensionamento automático. Isso pode atrasar a ampliação de nós para cargas de trabalho pendentes e a redução de nós subutilizados até que o Cluster Autoscaler se torne disponível novamente. |
Use duas ou três réplicas para fornecer alta disponibilidade. |
affinity / nodeSelectors / tolerations
|
N |
O Cluster Autoscaler é um componente crítico do plano de controle. |
O posicionamento do pod afeta a estabilidade e a confiabilidade do Cluster Autoscaler. |
Se esses argumentos não forem configurados adequadamente:
|
|
authType
|
N |
Define como o Cluster Autoscaler se autentica com APIs do OCI. |
O Cluster Autoscaler conta com APIs do OCI para criar nós durante operações de expansão e excluir nós durante operações de expansão. |
|
|
rollingUpdate
|
N |
Controla a estratégia de atualização de implantação do Cluster Autoscaler. |
O tempo de inatividade do Cluster Autoscaler interrompe as decisões de dimensionamento e reduz a capacidade de resposta do cluster durante um upgrade. |
Se este argumento não estiver configurado corretamente:
|
|
maxNodesTotal
|
S |
Define o número máximo de nós que o Cluster Autoscaler pode gerenciar. |
Este argumento define um limite superior fixo para o tamanho do cluster e impede a expansão não controlada. |
Se o valor for muito baixo, o Cluster Autoscaler interromperá o dimensionamento mesmo quando os pods permanecerem no estado Se o valor for muito alto:
|
Defina o valor um pouco maior que o tamanho máximo esperado do cluster. Por exemplo, defina-o com mais de |
coresTotal
|
S |
Define o número mínimo e máximo total de núcleos de CPU no cluster. |
Esse argumento controla o dimensionamento de capacidade de CPU agregada e ajuda a evitar o subprovisionamento ou o superprovisionamento. |
Se o valor máximo for muito baixo, o Cluster Autoscaler bloqueará operações de expansão. Se o valor máximo for muito alto, o provisionamento excessivo de nós poderá aumentar os custos. |
Defina |
memoryTotal
|
S |
Define a memória total mínima e máxima no cluster. |
Esse argumento controla o provisionamento total da memória do cluster e é particularmente importante para cargas de trabalho com uso intenso de memória. |
Se o valor máximo for muito baixo, o Cluster Autoscaler impedirá operações de expansão, o que pode deixar cargas de trabalho sem memória suficiente. Se o valor máximo for muito alto, o cluster poderá ser superprovisionado e os custos poderão aumentar. |
Alinhe os valores mínimo e máximo com a estratégia de dimensionamento do pool de nós. |
maxEmptyBulkDelete
|
S |
Define o número máximo de nós vazios que podem ser excluídos simultaneamente. |
Este argumento controla a velocidade das operações de redução. |
Se o valor for muito baixo:
Se o valor for muito alto, um grande número de nós poderá ser excluído ao mesmo tempo. |
|
nodes
|
S |
Define o número mínimo e máximo de nós para cada pool de nós. |
Esse argumento controla os limites de dimensionamento para cada pool de nós. |
Se os limites forem muito restritivos, o pool de nós não poderá ser dimensionado suficientemente. Se os limites forem muito permissivos, os nós poderão ser distribuídos de forma desigual entre pools de nós. |
|