Criação de uma política CustomedHPA para o dimensionamento automático da carga de trabalho
Uma política CustomedHPA dimensiona as Implementações com base em métricas (como uso da CPU e uso da memória) ou em um intervalo periódico (um ponto de tempo específico todos os dias, todas as semanas, todos os meses ou todos os anos). Esse tipo de política é um recurso de dimensionamento automático aprimorado do CCE.
- O dimensionamento pode ser realizado com base na porcentagem do número atual de pods.
- A etapa mínima de dimensionamento pode ser definida.
- Diferentes operações de escala podem ser executadas com base nos valores métricos reais.
Pré-requisitos
Para usar uma política CustomedHPA, você deve instalar o complemento cce-hpa-controller. Se a versão do cce-hpa-controller for anterior a 1.2.11, o complemento Prometheus deve ser instalado. Se a versão do cce-hpa-controller for 1.2.11 ou posterior, os complementos que podem fornecer a API de métricas devem ser instalados. Selecione um dos seguintes complementos com base na versão do cluster e nos requisitos reais.
- Kubernetes Metrics Server: fornece métricas básicas de uso de recursos, como uso de CPU e memória do contêiner. É suportado por todas as versões de cluster.
- Monitoramento de cluster da nuvem nativa: fornece métricas personalizadas além das métricas básicas de recursos. Registre o Prometheus como o serviço que fornece a API de métricas. Para mais detalhes, consulte Fornecer métricas de recursos por meio de Metrics API. Este suplemento suporta clusters v1.17 ou posterior.
- Prometheus (EOM): fornece métricas personalizadas além das métricas básicas de recursos. Registre o Prometheus como o serviço que fornece a API de métricas. Para mais detalhes, consulte Fornecer métricas de recursos por meio de Metrics API. Este suplemento suporta apenas clusters de v1.21 ou anterior.
Restrições
- As políticas CustomedHPA podem ser criadas apenas para clusters de v1.15 ou posterior.
- Para clusters anteriores à v1.19.10, se uma política HPA for usada para expandir uma carga de trabalho com volumes do EVS montados, os pods existentes não poderão ser lidos ou gravados quando um novo pod for agendado para outro nó.
Para clusters de v1.19.10 e posterior, se uma política HPA for usada para expandir uma carga de trabalho com o volume do EVS montado, um novo pod não poderá ser iniciado porque os discos EVS não podem ser anexados.
- As especificações do cce-hpa-controller são decididas pelo número total de contêineres no cluster e pelo número de políticas de escala. É aconselhável configurar 500m de CPU e 1.000 MiB de memória para cada 5.000 contêineres e 100m de CPU e 500 MiB de memória para cada 1.000 políticas de dimensionamento.
Procedimento
- Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
- Escolha Auto Scaling no painel de navegação e clique na guia CustomedHPA Policy.
- Se Uninstalled for exibido ao lado do nome do complemento, clique em Install, defina os parâmetros do complemento conforme necessário e clique em Install para instalar o complemento.
- Se Installed for exibido ao lado do nome do complemento, o complemento foi instalado.
- Depois que o complemento for instalado, clique em Create CustomedHPA Policy no canto superior direito.
- Defina parâmetros de política.
Tabela 1 Parâmetros de política CustomedHPA Parâmetro
Descrição
Policy Name
Nome da política a ser criada. Defina este parâmetro conforme necessário.
Namespace
Namespace ao qual a carga de trabalho pertence.
Associated Workload
Carga de trabalho com a qual a política CustomedHPA está associada.
Pod Range
Número mínimo e máximo de pods.
Quando uma política é acionada, os pods de carga de trabalho são escalados dentro desse intervalo.
Cooldown Period
Introduza um intervalo, em minutos.
Este parâmetro indica o intervalo entre operações consecutivas de dimensionamento. O período de resfriamento garante que uma operação de dimensionamento seja iniciada somente quando a anterior for concluída e o sistema estiver funcionando de forma estável.
Rules
Clique em . Na caixa de diálogo exibida, defina os seguintes parâmetros:
- Name: insira um nome de regra personalizado.
- Type: você pode selecionar Metric-based (Tabela 2) ou Periodic (Tabela 3). Em seguida, configure as condições e ações do gatilho.
- Enable: habilitar ou desabilitar a regra de política.
Depois de configurar os parâmetros anteriores, clique em OK. Em seguida, a regra de política adicionada é apresentada na lista de regras.
Tabela 2 Regras baseadas em métricas Parâmetro
Descrição
Trigger
Selecione CPU usage ou Memory usage, escolha > ou < e insira uma porcentagem.NOTA:Uso = CPUs ou memória usadas por pods/CPUs ou memória solicitadas.
Action
Defina uma ação a ser executada quando a condição de gatilho for atendida. Várias ações podem ser adicionadas.- Scale To: ajuste o número de pods para o valor especificado. Tanto um número quanto uma porcentagem servirão. Esta ação pode ser usada para reduzir ou expandir pods. Se o número atual de pods for menor que o valor alvo ou a porcentagem alvo for maior que 100%, o número de pods será expandido para o valor alvo. Se o número atual de pods for maior que o valor alvo ou se a porcentagem alvo for menor que 100%, o número de pods será reduzido para o valor alvo.
- Add: configure este parâmetro quando Trigger estiver definido como >. Adicione o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para expandir pods.
- Reduce: configure este parâmetro quando Trigger estiver definido como <. Reduza o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para reduzir pods.
NOTA:Você pode inserir um número ou uma porcentagem para as ações anteriores.
Ao inserir uma porcentagem, você deve especificar o número mínimo de pods disponíveis. Número final de pods = número de pods atuais x porcentagem. O resultado é arredondado. Se o resultado for menor que o número mínimo de pods disponíveis, o valor predefinido será usado. Caso contrário, o resultado do cálculo é usado.
Conforme mostrado abaixo, quando o uso da CPU excede 50%, o número de pods é dimensionado para 5. Quando o uso da CPU excede 70%, o número de pods é ampliado para 8. Quando o uso da CPU excede 90%, o número de pods é ampliado para 18 (adicionando mais 10 pods). Essas regras também funcionam para operações de escala.
Figura 1 Definir uma condição de gatilho
Tabela 3 Regras baseadas em periódicos Parâmetro
Descrição
Trigger Time
Você pode selecionar um horário específico todos os dias, todas as semanas, todos os meses ou todos os anos.
Action
Defina uma ação a ser executada no Triggered Time. Como mostrado abaixo, um pod será adicionado às 17:00 todos os dias.- Scale To: ajuste o número de pods para o valor especificado. Tanto um número quanto uma porcentagem servirão. Esta ação pode ser usada para reduzir ou expandir pods. Se o número atual de pods for menor que o valor alvo ou a porcentagem alvo for maior que 100%, o número de pods será expandido para o valor alvo. Se o número atual de pods for maior que o valor alvo ou se a porcentagem alvo for menor que 100%, o número de pods será reduzido para o valor alvo.
- Add: adicione o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para expandir pods.
- Reduce: reduza o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para reduzir pods.
NOTA:Você pode inserir um número ou uma porcentagem para as ações anteriores.
Ao inserir uma porcentagem, você deve especificar o número mínimo de pods disponíveis. Número final de pods = número de pods atuais x porcentagem. O resultado é arredondado. Se o resultado for menor que o número mínimo de pods disponíveis, o valor predefinido será usado. Caso contrário, o resultado do cálculo é usado.
Figura 2 Disparo periódico (diário)
- Clique em Create.
Usar o kubectl
Uma política CustomHPA é uma CustomResourceDefinition (CRD) e pode ser definida da seguinte forma no YAML:
apiVersion: autoscaling.cce.io/v1alpha1 kind: CustomedHorizontalPodAutoscaler metadata: name: customhpa-example namespace: default spec: coolDownTime: 3m #Cooldown period maxReplicas: 10 # Maximum number of pods minReplicas: 1 # Minimum number of pods rules: - actions: #Policy rules - metricRange: 0,0.1 # Metric range, from 0 to 10% operationType: ScaleDown # Scaling type. ScaleDown indicates downsizing. operationUnit: Task #Operation unit. Task indicates the number of tasks. operationValue: 1 # Resource quantity in each scaling - metricRange: 0.1,0.3 # Metric range, from 10% to 30% operationType: ScaleDown operationUnit: Task operationValue: 2 disable: false metricTrigger: hitThreshold: 1 metricName: CPURatioToRequest # Metric name. CPURatioToRequest indicates the CPU usage. metricOperation: < # Metric expression operator metricValue: 0.3 # Value on the right of the metric expression periodSeconds: 60 # statistic: instantaneous # ruleName: low ruleType: Metric - actions: - metricRange: 0.7,0.9 operationType: ScaleUp operationUnit: Task operationValue: 1 - metricRange: 0.9,+Infinity operationType: ScaleUp operationUnit: Task operationValue: 2 disable: false metricTrigger: hitThreshold: 1 metricName: CPURatioToRequest metricOperation: '>' metricValue: 0.7 periodSeconds: 60 statistic: instantaneous ruleName: high ruleType: Metric scaleTargetRef: # Associated workload apiVersion: apps/v1 kind: Deployment name: nginx