Utilisation du composant d'ajustement automatique de grappe en tant que module complémentaire de grappe

Découvrez comment installer, configurer et utiliser le composant d'ajustement automatique de grappe de Kubernetes en tant que module complémentaire de grappe pour redimensionner automatiquement les groupes de noeuds gérés dans une grappe que vous avez créée à l'aide de Kubernetes Engine (OKE).

L'utilisation du composant d'ajustement automatique de grappe de Kubernetes en tant que module complémentaire de grappe (le "module d'ajustement automatique de grappe") plutôt qu'en tant que programme autonome simplifie la configuration et la maintenance continue. Vous pouvez plus simplement :

  • Activez ou désactivez le composant d'ajustement automatique de grappe.
  • Option d'inclusion et désactivation des mises à jour automatiques par Oracle.
  • Sélectionnez les versions complémentaires du composant d'ajustement automatique de grappe.
  • Gérer les personnalisations propres à un module complémentaire à l'aide des arguments de configuration de paire clé-valeur approuvés.

Les sections suivantes décrivent comment utiliser le module complémentaire d'ajustement automatique de grappe pour gérer les groupes de noeuds :

Déploiement du module complémentaire d'ajustement automatique de grappe

Étape 1 : Configuration d'un principal d'instance ou d'identité de charge de travail pour activer le module complémentaire d'ajustement automatique de grappe pour l'accès aux groupes de noeuds

Pour gérer les groupes de noeuds, le composant d'ajustement automatique de grappe de Kubernetes effectue des actions sur d'autres ressources de service Oracle Cloud Infrastructure. Pour effectuer ces actions sur les ressources de service OCI, le composant d'ajustement automatique de grappe de Kubernetes utilise les données d'identification d'un acteur (ou principal) autorisé. Vous pouvez actuellement configurer les types de principal suivants pour permettre au composant d'ajustement automatique de grappe de Kubernetes d'effectuer des actions sur les ressources de service OCI :

  • Principal d'instance : Le composant d'ajustement automatique de grappe de Kubernetes utilise l'identité de l'instance sur laquelle il s'exécute.
  • Principal d'identité de charge de travail : Le composant d'ajustement automatique de grappe de Kubernetes utilise l'identité d'une ressource de charge de travail exécutée sur une grappe de Kubernetes.

Notez l'utilisation de principaux d'identité de charge de travail pour permettre au composant d'ajustement automatique de grappe de Kubernetes d'accéder aux services et ressources OCI :

  • est pris en charge avec les grappes améliorées, mais pas avec les grappes de base.
  • n'est pris en charge qu'avec le composant d'ajustement automatique de grappe version 1.26 (ou ultérieure)

Utilisation des principaux d'instance pour permettre au module complémentaire d'ajustement automatique de grappe d'accéder aux groupes de noeuds

Vous pouvez configurer un principal d'instance pour permettre au composant d'ajustement automatique de grappe de Kubernetes d'effectuer des actions sur les ressources de service OCI.

Pour configurer un principal d'instance :

  1. Connectez-vous à la console.
  2. Créez un groupe dynamique de niveau compartiment dans le compartiment auquel appartient la grappe, contenant les noeuds de travail (instances de calcul) de la grappe :

    1. Suivez les instructions sous Pour créer un groupe dynamique dans la documentation sur IAM et nommez le nouveau groupe dynamique (par exemple, acme-oke-cluster-autoscaler-dyn-grp).
    2. Entrez une règle incluant les noeuds de travail du compartiment, au format :

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

      <compartment-ocid> est l'OCID du compartiment auquel la grappe appartient.

      Par exemple :

      ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
  3. Créez une politique pour permettre aux noeuds de travail de gérer des groupes de noeuds :

    1. Suivez les instructions sous Pour créer une politique dans la documentation sur le service IAM et attribuez un nom à la nouvelle politique (par exemple, acme-oke-cluster-autoscaler-dyn-grp-policy).
    2. Entrez un énoncé de politique pour permettre aux noeuds de travail de gérer les groupes de noeuds (ainsi que d'autres énoncés de politique liés à l'initialisation des noeuds de travail), au format :

      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>

      où :

      • <dynamic-group-name> est le nom du groupe dynamique que vous avez créé précédemment. Par exemple, acme-oke-cluster-autoscaler-dyn-grp. Notez que si un groupe dynamique ne se trouve pas dans le domaine d'identité par défaut, ajoutez le préfixe dynamic-group '<identity-domain-name>'/'<dynamic-group-name>' au nom du groupe dynamique avec le nom du domaine d'identité. Vous pouvez également spécifier le groupe dynamique à l'aide de son OCID, dans le format dynamic-group id <dynamic-group-ocid>.
      • <compartiment-name> est le nom du compartiment auquel la grappe appartient. Par exemple, acme-oke-cluster-autoscaler-compartment

      Par exemple :

      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
    Note

    Si un groupe de noeuds appartient à un compartiment et que les ressources de réseau utilisées par le groupe de noeuds appartiennent à un autre compartiment, vous devez créer des politiques dans les deux compartiments comme suit :

    • Dans le compartiment du groupe de noeuds, créez une politique avec des énoncés de politique dans le format suivant :

      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>
    • Dans le compartiment des ressources de réseau, créez une politique avec des énoncés de politique dans le format suivant :

      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>

Notez qu'avant de déployer le module complémentaire de composant d'ajustement automatique de grappe, vous indiquez que vous voulez que le module complémentaire de composant d'ajustement automatique de grappe accède aux groupes de noeuds à l'aide des principaux d'instance en réglant le paramètre authType à instance dans le fichier de configuration. Voir Étape 2 : Créer le fichier de configuration du module complémentaire d'ajustement automatique de grappe.

Utilisation des principaux d'identité de charge de travail pour permettre au module complémentaire d'ajustement automatique de grappe d'accéder aux groupes de noeuds

Vous pouvez configurer un principal d'identité de charge de travail pour permettre au composant d'ajustement automatique de grappe de Kubernetes d'effectuer des actions sur les ressources de service OCI. Notez que vous ne pouvez utiliser des principaux d'identité de charge de travail qu'avec des grappes améliorées.

Pour configurer un principal d'identité de charge de travail :

  1. Obtenez l'OCID de la grappe (par exemple, à l'aide de l'onglet Détails de la grappe dans la console).
  2. Suivez les instructions de la section Création d'une politique dans la documentation sur le service IAM et attribuez un nom à la nouvelle politique (par exemple, acme-oke-cluster-autoscaler-policy).
  3. Entrez des énoncés de politique pour autoriser la gestion du groupe de noeuds, dans le format suivant :

    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>'} 

    où :

    • <compartiment-name> est le nom du compartiment auquel la grappe appartient. Par exemple, acme-oke-cluster-autoscaler-compartment
    • <cluster-ocid> est l'OCID de la grappe que vous avez obtenu précédemment.

    Par exemple :

    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'} 
Note

Si un groupe de noeuds appartient à un compartiment et que les ressources de réseau utilisées par le groupe de noeuds appartiennent à un autre compartiment, vous devez créer des politiques dans les deux compartiments comme suit :

  • Dans le compartiment du groupe de noeuds, créez une politique avec des énoncés de politique dans le format suivant :

    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>'} 
  • Dans le compartiment des ressources de réseau, créez une politique avec des énoncés de politique dans le format suivant :

    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>'} 

Notez qu'avant de déployer le module complémentaire de composant d'ajustement automatique de grappe, vous indiquez que vous voulez que le module complémentaire de composant d'ajustement automatique de grappe accède aux groupes de noeuds à l'aide des principaux d'identité de charge de travail en réglant le paramètre authType à workload dans le fichier de configuration. Voir Étape 2 : Créer le fichier de configuration du module complémentaire d'ajustement automatique de grappe.

Étape 2 : Créer le fichier de configuration du module complémentaire d'ajustement automatique de grappe

Note

Ces instructions décrivent comment créer un fichier de configuration complémentaire Cluster Autoscaler pour vous permettre de déployer le module complémentaire Cluster Autoscaler à l'aide de l'interface de ligne de commande. Le fichier de configuration contient des arguments de configuration de paire clé/valeur approuvés. Vous devez créer un fichier de configuration lorsque vous déployez le module complémentaire à l'aide de l'interface de ligne de commande (ou de l'API). Vous pouvez également utiliser la console pour déployer le module complémentaire Cluster Autoscaler, auquel cas vous spécifiez des arguments de configuration dans l'interface utilisateur. Pour plus d'informations sur le déploiement du module complémentaire d'ajustement automatique de grappe à l'aide de la console, voir Installation d'un module complémentaire de grappe.

Étape 2a : Créer le fichier de configuration

  1. Dans un éditeur approprié, créez un fichier JSON avec le nom de votre choix (ces instructions supposent que le fichier est appelé cluster-autoscaler-add-on.json) contenant les éléments suivants :

    {
      "addonName": "ClusterAutoscaler",
      "configurations": [
        {
          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"
        }
      ]
    }
  2. Enregistrez le fichier cluster-autoscaler-add-on.json que vous avez créé.

Étape 2b : Spécifiez les groupes de noeuds à gérer

Dans le fichier cluster-autoscaler-add-on.json que vous avez créé, spécifiez les groupes de noeuds de la grappe que vous voulez que l'ajustement automatique de grappe de Kubernetes gère.

Vous pouvez spécifier que le composant d'ajustement automatique de grappe de Kubernetes doit gérer un seul groupe de noeuds ou plusieurs groupes de noeuds. Il est recommandé de toujours avoir au moins un groupe de noeuds qui n'est pas géré par le composant d'ajustement automatique de grappe de Kubernetes pour exécuter des modules complémentaires de grappe critiques, et de s'assurer que le composant d'ajustement automatique de grappe de Kubernetes ne réduit pas les noeuds sur lesquels il s'exécute. Notez également qu'il vous incombe d'ajuster manuellement tous les groupes de noeuds que vous ne spécifiez pas dans le fichier de configuration.

Vous spécifiez les groupes de noeuds que le composant d'ajustement automatique de grappe de Kubernetes doit gérer de l'une des deux façons suivantes :

  • Vous pouvez spécifier explicitement chaque groupe de noeuds à gérer, à l'aide du paramètre nodes pour spécifier l'OCID de chaque groupe de noeuds.
  • Vous pouvez spécifier que le composant d'ajustement automatique de grappe de Kubernetes détecte le groupe de noeuds (ou groupes de noeuds) à gérer, à l'aide du paramètre nodeGroupAutoDiscovery pour spécifier les marqueurs à mettre en correspondance. Vous pouvez spécifier à la fois des marqueurs définis et des marqueurs à structure libre (pour plus d'informations sur l'ajout de marqueurs aux groupes de noeuds, voir Application de marqueurs aux groupes de noeuds). Le composant d'ajustement automatique de grappe de Kubernetes gère les groupes de noeuds avec des marqueurs correspondant aux marqueurs que vous spécifiez. Notez que le paramètre nodeGroupAutoDiscovery est pris en charge avec Cluster Autoscaler version 1.30.3, version 1.31.1 et version 1.32.0, et versions ultérieures.

Notez que vous ne pouvez pas spécifier à la fois le paramètre nodes et le paramètre nodeGroupAutoDiscovery dans le même fichier cluster-autoscaler-add-on.json. Les deux paramètres sont des alternatives mutuellement exclusives.

Pour utiliser le paramètre nodes pour spécifier explicitement les groupes de noeuds à gérer :

  1. Dans le fichier cluster-autoscaler-add-on.json, localisez les lignes de modèle suivantes :

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

    La valeur du paramètre nodes a le format suivant :

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

    où :

    • <min-nodes> est le nombre minimal de noeuds autorisés dans le groupe de noeuds. Le composant d'ajustement automatique de grappe de Kubernetes ne réduit pas le nombre de noeuds en deçà de cette valeur.
    • <max-nodes> est le nombre maximal de noeuds autorisés dans le groupe de noeuds. Le composant d'ajustement automatique de grappe de Kubernetes n'augmente pas le nombre de noeuds au-dessus de cette valeur. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas les limites de la location pour la forme de noeud de travail définie pour le groupe de noeuds.
    • <nodepool-ocid> est l'OCID du groupe de noeuds à gérer.
  2. Modifiez la valeur du paramètre nodes pour spécifier :

    • Le nombre minimal de noeuds autorisés dans le groupe de noeuds. Par exemple, 1.
    • Le nombre maximal de noeuds autorisés dans le groupe de noeuds. Par exemple : 5.
    • L'OCID du groupe de noeuds que vous souhaitez que le composant d'ajustement automatique de grappe de Kubernetes gère.

    Par exemple :

          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq"
  3. Si vous voulez que le composant d'ajustement automatique de grappe de Kubernetes gère un deuxième groupe de noeuds de la grappe, ajoutez les détails appropriés pour le deuxième groupe de noeuds à la valeur du paramètre nodes. Par exemple :
          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
  4. Si vous voulez que le composant d'ajustement automatique de grappe de Kubernetes gère d'autres groupes de noeuds, ajoutez les détails appropriés à la valeur du paramètre nodes.
  5. Enregistrez le fichier cluster-autoscaler-add-on.json.

Pour utiliser le paramètre nodeGroupAutoDiscovery pour spécifier que le composant d'ajustement automatique de grappe de Kubernetes détecte les groupes de noeuds à gérer :

  1. Dans le fichier cluster-autoscaler-add-on.json que vous avez créé, localisez les lignes de modèle suivantes :

          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"
  2. Supprimez les lignes spécifiant le paramètre nodes et remplacez-les par les lignes suivantes :

          "key": "nodeGroupAutoDiscovery",
          "value": "compartmentId:{{ compartment ocid }},nodepoolTags:{{ tagKey1 }}={{ tagValue1 }}&{{ tagKey2 }}={{ tagValue2 }},min:{{ min }},max:{{ max }}"

    La valeur du paramètre nodeGroupAutoDiscovery a le format suivant :

    "value": "compartmentId:{{<compartment-ocid>}},nodepoolTags:{{<tagKey1>}}={{<tagValue1>}}&{{<tagKey2>}}={{<tagValue2>}},min:{{<min-nodes>}},max:{{<max-nodes>}}"

    où :

    • <compartment-ocid> est l'OCID du compartiment dans lequel se trouve le groupe de noeuds.
    • {{<tagKey1>}}={{<tagValue1>}} indique le nom de la première balise à mettre en correspondance et la valeur de cette balise à mettre en correspondance.
    • {{<tagKey2>}}={{<tagValue2>}} spécifie facultativement le nom d'une deuxième balise à mettre en correspondance et la valeur de cette balise à mettre en correspondance. Vous pouvez spécifier autant de marqueurs que nécessaire (vous n'êtes pas limité à deux). Si vous spécifiez plusieurs marqueurs, tous les marqueurs doivent correspondre.
    • <min-nodes> est le nombre minimal de noeuds autorisés dans le groupe de noeuds. Le composant d'ajustement automatique de grappe de Kubernetes ne réduit pas le nombre de noeuds en deçà de cette valeur.
    • <max-nodes> est le nombre maximal de noeuds autorisés dans le groupe de noeuds. Le composant d'ajustement automatique de grappe de Kubernetes n'augmente pas le nombre de noeuds au-dessus de cette valeur. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas les limites de la location pour la forme de noeud de travail définie pour le groupe de noeuds.
  3. Modifiez la valeur du paramètre nodeGroupAutoDiscovery pour spécifier :

    • OCID du compartiment dans lequel se trouve le groupe de noeuds.
    • Un ou plusieurs noms de marqueur et valeurs de marqueur à mettre en correspondance.
    • Le nombre minimal de noeuds autorisés dans le groupe de noeuds. Par exemple, 1.
    • Le nombre maximal de noeuds autorisés dans le groupe de noeuds. Par exemple : 5.

    Par exemple :

          "key": "nodeGroupAutoDiscovery",
          "value": "compartmentId:ocid1.compartment.oc1..aaaaaaaa______t7a,nodepoolTags:managedby=ca,min:1,max:5"
  4. Si vous voulez que le composant d'ajustement automatique de grappe de Kubernetes gère plus de groupes de noeuds, dans des compartiments différents, ou avec des noms de marqueur et des valeurs de marqueur différents, ou avec des nombres minimum et maximum différents de noeuds autorisés, ajoutez les détails appropriés à la valeur du paramètre nodeGroupAutoDiscovery, séparés par des points-virgules.

    Par exemple :

          "key": "nodeGroupAutoDiscovery",
          "value": "compartmentId:ocid1.compartment.oc1..aaaaaaaa______t7a,nodepoolTags:managedby=ca,min:1,max:5;compartmentId:ocid1.compartment.oc1..aaaaaaaa______jyv,nodepoolTags:managedby=ca,min:2,max:6"
  5. Enregistrez le fichier cluster-autoscaler-add-on.json.

Étape 2c : Inclure des paramètres de configuration supplémentaires

  1. Dans le fichier cluster-autoscaler-add-on.json que vous avez créé, utilisez le paramètre authType pour spécifier comment vous avez configuré le composant d'ajustement automatique de grappe de Kubernetes pour accéder aux services et ressources OCI :

    • Si vous avez configuré un principal d'instance pour permettre au composant d'ajustement automatique de grappe de Kubernetes d'accéder aux services et ressources OCI, réglez le paramètre authType à instance.
    • Si vous avez configuré un principal d'identité de charge de travail pour permettre au composant d'ajustement automatique de grappe de Kubernetes d'accéder aux services et ressources OCI, réglez le paramètre authType à workload.

    Par exemple :

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

    Notez que instance est la valeur par défaut du paramètre authType. Par conséquent, si vous ne spécifiez pas explicitement de valeur pour authType, le composant d'ajustement automatique de grappe de Kubernetes utilise l'identité de l'instance sur laquelle il s'exécute pour accéder aux services et ressources OCI. Pour plus d'informations, voir Étape 1 : Configuration d'un principal d'instance ou d'identité de charge de travail pour activer le module complémentaire d'ajustement automatique de grappe pour l'accès aux groupes de noeuds.

  2. Dans le fichier cluster-autoscaler-add-on.json que vous avez créé, spécifiez d'autres paramètres pour le composant d'ajustement automatique de grappe de Kubernetes. Pour plus d'informations sur les paramètres que vous pouvez définir, voir Paramètres du composant d'ajustement automatique de grappe de Kubernetes pris en charge.

    Par exemple :

    {
      "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\"}"
        }
      
  3. Enregistrez et fermez le fichier cluster-autoscaler-add-on.json.

Étape 3 : Déployer le module complémentaire de composant d'ajustement automatique de grappe sur la grappe et vérifier que le déploiement a réussi

Note

Ces instructions décrivent comment déployer le module complémentaire Cluster Autoscaler à l'aide de l'interface de ligne de commande et d'un fichier de configuration. Vous pouvez également déployer le module complémentaire à l'aide de la console et de l'API. Pour plus d'informations, voir Installation d'un module complémentaire de grappe.

  1. Si vous ne l'avez pas encore fait, suivez les étapes pour configurer le fichier de configuration kubeconfig de la grappe et (s'il y a lieu) définissez la variable d'environnement KUBECONFIG pour qu'elle pointe vers le fichier. Notez que vous devez configurer votre propre fichier kubeconfig. Vous ne pouvez pas accéder à une grappe à l'aide d'un fichier kubeconfig configuré par un autre utilisateur. Voir Configuration de l'accès aux grappes.
  2. Vérifiez que le module complémentaire d'ajustement automatique de grappe n'a pas déjà été installé sur la grappe en entrant :
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    <cluster-ocid> est l'OCID de la grappe sur laquelle vous voulez déployer le module complémentaire d'ajustement automatique de grappe.

  3. Déployez le module complémentaire Cluster Autoscaler sur la grappe en entrant :

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

    où :

    • --cluster-id <cluster-ocid> est l'OCID de la grappe dans laquelle vous voulez déployer le module complémentaire d'ajustement automatique de grappe.
    • --from-json file://<path-to-config-file> indique l'emplacement du fichier de configuration du module complémentaire d'ajustement automatique de grappe à utiliser lors du déploiement du module complémentaire. Par exemple, --from-json file://./cluster-autoscaler-add-on.json

    Par exemple :

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

    Une demande de travail est créée pour installer les ressources Kubernetes requises par le composant d'ajustement automatique de grappe de Kubernetes sur la grappe.

  4. Facultatif : Consultez le statut des pods du composant d'ajustement automatique de grappe de Kubernetes pour observer la progression du déploiement, en entrant :
    kubectl get pods -n kube-system | grep cluster-autoscaler
  5. Consultez les journaux du composant d'ajustement automatique de grappe de Kubernetes pour vérifier que le module complémentaire a été déployé avec succès et qu'il surveille la charge de travail des groupes de noeuds de la grappe, en entrant :
    kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler

Étape 4 : Consulter l'opération d'ajustement

Vous pouvez regarder le composant d'ajustement automatique de grappe de Kubernetes que vous avez déployé à mesure qu'il ajuste automatiquement les noeuds de travail d'un groupe de noeuds. Pour rendre l'opération de mise à l'échelle plus compréhensible, tenez compte des suggestions suivantes (notez qu'elles ne sont fournies qu'à des fins d'observation et qu'elles peuvent être contraires aux recommandations présentées dans Recommandations liées à l'utilisation du composant d'ajustement automatique de grappe de Kubernetes dans les environnements de production) :

  • Observez une grappe comportant un seul groupe de noeuds (le groupe de noeuds géré par le composant d'ajustement automatique de grappe de Kubernetes).
  • Si la grappe que vous souhaitez observer comporte plusieurs groupes de noeuds, faites en sorte que les pods s'exécutent uniquement sur les noeuds du groupe de noeuds géré par le composant d'ajustement automatique de grappe de Kubernetes. Voir Affectation de pods à des noeuds dans la documentation sur Kubernetes.
  • Commencez par un noeud du groupe de noeuds géré par le composant d'ajustement automatique de grappe de Kubernetes.
  • Dans le fichier de configuration du composant d'ajustement automatique de grappe de Kubernetes, spécifiez le nombre maximal de noeuds autorisés dans le groupe de noeuds. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas les limites de la location pour la forme de noeud de travail définie pour le groupe de noeuds.

Pour regarder le composant d'ajustement automatique de grappe de Kubernetes ajuster automatiquement les noeuds de travail :

  1. Vérifiez le nombre total courant de noeuds de travail dans la grappe en entrant :
    kubectl get nodes
  2. Définissez un exemple d'application Nginx en créant un fichier appelé nginx.yaml dans un éditeur de texte, avec le contenu suivant :

    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"

    Notez qu'une limite de demandes de ressources a été définie.

  3. Déployez l'exemple d'application en entrant :
    kubectl create -f nginx.yaml
  4. Augmentez le nombre de pods du déploiement de 2 à 100 en entrant :
    kubectl scale deployment nginx-deployment --replicas=100

    Le composant d'ajustement automatique de grappe de Kubernetes ajoute alors des noeuds de travail au groupe de noeuds pour faire face à la charge de travail accrue.

  5. Observez le statut du déploiement en entrant :
    kubectl get deployment nginx-deployment --watch
  6. Après quelques minutes, affichez le nombre total de noeuds de travail dans la grappe en entrant :
    kubectl get nodes

    Notez que le nombre de noeuds de travail que vous voyez dépend de la forme et du nombre maximal de noeuds spécifiés dans le fichier de configuration du composant d'ajustement automatique de grappe de Kubernetes.

Étape 5 : Nettoyer

  1. Supprimez l'exemple d'application Nginx en entrant :
    kubectl delete deployment nginx-deployment
  2. Après dix minutes, vérifiez que le nombre initial de noeuds de travail a été rétabli, en entrant :
    kubectl get nodes

Notez qu'après avoir supprimé l'exemple d'application Nginx et attendu, vous pouvez voir moins de noeuds de travail, mais que ce nombre peut encore être supérieur au nombre initial. Cela est probablement parce que les pods de kube-système ont été programmés pour s'exécuter sur ces noeuds. Les pods de kube-système peuvent empêcher le vérificateur automatique de grappe de Kubernetes de supprimer des noeuds, car le paramètre skip-nodes-with-system-pods du vérificateur est réglé à true par défaut.

Mise à jour du module complémentaire d'ajustement automatique de grappe

Note

Ces instructions décrivent comment mettre à jour le module complémentaire Cluster Autoscaler à l'aide de l'interface de ligne de commande et d'un fichier de configuration. Vous pouvez également mettre à jour le module complémentaire à l'aide de la console et de l'API. Pour plus d'informations, voir Mise à jour d'un module complémentaire de grappe.

  1. Ouvrez le fichier de configuration du module complémentaire Cluster Autoscaler dans un éditeur approprié

  2. Ajoutez, supprimez ou modifiez les paramètres de configuration dans le fichier de configuration, au besoin. Pour plus d'informations sur les paramètres que vous pouvez définir, voir Paramètres du composant d'ajustement automatique de grappe de Kubernetes pris en charge.

  3. Mettez à jour le module complémentaire de composant d'ajustement automatique de grappe à l'aide de la commande oci ce cluster update-addon, en entrant :
    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    où :

    • --cluster-id <cluster-ocid> est l'OCID de la grappe dans laquelle vous voulez mettre à jour le module complémentaire d'ajustement automatique de grappe.
    • --from-json file://<path-to-config-file> indique l'emplacement du fichier de configuration du module complémentaire d'ajustement automatique de grappe à utiliser lors de la mise à jour du module complémentaire. Par exemple, --from-json file://./cluster-autoscaler-add-on.json

    Par exemple :

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

    Une demande de travail est créée pour mettre à jour les ressources Kubernetes requises par le composant d'ajustement automatique de grappe de Kubernetes.

  4. Facultatif : Consultez le statut des pods du composant d'ajustement automatique de grappe de Kubernetes pour observer la progression, en entrant :
    kubectl get pods -n kube-system | grep cluster-autoscaler

Désactivation (et suppression) du module complémentaire d'ajustement automatique de grappe

Note

Ces instructions décrivent comment désactiver et supprimer le module complémentaire Cluster Autoscaler à l'aide de l'interface de ligne de commande et d'un fichier de configuration. Vous pouvez également mettre à jour le module complémentaire à l'aide de la console et de l'API. Pour plus d'informations, voir Désactivation (et suppression) d'un module complémentaire de grappe.

  1. Désactivez (et éventuellement supprimez) le module complémentaire de composant d'ajustement automatique de grappe à l'aide de la commande oci ce cluster disable-addon, en entrant :

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

    où :

    • --cluster-id <cluster-ocid> est l'OCID de la grappe dans laquelle vous voulez désactiver (et éventuellement supprimer) le module complémentaire d'ajustement automatique de grappe.
    • --is-remove-existing-add-on <true|false> indique soit de supprimer complètement le module complémentaire Cluster Autoscaler (lorsqu'il est réglé à true), soit de ne pas supprimer le module complémentaire, mais simplement de le désactiver et de ne pas l'utiliser (lorsqu'il est réglé à false). Si vous désactivez le module complémentaire, Oracle ne le met plus à jour automatiquement lorsque de nouvelles versions deviennent disponibles.

    Par exemple :

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

    Une demande de travail est créée pour désactiver (et éventuellement supprimer) le composant d'ajustement automatique de grappe de Kubernetes.

  2. Facultatif : Consultez le statut des pods du composant d'ajustement automatique de grappe de Kubernetes pour observer la progression, en entrant :
    kubectl get pods -n kube-system | grep cluster-autoscaler