Utilisation de l'outil de redimensionnement automatique de cluster en tant qu'extension de cluster
Découvrez comment installer, configurer et utiliser l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster pour redimensionner automatiquement les pools de noeuds gérés dans un cluster que vous avez créé à l'aide de Kubernetes Engine (OKE).
L'utilisation de l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster (extension de redimensionnement automatique de cluster) plutôt qu'en tant que programme autonome simplifie la configuration et la maintenance continue. Vous pouvez plus simplement :
- Activez ou désactivez l'outil de redimensionnement automatique de cluster.
- Accepter et désactiver les mises à jour automatiques par Oracle.
- Sélectionnez les versions d'extension de l'outil de redimensionnement automatique de cluster.
- Gérer des personnalisations spécifiques à un module à l'aide d'arguments de configuration de paire clé/valeur approuvés.
Les sections suivantes expliquent comment utiliser l'extension Cluster Autoscaler pour gérer les pools de noeuds :
Déploiement de l'extension d'outil de redimensionnement automatique de cluster
Les instructions ci-dessous expliquent comment déployer l'outil de redimensionnement automatique de cluster Kubernetes en tant qu'extension de cluster (module d'extension de redimensionnement automatique de cluster) pour gérer les pools de noeuds :
- Etape 1 : configuration d'un principal d'instance ou d'un principal d'identité de charge globale pour permettre à l'extension de redimensionnement automatique de cluster d'accéder aux pools de noeuds
- Etape 2 : création du fichier de configuration de l'extension de redimensionnement automatique de cluster
- Etape 3 : déploiement de l'extension Cluster Autoscaler sur le cluster et vérification du déploiement
- Etape 4 : observation de l'opération de redimensionnement
- Etape 5 : nettoyage
Etape 1 : configuration d'un principal d'instance ou d'un principal d'identité de charge globale pour permettre à l'extension de redimensionnement automatique de cluster d'accéder aux pools de noeuds
Pour gérer les pools de noeuds, l'outil de redimensionnement automatique de cluster Kubernetes effectue des actions sur les autres ressources de service Oracle Cloud Infrastructure. Pour effectuer ces actions sur les ressources de service OCI, l'outil de redimensionnement automatique de cluster Kubernetes utilise les informations d'identification d'un acteur (ou principal) autorisé. Vous pouvez actuellement configurer les types de principal suivants pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'effectuer des actions sur les ressources de service OCI :
- Principal d'instance : l'outil de redimensionnement automatique de cluster Kubernetes utilise l'identité de l'instance sur laquelle il est exécuté.
- Principal d'identité de charge globale : l'outil de redimensionnement automatique de cluster Kubernetes utilise l'identité d'une ressource de charge globale exécutée sur un cluster Kubernetes.
Notez l'utilisation de principaux d'identité de charge globale pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'accéder aux services et aux ressources OCI :
- est pris en charge avec les clusters améliorés, mais pas avec les clusters de base.
- est uniquement pris en charge avec Cluster Autoscaler version 1.26 (ou ultérieure)
Utiliser des principaux d'instance pour permettre à l'extension Cluster Autoscaler d'accéder aux pools de noeuds
Vous pouvez configurer un principal d'instance pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'effectuer des actions sur les ressources de service OCI.
Pour configurer un principal d'instance, procédez comme suit :
- Connectez-vous à la console.
-
Créez un groupe dynamique de niveau compartiment contenant les noeuds de processus actif (instances de calcul) dans le cluster :
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Domaines. Sous Domaine d'identité, sélectionnez Groupes dynamiques.
- Sélectionnez le compartiment contenant le cluster.
- Suivez les instructions fournies dans Procédure de création d'un groupe dynamique et donnez un nom au groupe dynamique (par exemple,
acme-oke-cluster-autoscaler-dyn-grp
). -
Entrez une règle qui inclut les noeuds de processus actif du compartiment au format suivant :
ALL {instance.compartment.id = '<compartment-ocid>'}
où
<compartment-ocid>
est l'OCID du compartiment auquel appartient le cluster.Par exemple :
ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
- Sélectionnez Créer un groupe dynamiques.
-
Créez une stratégie pour permettre aux noeuds de processus actif de gérer les pools de noeuds :
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Stratégies.
- Suivez les instructions fournies dans Procédure de création d'une stratégie et donnez un nom à la stratégie (par exemple,
acme-oke-cluster-autoscaler-dyn-grp-policy
). -
Saisissez une instruction de stratégie pour permettre aux noeuds de processus actif de gérer les pools de noeuds (ainsi que d'autres instructions de stratégie liées à l'initialisation des noeuds de processus actif), au format suivant :
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 créé précédemment. Par exemple,acme-oke-cluster-autoscaler-dyn-grp
. Si un groupe dynamique ne se trouve pas dans le domaine d'identité par défaut, faites précéder le nom de groupe dynamique du nom de domaine d'identité au formatdynamic-group '<identity-domain-name>'/'<dynamic-group-name>'
. Vous pouvez également indiquer le groupe dynamique à l'aide de son OCID, au formatdynamic-group id <dynamic-group-ocid>
.<compartment-name>
est le nom du compartiment auquel appartient le cluster. 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
- Sélectionnez Créer pour créer la stratégie.
Remarque
Si un pool de noeuds appartient à un compartiment et que les ressources réseau utilisées par le pool de noeuds appartiennent à un autre compartiment, vous devez créer des stratégies dans les deux compartiments comme suit :
-
Dans le compartiment du pool de noeuds, créez une stratégie avec des instructions de stratégie au 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 réseau, créez une stratégie avec des instructions de stratégie au 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>
Avant de déployer l'extension Cluster Autoscaler, vous indiquez que vous souhaitez que l'extension Cluster Autoscaler accède aux pools de noeuds à l'aide de principaux d'instance en définissant le paramètre authType
sur instance
dans le fichier de configuration. Reportez-vous à Etape 2 : création du fichier de configuration de l'outil de redimensionnement automatique de cluster.
Utiliser les principaux d'identité de charge globale pour permettre à l'extension Cluster Autoscaler d'accéder aux pools de noeuds
Vous pouvez configurer un principal d'identité de charge globale pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'effectuer des actions sur les ressources de service OCI. Notez que vous pouvez uniquement utiliser des principaux d'identité de charge globale avec des clusters améliorés.
Pour configurer un principal d'identité de charge globale, procédez comme suit :
- Obtenez l'OCID du cluster (par exemple, à l'aide de l'onglet Détails du cluster de la console).
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Stratégies.
- Suivez les instructions de Création d'une stratégie et donnez un nom à cette stratégie (par exemple,
acme-oke-cluster-autoscaler-policy
). -
Entrez des instructions de stratégie pour autoriser la gestion des pools de noeuds, au 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ù :
<compartment-name>
est le nom du compartiment auquel appartient le cluster. Par exemple,acme-oke-cluster-autoscaler-compartment
.<cluster-ocid>
est l'OCID du cluster 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'}
- Sélectionnez Créer pour créer la stratégie.
Si un pool de noeuds appartient à un compartiment et que les ressources réseau utilisées par le pool de noeuds appartiennent à un autre compartiment, vous devez créer des stratégies dans les deux compartiments comme suit :
-
Dans le compartiment du pool de noeuds, créez une stratégie avec des instructions de stratégie au 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 réseau, créez une stratégie avec des instructions de stratégie au 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>'}
Avant de déployer l'extension Cluster Autoscaler, vous indiquez que vous souhaitez que l'extension Cluster Autoscaler accède aux pools de noeuds à l'aide de principaux d'identité de charge globale en définissant le paramètre authType
sur workload
dans le fichier de configuration. Reportez-vous à Etape 2 : création du fichier de configuration de l'outil de redimensionnement automatique de cluster.
Etape 2 : création du fichier de configuration de l'extension de redimensionnement automatique de cluster
Ces instructions expliquent comment créer un fichier de configuration d'extension de l'outil de redimensionnement automatique de cluster pour vous permettre de déployer l'extension de l'outil de redimensionnement automatique de cluster à l'aide de la CLI. 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 la CLI (ou de l'API). Vous pouvez également utiliser la console pour déployer l'extension de l'outil de redimensionnement automatique de cluster, auquel cas vous indiquez des arguments de configuration dans l'interface utilisateur. Pour plus d'informations sur le déploiement de l'extension de l'outil de redimensionnement automatique de cluster à l'aide de la console, reportez-vous à Installation d'une extension de cluster.
Etape 2a : créez le fichier de configuration
-
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 }}" } ] }
- Enregistrez le fichier
cluster-autoscaler-add-on.json
que vous avez créé.
Etape 2b : indiquez les pools de noeuds à gérer
Dans le fichier cluster-autoscaler-add-on.json
que vous avez créé, indiquez les pools de noeuds du cluster que l'outil de redimensionnement automatique de cluster Kubernetes doit gérer.
Vous pouvez indiquer que l'outil de redimensionnement automatique de cluster Kubernetes doit gérer un seul pool de noeuds ou plusieurs pools de noeuds. Il est recommandé de toujours disposer d'au moins un pool de noeuds qui n'est pas géré par l'outil de redimensionnement automatique de cluster Kubernetes pour exécuter des extensions de cluster critiques et de s'assurer que l'outil de redimensionnement automatique de cluster Kubernetes ne réduit pas les noeuds sur lesquels il est exécuté. Notez également qu'il est de votre responsabilité de redimensionner manuellement les pools de noeuds que vous ne spécifiez pas dans le fichier de configuration.
Vous pouvez indiquer les pools de noeuds que l'outil de redimensionnement automatique de cluster Kubernetes doit gérer de l'une des deux manières suivantes :
- Vous pouvez indiquer explicitement chaque pool de noeuds à gérer, en utilisant le paramètre
nodes
pour indiquer l'OCID de chaque pool de noeuds. - Vous pouvez indiquer que l'outil de redimensionnement automatique de cluster Kubernetes doit repérer le pool de noeuds (ou les pools de noeuds) à gérer à l'aide du paramètre
nodeGroupAutoDiscovery
pour indiquer les balises à mettre en correspondance. Vous pouvez spécifier à la fois des balises définies et des balises à format libre (pour plus d'informations sur l'ajout de balises aux pools de noeuds, reportez-vous à Application de balises aux pools de noeuds). L'outil de redimensionnement automatique de cluster Kubernetes gère les pools de noeuds avec des balises correspondant aux balises que vous indiquez. Notez que le paramètrenodeGroupAutoDiscovery
est pris en charge avec Cluster Autoscaler version 1.30.3, version 1.31.1 et version 1.32.0, et versions ultérieures.
Vous ne pouvez pas indiquer à 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
afin d'indiquer explicitement les pools de noeuds à gérer :
-
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 pool de noeuds. L'outil de redimensionnement automatique de cluster Kubernetes ne réduira pas le nombre de noeuds en deçà de ce nombre.<max-nodes>
est le nombre maximal de noeuds autorisés dans le pool de noeuds. L'outil de redimensionnement automatique de cluster Kubernetes n'augmentera pas le nombre de noeuds au-delà de ce nombre. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas les limites de location de la forme de noeud de processus actif définie pour le pool de noeuds.<nodepool-ocid>
est l'OCID du pool de noeuds à gérer.
-
Modifiez la valeur du paramètre
nodes
pour indiquer les éléments suivants :- Nombre minimal de noeuds autorisés dans le pool de noeuds. Exemple : 1.
- Nombre maximal de noeuds autorisés dans le pool de noeuds. Par exemple : 5.
- OCID du pool de noeuds que l'outil de redimensionnement automatique de cluster Kubernetes doit gérer.
Par exemple :
"key": "nodes", "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq"
- Si vous voulez que l'outil de redimensionnement automatique de cluster Kubernetes gère un deuxième pool de noeuds dans le cluster, ajoutez les détails appropriés pour le deuxième pool 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"
- Si vous voulez que l'outil de redimensionnement automatique de cluster Kubernetes gère davantage de pools de noeuds, ajoutez les détails appropriés à la valeur du paramètre
nodes
. - Enregistrez le fichier
cluster-autoscaler-add-on.json
.
Afin d'utiliser le paramètre nodeGroupAutoDiscovery
pour indiquer que l'outil de redimensionnement automatique de cluster Kubernetes doit repérer les pools de noeuds à gérer, procédez comme suit :
-
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 }}"
-
Supprimez les lignes indiquant 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 }}"
Le format de la valeur du paramètre
nodeGroupAutoDiscovery
est le 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 pool 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>}}
indique éventuellement 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 balises que nécessaire (vous n'êtes pas limité à deux). Si vous indiquez plusieurs balises, toutes les balises doivent correspondre.<min-nodes>
est le nombre minimal de noeuds autorisés dans le pool de noeuds. L'outil de redimensionnement automatique de cluster Kubernetes ne réduira pas le nombre de noeuds en deçà de ce nombre.<max-nodes>
est le nombre maximal de noeuds autorisés dans le pool de noeuds. L'outil de redimensionnement automatique de cluster Kubernetes n'augmentera pas le nombre de noeuds au-delà de ce nombre. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas les limites de location de la forme de noeud de processus actif définie pour le pool de noeuds.
-
Modifiez la valeur du paramètre
nodeGroupAutoDiscovery
pour indiquer les éléments suivants :- OCID du compartiment dans lequel se trouve le pool de noeuds.
- Noms de balise et valeurs de balise à mettre en correspondance.
- Nombre minimal de noeuds autorisés dans le pool de noeuds. Par exemple : 1.
- Nombre maximal de noeuds autorisés dans le pool de noeuds. Par exemple : 5.
Par exemple :
"key": "nodeGroupAutoDiscovery", "value": "compartmentId:ocid1.compartment.oc1..aaaaaaaa______t7a,nodepoolTags:managedby=ca,min:1,max:5"
- Si vous voulez que l'outil de redimensionnement automatique de cluster Kubernetes gère davantage de pools de noeuds, dans différents compartiments, ou avec des noms de balise et des valeurs de balise différents, ou avec des nombres minimum et maximum de noeuds autorisés différents, ajoutez les détails appropriés à la valeur du paramètre
nodeGroupAutoDiscovery
, séparés par un point-virgule.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"
- Enregistrez le fichier
cluster-autoscaler-add-on.json
.
Etape 2c : inclure des paramètres de configuration supplémentaires
-
Dans le fichier
cluster-autoscaler-add-on.json
que vous avez créé, utilisez le paramètreauthType
pour indiquer la façon dont vous avez configuré l'outil de redimensionnement automatique de cluster Kubernetes pour accéder aux services et aux ressources OCI :- Si vous avez configuré un principal d'instance pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'accéder aux services et aux ressources OCI, définissez le paramètre
authType
surinstance
. - Si vous avez configuré un principal d'identité de charge globale pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'accéder aux services et aux ressources OCI, définissez le paramètre
authType
surworkload
.
Par exemple :
"key": "authType", "value": "workload"
instance
est la valeur par défaut du paramètreauthType
. Par conséquent, si vous n'indiquez pas explicitement de valeur pourauthType
, l'outil de redimensionnement automatique de cluster Kubernetes utilise l'identité de l'instance sur laquelle il est exécuté pour accéder aux services et aux ressources OCI. Pour plus d'informations, reportez-vous à Etape 1 : configuration d'un principal d'instance ou d'un principal d'identité de charge globale pour permettre à l'extension de redimensionnement automatique de cluster d'accéder aux pools de noeuds. - Si vous avez configuré un principal d'instance pour permettre à l'outil de redimensionnement automatique de cluster Kubernetes d'accéder aux services et aux ressources OCI, définissez le paramètre
-
Dans le fichier
cluster-autoscaler-add-on.json
que vous avez créé, indiquez d'autres paramètres pour l'outil de redimensionnement automatique de cluster Kubernetes. Pour plus d'informations sur les paramètres que vous pouvez définir, reportez-vous à Paramètres de l'outil de redimensionnement automatique de cluster 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\"}" }
- Enregistrez et fermez le fichier
cluster-autoscaler-add-on.json
.
Etape 3 : déploiement de l'extension Cluster Autoscaler sur le cluster et vérification du déploiement
Ces instructions expliquent comment déployer l'extension de l'outil de redimensionnement automatique de cluster à l'aide de la CLI 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, reportez-vous à la section Installing a Cluster Add-on.
-
Si vous ne l'avez pas encore fait, suivez les étapes permettant de configurer le fichier de configuration Kubeconfig du cluster et (si nécessaire) de définir la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers le fichier. Vous devez configurer votre propre fichier Kubeconfig. Vous ne pouvez pas accéder à un cluster à l'aide d'un fichier Kubeconfig configuré par un autre utilisateur. Reportez-vous à Configuration de l'accès à un cluster.
- Vérifiez que le module complémentaire Cluster Autoscaler n'a pas encore été installé sur le cluster en saisissant la commande suivante :
oci ce cluster list-addons --cluster-id <cluster-ocid>
où
<cluster-ocid>
est l'OCID du cluster sur lequel déployer l'extension de redimensionnement automatique de cluster. -
Déployez l'extension de l'outil de redimensionnement automatique de cluster sur le cluster en saisissant ce qui suit :
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 du cluster dans lequel déployer l'extension de redimensionnement automatique de cluster.--from-json file://<path-to-config-file>
indique l'emplacement du fichier de configuration de l'extension Cluster Autoscaler à utiliser lors du déploiement de l'extension. 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 l'outil de redimensionnement automatique de cluster Kubernetes sur le cluster.
- Facultatif : visualisez le statut des pods de l'outil de redimensionnement automatique de cluster Kubernetes pour observer la progression du déploiement, en saisissant ce qui suit :
kubectl get pods -n kube-system | grep cluster-autoscaler
- Affichez les journaux de l'outil de redimensionnement automatique de cluster Kubernetes pour vérifier que l'extension a été déployée et qu'elle surveille actuellement la charge globale des pools de noeuds dans le cluster en saisissant ce qui suit :
kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler
Etape 4 : observation de l'opération de redimensionnement
Vous pouvez observer l'outil de redimensionnement automatique de cluster Kubernetes que vous avez déployé pendant qu'il redimensionne automatiquement les noeuds de processus actif dans un pool de noeuds. Pour rendre l'opération de redimensionnement plus évidente, tenez compte des suggestions suivantes (celles-ci concernent l'observation uniquement et peuvent être contraires aux recommandations présentées dans Recommandations relatives à l'utilisation de l'outil de redimensionnement automatique de cluster Kubernetes dans des environnements de production) :
- Observez un cluster disposant d'un pool de noeuds unique (pool de noeuds géré par l'outil de redimensionnement automatique de cluster Kubernetes).
- Si le cluster à observer comporte plusieurs pools de noeuds, limitez l'exécution des pods sur les noeuds du pool de noeuds unique géré par l'outil de redimensionnement automatique de cluster Kubernetes. Reportez-vous à Affectation de pods aux noeuds dans la documentation Kubernetes.
- Commencez par un noeud du pool de noeuds géré par l'outil de redimensionnement automatique de cluster Kubernetes.
- Dans le fichier de configuration de l'outil de redimensionnement automatique de cluster Kubernetes, indiquez le nombre maximal de noeuds autorisés dans le pool de noeuds. Assurez-vous que le nombre maximal de noeuds que vous spécifiez ne dépasse pas la limite de location de la forme de noeud de processus actif définie pour le pool de noeuds.
Pour voir le redimensionnement automatiquement des noeuds de processus actif effectué par l'outil de redimensionnement automatique de cluster Kubernetes, procédez comme suit :
- Vérifiez le nombre total actuel de noeuds de processus actif dans le cluster en saisissant ce qui suit :
kubectl get nodes
-
Définissez une application échantillon Nginx en créant un fichier nommé
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"
Une limite de demande de ressource a été définie.
- Déployez l'application échantillon en saisissant ce qui suit :
kubectl create -f nginx.yaml
- Augmentez le nombre de pods dans le déploiement pour le définir sur 100 (valeur de départ : 2) en saisissant ce qui suit :
kubectl scale deployment nginx-deployment --replicas=100
A présent, l'outil de redimensionnement automatique de cluster Kubernetes ajoute des noeuds de processus actif au pool de noeuds pour répondre à l'augmentation de la charge globale.
- Observez le statut du déploiement en saisissant ce qui suit :
kubectl get deployment nginx-deployment --watch
- Au bout de quelques minutes, visualisez le nombre total de noeuds de processus actif dans le cluster après augmentation en saisissant ce qui suit :
kubectl get nodes
Le nombre de noeuds de processus actif affiché dépend de la forme de noeud de processus actif et du nombre maximal de noeuds spécifiés dans le fichier de configuration de l'outil de redimensionnement automatique de cluster Kubernetes.
Etape 5 : nettoyage
- Supprimez l'application échantillon Nginx en saisissant ce qui suit :
kubectl delete deployment nginx-deployment
- Au bout de dix minutes, vérifiez que le nombre de noeuds de processus actif a été réduit au nombre d'origine en saisissant ce qui suit :
kubectl get nodes
Après avoir supprimé l'application échantillon Nginx et attendu un peu, le nombre de noeuds de processus actif affiché est moindre mais quand même supérieur au nombre d'origine. Cela est probablement dû au fait que des pods kube-system ont été programmés pour être exécutés sur ces noeuds. Les pods kube-system peuvent empêcher l'outil de redimensionnement automatique de cluster Kubernetes d'enlever des noeuds car le paramètre skip-nodes-with-system-pods
de l'outil est défini sur true
par défaut.
Mise à jour de l'extension de l'outil de redimensionnement automatique de cluster
Ces instructions expliquent comment mettre à jour l'extension de l'outil de redimensionnement automatique de cluster à l'aide de la CLI et d'un fichier de configuration. Vous pouvez également mettre à jour le module à l'aide de la console et de l'API. Pour plus d'informations, reportez-vous à Mise à jour d'une extension de cluster.
-
Ouvrir le fichier de configuration de l'extension Cluster Autoscaler dans un éditeur approprié
-
Ajoutez, supprimez ou modifiez les paramètres de configuration dans le fichier de configuration, le cas échéant. Pour plus d'informations sur les paramètres que vous pouvez définir, reportez-vous à Paramètres de l'outil de redimensionnement automatique de cluster Kubernetes pris en charge.
- Mettez à jour le module complémentaire Cluster Autoscaler à l'aide de la commande oci ce cluster update-addon en saisissant ce qui suit :
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 du cluster dans lequel mettre à jour l'extension de redimensionnement automatique de cluster.--from-json file://<path-to-config-file>
indique l'emplacement du fichier de configuration du module complémentaire de l'outil de redimensionnement automatique de cluster à utiliser lors de la mise à jour du module. 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 l'outil de redimensionnement automatique de cluster Kubernetes.
- Facultatif : visualisez le statut des pods de l'outil de redimensionnement automatique de cluster Kubernetes pour observer la progression, en saisissant ce qui suit :
kubectl get pods -n kube-system | grep cluster-autoscaler
Désactivation (et suppression) de l'extension de redimensionnement automatique de cluster
Ces instructions expliquent comment désactiver et supprimer l'extension de l'outil de redimensionnement automatique de cluster à l'aide de la CLI et d'un fichier de configuration. Vous pouvez également mettre à jour le module à l'aide de la console et de l'API. Pour plus d'informations, reportez-vous à Désactivation (et suppression) d'une extension de cluster.
-
Désactivez (et enlevez éventuellement) le module complémentaire Cluster Autoscaler à l'aide de la commande oci ce cluster disable-addon, en saisissant ce qui suit :
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 du cluster dans lequel désactiver (et éventuellement enlever) l'extension de redimensionnement automatique de cluster.--is-remove-existing-add-on <true|false>
indique soit d'enlever complètement le module complémentaire Cluster Autoscaler (lorsque la valeur est définie surtrue
), soit de ne pas enlever le module, mais simplement de le désactiver et de ne pas l'utiliser (lorsque la valeur est définie surfalse
). Si vous désactivez le module, 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 enlever) l'outil de redimensionnement automatique de cluster Kubernetes.
- Facultatif : visualisez le statut des pods de l'outil de redimensionnement automatique de cluster Kubernetes pour observer la progression, en saisissant ce qui suit :
kubectl get pods -n kube-system | grep cluster-autoscaler