Trabajo con la escala automática del cluster como complemento de cluster

Descubra cómo instalar, configurar y utilizar la escala automática del cluster de Kubernetes como complemento de cluster para cambiar automáticamente el tamaño de los pools de nodos gestionados en un cluster que ha creado mediante Container Engine for Kubernetes (OKE).

El uso de la escala automática del cluster de Kubernetes como complemento de cluster (el "complemento de escala automática del cluster") en lugar de como un programa independiente simplifica la configuración y el mantenimiento continuo. Puede hacerlo de manera más sencilla:

  • Active o desactive la escala automática del cluster.
  • Seleccione o descarte actualizaciones automáticas por parte de Oracle.
  • Seleccione las versiones del complemento de escala automática del cluster.
  • Gestione personalizaciones específicas del complemento utilizando argumentos de configuración de par clave/valor aprobados.

En estas secciones se describe cómo trabajar con el complemento de escala automática del cluster para gestionar pools de nodos:

Despliegue del complemento de escala automática de clusters

Paso 1: Configuración de un principal de instancia o un principal de identidad de carga de trabajo para activar el complemento de escala automática del cluster para acceder a los pools de nodos

Para gestionar pools de nodos, la escala automática del cluster de Kubernetes realiza acciones en otros recursos del servicio de Oracle Cloud Infrastructure. Para realizar esas acciones en los recursos del servicio OCI, la escala automática del cluster de Kubernetes utiliza las credenciales de un actor (o principal) autorizado. Actualmente puede configurar los siguientes tipos de principal para permitir que la escala automática del cluster de Kubernetes realice acciones en los recursos del servicio OCI:

  • Principal de instancia: la escala automática del cluster de Kubernetes utiliza la identidad de la instancia en la que se ejecuta.
  • Principal de identidad de carga de trabajo: la escala automática del cluster de Kubernetes utiliza la identidad de un recurso de carga de trabajo que se ejecuta en un cluster de Kubernetes.

Tenga en cuenta el uso de principales de identidad de carga de trabajo para permitir que la escala automática del cluster de Kubernetes acceda a los servicios y recursos de OCI:

  • se admite con clusters mejorados, pero no con clusters básicos.
  • solo está soportada con la escala automática de cluster versión 1.26 (o posterior)

Uso de principales de instancia para permitir que el complemento Escala automática de cluster acceda a pools de nodos

Puede configurar un principal de instancia para permitir que la escala automática del cluster de Kubernetes realice acciones en los recursos del servicio de OCI.

Para configurar un principal de instancia:

  1. Inicie sesión en la Consola.
  2. Cree un nuevo grupo dinámico de nivel de compartimento que contenga los nodos de trabajador (instancias informáticas) en el cluster:

    1. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Dominios. En Dominio de identidad, haga clic en Grupos dinámicos.
    2. Seleccione el compartimento que contiene el cluster.
    3. Siga las instrucciones en Para crear un grupo dinámico y asígnele un nombre al grupo dinámico (por ejemplo, acme-oke-cluster-autoscaler-dyn-grp).
    4. Introduzca una regla que incluya los nodos de trabajador en el compartimento con el formato:

      ALL {instance.compartment.id = '<compartment-ocid>'}

      donde <compartment-ocid> es el OCID del compartimento al que pertenece el cluster.

      Por ejemplo:

      ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
    5. Haga clic en Crear grupo dinámico.
  3. Cree una política para permitir que los nodos de trabajador gestionen pools de nodos:

    1. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
    2. Siga las instrucciones en Para crear una política y asigne un nombre a la política (por ejemplo, acme-oke-cluster-autoscaler-dyn-grp-policy).
    3. Introduzca una sentencia de política para permitir que los nodos de trabajador gestionen pools de nodos (y otras sentencias de política relacionadas con la inicialización de nodos de trabajador) con el formato:

      Allow dynamic-group <dynamic-group-name> to manage cluster-node-pools in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to manage instance-family in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to use subnets in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to use vnics in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to inspect compartments in compartment <compartment-name>

      donde:

      • <dynamic-group-name> es el nombre del grupo dinámico que ha creado antes. Por ejemplo, acme-oke-cluster-autoscaler-dyn-grp. Tenga en cuenta que si un grupo dinámico no está en el dominio de identidad por defecto, agregue un prefijo al nombre de grupo dinámico con el nombre de dominio de identidad, con el formato dynamic-group '<identity-domain-name>'/'<dynamic-group-name>'. También puede especificar el grupo dinámico mediante su OCID, con el formato dynamic-group id <dynamic-group-ocid>.
      • <compartment-name> es el nombre del compartimento al que pertenece el cluster. Por ejemplo, acme-oke-cluster-autoscaler-compartment

      Por ejemplo:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage cluster-node-pools in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage instance-family in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to read virtual-network-family in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment acme-oke-cluster-autoscaler-compartment
    4. Haga clic en Crear para crear la nueva política.
    Nota

    Si un pool de nodos pertenece a un compartimento y los recursos de red utilizados por el pool de nodos pertenecen a un compartimento diferente, debe crear políticas en ambos compartimentos de la siguiente manera:

    • En el compartimento del pool de nodos, cree una política con sentencias de política con el siguiente formato:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage cluster-node-pools in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage instance-family in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment <nodepool-compartment-name>
    • En el compartimento de recursos de red, cree una política con sentencias de política con el siguiente formato:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to read virtual-network-family in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment <network-compartment-name>

Tenga en cuenta que, antes de desplegar el complemento de escala automática del cluster, deberá indicar que desea que el complemento de escala automática del cluster acceda a pools de nodos mediante principales de instancia definiendo el parámetro authType en instance en el archivo de configuración. Consulte Paso 2: Creación del archivo de configuración del complemento de escala automática del cluster.

Uso de principales de identidad de carga de trabajo para permitir que el complemento de escala automática del cluster acceda a pools de nodos

Puede configurar un principal de identidad de carga de trabajo para permitir que la escala automática del cluster de Kubernetes realice acciones en los recursos del servicio de OCI. Tenga en cuenta que solo puede utilizar principales de identidad de carga de trabajo con clusters mejorados.

Para configurar un principal de identidad de carga de trabajo:

  1. Obtenga el OCID del cluster (por ejemplo, mediante el separador Detalles de cluster de la consola).
  2. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
  3. Siga las instrucciones en Creating a Policy y asigne un nombre a la política (por ejemplo, acme-oke-cluster-autoscaler-policy).
  4. Introduzca sentencias de política para permitir la gestión del pool de nodos, con el formato:

    Allow any-user to manage cluster-node-pools in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to manage instance-family in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use subnets in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to read virtual-network-family in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 

    donde:

    • <compartment-name> es el nombre del compartimento al que pertenece el cluster. Por ejemplo, acme-oke-cluster-autoscaler-compartment
    • <cluster-ocid> es el OCID del cluster que ha obtenido anteriormente.

    Por ejemplo:

    Allow any-user to manage cluster-node-pools in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to manage instance-family in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to use subnets in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to read virtual-network-family in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to use vnics in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to inspect compartments in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'} 
  5. Haga clic en Crear para crear la nueva política.
Nota

Si un pool de nodos pertenece a un compartimento y los recursos de red utilizados por el pool de nodos pertenecen a un compartimento diferente, debe crear políticas en ambos compartimentos de la siguiente manera:

  • En el compartimento del pool de nodos, cree una política con sentencias de política con el siguiente formato:

    Allow any-user to manage cluster-node-pools in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to manage instance-family in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use subnets in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 
  • En el compartimento de recursos de red, cree una política con sentencias de política con el siguiente formato:

    Allow any-user to use subnets in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to read virtual-network-family in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 

Tenga en cuenta que, antes de desplegar el complemento de escala automática del cluster, deberá indicar que desea que el complemento de escala automática del cluster acceda a pools de nodos mediante principales de identidad de carga de trabajo definiendo el parámetro authType en workload en el archivo de configuración. Consulte Paso 2: Creación del archivo de configuración del complemento de escala automática del cluster.

Paso 2: Crear el archivo de configuración del complemento de escala automática del cluster

Nota

En estas instrucciones se describe cómo crear un archivo de configuración del complemento de escala automática del cluster para permitirle desplegar el complemento de escala automática del cluster mediante la CLI. El archivo de configuración contiene argumentos de configuración de par clave/valor aprobados. Debe crear un archivo de configuración al desplegar el complemento mediante la CLI (o mediante la API). También puede utilizar la consola para desplegar el complemento de escala automática del cluster, en cuyo caso debe especificar argumentos de configuración en la interfaz de usuario. Para obtener más información sobre el despliegue del complemento de escala automática del cluster mediante la consola, consulte Instalación de un complemento de cluster.

  1. En un editor adecuado, cree un archivo JSON con el nombre que desee (estas instrucciones suponen que el archivo se denomina cluster-autoscaler-add-on.json) que contenga lo siguiente:

    {
      "addonName": "ClusterAutoscaler",
      "configurations": [
        {
          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"
        }
      ]
    }
  2. En el archivo cluster-autoscaler-add-on.json que ha creado, especifique cada uno de los pools de nodos del cluster que desea gestionar con la escala automática del cluster de Kubernetes.

    Puede especificar varios pools de nodos en el archivo cluster-autoscaler-add-on.json. Tenga en cuenta que la recomendación es que siempre debe tener al menos un pool de nodos que no esté gestionado por la escala automática del cluster de Kubernetes. Tenga en cuenta también que es su responsabilidad escalar manualmente los pools de nodos que no especifique en el archivo de configuración.

    1. En el archivo cluster-autoscaler-add-on.json, localice las siguientes líneas de plantilla:

            "key": "nodes",
            "value": "1:5:{{ node pool ocid 1 }}"

      El valor del parámetro nodes tiene el siguiente formato:

      "value": "<min-nodes>:<max-nodes>:<nodepool-ocid>"

      donde:

      • <min-nodes> es el número mínimo de nodos permitido en el pool de nodos. La escala automática del cluster de Kubernetes no reducirá el número de nodos por debajo de este número.
      • <max-nodes> es el número máximo de nodos permitido en el pool de nodos. La escala automática del cluster de Kubernetes no aumentará el número de nodos por encima de este número. Asegúrese de que el número máximo de nodos especificado no exceda los límites de arrendamiento de la unidad de nodo de trabajador definida para el pool de nodos.
      • <nodepool-ocid> es el OCID de un pool de nodos o más.
    2. Cambie el valor del parámetro nodes para especificar:

      • Número mínimo de nodos permitido en el pool de nodos. Por ejemplo, 1.
      • Número máximo de nodos permitido en el pool de nodos. Por ejemplo, 5.
      • El OCID del pool de nodos que desea que gestione la escala automática del cluster de Kubernetes.

      Por ejemplo:

            "key": "nodes",
            "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq"
    3. Si desea que la escala automática del cluster de Kubernetes gestione un segundo pool de nodos en el cluster, agregue los detalles adecuados para el segundo pool de nodos al valor del parámetro nodes. Por ejemplo:
            "key": "nodes",
            "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
    4. Si desea que la escala automática del cluster de Kubernetes gestione más pools de nodos, agregue los detalles adecuados al valor del parámetro nodes.
    5. Guarde el archivo cluster-autoscaler-add-on.json.
  3. En el archivo cluster-autoscaler-add-on.json que ha creado, utilice el parámetro authType para especificar cómo ha configurado la escala automática del cluster de Kubernetes para acceder a los servicios y recursos de OCI:

    • Si ha configurado un principal de instancia para permitir que la escala automática del cluster de Kubernetes acceda a los servicios y recursos de OCI, defina el parámetro authType en instance.
    • Si ha configurado un principal de identidad de carga de trabajo para permitir que la escala automática del cluster de Kubernetes acceda a los servicios y recursos de OCI, defina el parámetro authType en workload.

    Por ejemplo:

          "key": "authType",
          "value": "workload"

    Tenga en cuenta que instance es el valor por defecto del parámetro authType, por lo que si no especifica explícitamente un valor para authType, la escala automática del cluster de Kubernetes utiliza la identidad de la instancia en la que se está ejecutando para acceder a los servicios y recursos de OCI. Para obtener más información, consulte Paso 1: Configuración de un principal de instancia o principal de identidad de carga de trabajo para activar el complemento de escala automática del cluster para acceder a los pools de nodos.

  4. En el archivo cluster-autoscaler-add-on.json que ha creado, especifique otros parámetros para la escala automática del cluster de Kubernetes. Para obtener información sobre los parámetros que puede definir, consulte Parámetros de la escala automática del cluster de Kubernetes soportados.

    Por ejemplo:

    {
      "configurations": [
        {
          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
        },
        {
          "key": "authType",
          "value": "workload"
        },
        {
          "key": "numOfReplicas",
          "value": "1"
        },
        {
          "key": "maxNodeProvisionTime",
          "value": "15m"
        },
        {
          "key": "scaleDownDelayAfterAdd",
          "value": "15m"
        },
        {
          "key": "scaleDownUnneededTime",
          "value": "10m"
        },
        {
          "key": "annotations",
          "value": "{\"prometheus.io/scrape\":\"true\",\"prometheus.io/port\":\"8086\"}"
        }
      
  5. Guardar y cerrar el archivo cluster-autoscaler-add-on.json.

Paso 3: Desplegar el complemento de la escala automática del cluster en el cluster y confirmar el despliegue correcto

Nota

En estas instrucciones se describe cómo desplegar el complemento de escala automática del cluster mediante la CLI y un archivo de configuración. También puede desplegar el complemento mediante la consola y la API. Para obtener más información, consulte instalación de un complemento de cluster.

  1. Si todavía no lo ha hecho, siga los pasos para configurar el archivo de configuración kubeconfig del cluster y (si es necesario) defina la variable de entorno KUBECONFIG para que apunte al archivo. Tenga en cuenta que debe configurar su propio archivo kubeconfig. No puede acceder a un cluster utilizando un archivo kubeconfig que haya configurado un usuario diferente. Consulte Configuración del acceso a los clusters.
  2. Confirme que el complemento Escala automática del cluster aún no se ha instalado en el cluster introduciendo:
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    donde <cluster-ocid> es el OCID del cluster en el que desea desplegar el complemento de escala automática del cluster.

  3. Para desplegar el complemento de escala automática del cluster en el cluster, introduzca:

    oci ce cluster install-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    donde:

    • --cluster-id <cluster-ocid> es el OCID del cluster en el que desea desplegar el complemento de escala automática del cluster.
    • --from-json file://<path-to-config-file> especifica la ubicación del archivo de configuración del complemento de escala automática del cluster que se va a utilizar al desplegar el complemento. Por ejemplo, --from-json file://./cluster-autoscaler-add-on.json

    Por ejemplo:

    oci ce cluster install-addon --addon-name ClusterAutoscaler --from-json file://./cluster-autoscaler-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Se crea una solicitud de trabajo para instalar los recursos de Kubernetes que necesita la escala automática del cluster de Kubernetes en el cluster.

  4. Opcional: visualice el estado de los pods de escala automática del cluster de Kubernetes para observar el progreso del despliegue introduciendo:
    kubectl get pods -n kube-system | grep cluster-autoscaler
  5. Consulte los logs de la escala automática del cluster de Kubernetes para confirmar que el complemento se ha desplegado correctamente y supervisa actualmente la carga de trabajo de los pools de nodos en el cluster introduciendo:
    kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler

Paso 4: Ver la operación de escala

Puede ver la escala automática del cluster de Kubernetes que ha desplegado cuando escala automáticamente los nodos de trabajador en un pool de nodos. Para que la operación de escala sea más obvia, tenga en cuenta las siguientes sugerencias (tenga en cuenta que estas son solo para fines de observación y pueden ser contrarias a las recomendaciones que se muestran en Recomendaciones al utilizar la escala automática del cluster de Kubernetes en entornos de producción):

  • Observe un cluster que tenga un único pool de nodos (el pool de nodos que gestiona la escala automática del cluster de Kubernetes).
  • Si el cluster que desea observar tiene más de un pool de nodos, restrinja los pods para que se ejecuten en nodos del pool de nodos único que gestiona la escala automática del cluster de Kubernetes. Consulte Asignación de pods a nodos en la documentación de Kubernetes.
  • Comience con un nodo del pool de nodos que gestiona la escala automática del cluster de Kubernetes.
  • En el archivo de configuración de la escala automática del cluster de Kubernetes, especifique el número máximo de nodos permitidos en el pool de nodos. Asegúrese de que el número máximo de nodos especificado no exceda el límite de arrendamiento de la unidad de nodo de trabajador definida para el pool de nodos.

Para ver la escala automática del cluster de Kubernetes escalando automáticamente los nodos de trabajador:

  1. Confirme el número total actual de nodos de trabajador en el cluster introduciendo:
    kubectl get nodes
  2. Defina una aplicación Nginx de ejemplo creando un archivo denominado nginx.yaml en un editor de texto con el siguiente contenido:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
            resources:
              requests:
                memory: "500Mi"

    Tenga en cuenta que se ha definido un límite de solicitud de recurso.

  3. Despliegue la aplicación de ejemplo introduciendo:
    kubectl create -f nginx.yaml
  4. Aumente el número de pods en el despliegue a 100 (de 2) introduciendo:
    kubectl scale deployment nginx-deployment --replicas=100

    La escala automática del cluster de Kubernetes ahora agrega nodos de trabajador al pool de nodos para satisfacer el aumento de la carga de trabajo.

  5. Observe el estado del despliegue introduciendo:
    kubectl get deployment nginx-deployment --watch
  6. Después de unos minutos, visualice el número total de nodos de trabajador aumentado en el cluster introduciendo:
    kubectl get nodes

    Tenga en cuenta que el número de nodos de trabajador que verá dependerá de la unidad del nodo de trabajador y del número máximo de nodos especificados en el archivo de configuración de la escala automática del cluster de Kubernetes.

Paso 5: Limpiar

  1. Suprima la aplicación Nginx de ejemplo introduciendo:
    kubectl delete deployment nginx-deployment
  2. Después de diez minutos, confirme que los nodos de trabajador se han reducido al número original introduciendo:
    kubectl get nodes

Tenga en cuenta que después de suprimir la aplicación Nginx de ejemplo y esperar, puede que vea menos nodos de trabajador, pero aun así, más que el número original. Probablemente se deba a que los pods kube-system se han programado para ejecutarse en esos nodos. Los pods kube-system pueden evitar que la escala automática del cluster de Kubernetes elimine nodos porque el parámetro skip-nodes-with-system-pods de la escala automática está definido en true por defecto.

Actualización del complemento de escala automática del cluster

Nota

En estas instrucciones se describe cómo actualizar el complemento de escala automática del cluster mediante la CLI y un archivo de configuración. También puede actualizar el complemento mediante la consola y la API. Para obtener más información, consulte Actualización de un complemento de cluster.

  1. Abra el archivo de configuración del complemento de escala automática del cluster en un editor adecuado

  2. Agregue, elimine o cambie los parámetros de configuración en el archivo de configuración según sea necesario. Para obtener información sobre los parámetros que puede definir, consulte Parámetros de la escala automática del cluster de Kubernetes soportados.

  3. Actualice el complemento de escala automática del cluster con el comando oci ce cluster update-addon introduciendo:
    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    donde:

    • --cluster-id <cluster-ocid> es el OCID del cluster en el que desea actualizar el complemento de escala automática del cluster.
    • --from-json file://<path-to-config-file> especifica la ubicación del archivo de configuración del complemento de escala automática del cluster que se va a utilizar al actualizar el complemento. Por ejemplo, --from-json file://./cluster-autoscaler-add-on.json

    Por ejemplo:

    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://./cluster-autoscaler-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Se crea una solicitud de trabajo para actualizar los recursos de Kubernetes que necesita la escala automática del cluster de Kubernetes.

  4. Opcional: para ver el estado de los pods de escala automática del cluster de Kubernetes para observar el progreso, introduzca:
    kubectl get pods -n kube-system | grep cluster-autoscaler

Desactivación (y eliminación) del complemento de escala automática del cluster

Nota

En estas instrucciones se describe cómo desactivar y eliminar el complemento de escala automática del cluster mediante la CLI y un archivo de configuración. También puede actualizar el complemento mediante la consola y la API. Para obtener más información, consulte Desactivación (y eliminación) de un complemento de cluster.

  1. Para desactivar (y, opcionalmente, eliminar) el complemento de escala automática del cluster mediante el comando oci ce cluster disable-addon, introduzca:

    oci ce cluster disable-addon --addon-name ClusterAutoscaler --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>

    donde:

    • --cluster-id <cluster-ocid> es el OCID del cluster en el que desea desactivar (y, opcionalmente, eliminar) el complemento de escala automática del cluster.
    • --is-remove-existing-add-on <true|false> especifica si se debe eliminar por completo el complemento de escala automática del cluster (cuando se define en true) o no eliminar el complemento, pero simplemente desactivarlo y no utilizarlo (cuando se define en false). Si desactiva el complemento, Oracle ya no lo actualiza automáticamente cuando hay nuevas versiones disponibles.

    Por ejemplo:

    oci ce cluster disable-addon --addon-name ClusterAutoscaler --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true

    Se crea una solicitud de trabajo para desactivar (y, opcionalmente, eliminar) la escala automática del cluster de Kubernetes.

  2. Opcional: para ver el estado de los pods de escala automática del cluster de Kubernetes para observar el progreso, introduzca:
    kubectl get pods -n kube-system | grep cluster-autoscaler