Updated on 2024-06-11 GMT+08:00

Auto Scaling

Overview

When the bursting add-on is used to schedule workloads to CCI 2.0, the Kubernetes Metrics Server add-on cannot collect metric data of these pods, which may affect the HPA. You can use the Cloud Native Cluster Monitoring add-on to replace Kubernetes Metrics Server add-on to ensure that HPA functions properly.

Procedure

  1. Install the Cloud Native Cluster Monitoring add-on.

    1. Log in to the CCE console.
    2. Click the name of the target CCE cluster to go to the cluster console.
    3. In the navigation pane on the left, choose Add-ons.
    4. Select the Cloud Native Cluster Monitoring add-on and click Install.
      Figure 1 Installing the Cloud Native Cluster Monitoring add-on
    5. Configure the specifications (Deployment Mode to Server mode).

      To use HPA in Agent mode, contact technical support.

  2. Install the Cloud Native Cluster Monitoring add-on for monitoring.

    • If the Kubernetes Metrics Server add-on is not installed in the CCE cluster, enable the Metric API. For details, see Providing Resource Metrics Through the Metrics API. After the configuration is complete, Prometheus is used to collect system resource metrics.
    • If the Kubernetes Metrics Server add-on has been installed in the CCE cluster, use either of the following methods to enable the Metric API:
      • Method 1: Uninstall the Kubernetes Metrics Server add-on and enable the Metric API.
        1. Log in to the CCE console.
        2. Click the name of the target CCE cluster to go to the cluster console.
        3. In the navigation pane on the left, choose Add-ons.
        4. Select the Kubernetes Metrics Server add-on and click Uninstall.

        5. Enable the Metric API. For details, see Providing Resource Metrics Through the Metrics API. After the configuration is complete, Prometheus is used to collect system resource metrics.
      • Method 2: Modify the APIService object.

        Configuration for updating the APIService object v1beta1.metrics.k8s.io:

        apiVersion: apiregistration.k8s.io/v1
        kind: APIService
        metadata:
          labels:
            app: custom-metrics-apiserver
            release: cceaddon-prometheus
          name: v1beta1.metrics.k8s.io
        spec:
          group: metrics.k8s.io
          groupPriorityMinimum: 100
          insecureSkipTLSVerify: true
          service:
            name: custom-metrics-apiserver
            namespace: monitoring
            port: 443
          version: v1beta1
          versionPriority: 100

        You can save the object as a file, name it metrics-apiservice.yaml, and run the following command:

        kubectl apply -f metrics-apiservice.yaml

        Run the kubectl top pod -n monitoring command. If the following information is displayed, the Metrics API can be accessed:

        # kubectl top pod -n monitoring
        NAME                                                      CPU(cores)   MEMORY(bytes)
        ......
        custom-metrics-apiserver-d4f556ff9-l2j2m                  38m          44Mi
        ......

        To uninstall the add-on, run the following kubectl command and delete the APIService object first or the add-on cannot be installed due to residual APIService resources.

        kubectl delete APIService v1beta1.metrics.k8s.io