Version 1.8. Essa versão é compatível com a política de suporte da versão do Anthos, que oferece os patches e atualizações mais recentes para vulnerabilidades de segurança, exposições e problemas que afetam os clusters do Anthos no VMware (GKE On-Prem). Consulte as notas da versão para saber mais detalhes. Esta não é a versão mais recente.

Como ativar métricas personalizadas definidas pelo usuário para escalonamento automático de pod horizontal

Neste tópico, descrevemos como configurar métricas definidas pelo usuário para escalonamento automático do pod horizontal (HPA, na sigla em inglês) em clusters do Anthos no VMware (GKE On-Prem).

Como ativar o Logging e o Monitoring para aplicativos do usuário

A configuração do Logging e do Monitoring é mantida em um objeto do Stackdriver chamado stackdriver.

  1. Abra o objeto stackdriver para edição:

    kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG --namespace kube-system edit stackdriver stackdriver
    

    Substitua USER_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de usuário.

  2. Em spec, defina enableStackdriverForApplications e enableCustomMetricsAdapter como true:

    apiVersion: addons.sigs.k8s.io/v1alpha1
    kind: Stackdriver
    metadata:
    name: stackdriver
    namespace: kube-system
    spec:
    projectID: project-id
    clusterName: cluster-name
    clusterLocation: cluster-location
    proxyConfigSecretName: secret-name
    enableStackdriverForApplications: true
    enableCustomMetricsAdapter: true
    enableVPC: stackdriver-enable-VPC
    optimizedMetrics: true
    
  3. Salve e feche o arquivo editado.

Após a conclusão dessas etapas, todos os registros de aplicativo do usuário serão enviados para o Cloud Logging.

A próxima etapa é anotar o aplicativo do usuário para a coleta de métricas.

Anotar um aplicativo de usuário para coleta de métricas

Para anotar um aplicativo do usuário a ser copiado e os registros enviados ao Cloud Monitoring, adicione annotations correspondente aos metadados do serviço, pod e endpoints.

  metadata:
    name: "example-monitoring"
    namespace: "default"
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/path: "" - Overriding metrics path (default "/metrics")
  

Implantar um aplicativo de usuário de exemplo

Nesta seção, você implantará um aplicativo de amostra com registros e métricas compatíveis com o prometheus.

  1. Salve os seguintes manifestos de Serviço e Implantação em um arquivo chamado my-app.yaml. Observe que o Serviço tem a anotação prometheus.io/scrape: "true":
  kind: Service
  apiVersion: v1
  metadata:
    name: "example-monitoring"
    namespace: "default"
    annotations:
      prometheus.io/scrape: "true"
  spec:
    selector:
      app: "example-monitoring"
    ports:
      - name: http
        port: 9090
  ---
  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: "example-monitoring"
    namespace: "default"
    labels:
      app: "example-monitoring"
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: "example-monitoring"
    template:
      metadata:
        labels:
          app: "example-monitoring"
      spec:
        containers:
        - image: gcr.io/google-samples/prometheus-example-exporter:latest
          name: prometheus-example-exporter
          imagePullPolicy: Always
          command:
          - /bin/sh
          - -c
          - ./prometheus-example-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090
          resources:
            requests:
              cpu: 100m
  1. Crie a implantação e o serviço:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG apply -f my-app.yaml
    

Usar as métricas personalizadas no HPA

Implante o objeto HPA para usar a métrica exposta na etapa anterior. Consulte Como fazer escalonamento automático em várias métricas personalizadas para informações mais avançadas sobre diferentes tipos de métricas personalizadas.

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: example-monitoring-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: example-monitoring
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Pods
    pods:
      metric:
        name: example_monitoring_up
      target:
        type: AverageValue
        averageValue: 20

A métrica do tipo de pods tem um seletor de métricas padrão para os rótulos dos pods de destino, que é o funcionamento do kube-controller-manager. Neste exemplo, você consulta a métrica example_monitoring_up com um seletor de {matchLabels: {app: example-monitoring}}, porque eles estão disponíveis nos pods de destino. Qualquer outro seletor especificado será adicionado à lista. Para evitar o seletor padrão, remova todos os rótulos no pod de destino ou use a métrica "Tipo de objeto".

Verificar se as métricas do aplicativo definidas pelo usuário são usadas pelo HPA

Verifique se as métricas do aplicativo definidas pelo usuário são usadas pelo HPA:

kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG describe hpa example-monitoring-hpa

A saída será semelhante ao seguinte:

Name:                             example-monitoring-hpa
Namespace:                        default
Labels:                           
Annotations:                      CreationTimestamp:  Mon, 19 Jul 2021 16:00:40 -0800
Reference:                        Deployment/example-monitoring
Metrics:                          ( current / target )
  "example_monitoring_up" on pods:  1 / 20
Min replicas:                     1
Max replicas:                     5
Deployment pods:                  1 current / 1 desired
Conditions:
  Type            Status  Reason              Message


AbleToScale True ReadyForNewScale recommended size matches current size ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from pods metric example_monitoring_up ScalingLimited False DesiredWithinRange the desired count is within the acceptable range

Custos

O uso de métricas personalizadas para HPA não gera custos extras. Os usuários são cobrados apenas pelas métricas e registros do aplicativo. Consulte os preços do pacote de operações do Google Cloud para mais detalhes. O pod para ativar métricas personalizadas consome uma CPU extra de 15 m e 20 MB de memória.