Résolution
Vérifier vos composants master
Pour répertorier les composants master que vous avez enregistrés dans le plan de contrôle Amazon EKS, exécutez la commande suivante :
kubectl get nodes -o wide
Dans la sortie, vous pouvez consulter le nom, la version de Kubernetes, le système d’exploitation et l’adresse IP des composants master.
Pour obtenir des informations supplémentaires sur un composant master spécifique, exécutez la commande suivante :
kubectl describe node/node_name
Remarque : Remplacez node_name par l’Amazon Resource Name (ARN) de votre composant master. Par exemple, ip-AA-BB-CC-DD.us-east-1.compute.internal.
La sortie présente des informations sur le composant master, notamment les étiquettes, les rejets, les informations système et le statut.
Mettre à l’échelle vos composants master
Remarque : Si vos groupes de nœuds apparaissent dans la console Amazon EKS, utilisez un groupe de nœuds gérés pour mettre à l’échelle vos composants master. Sinon, utilisez un groupe de nœuds non gérés.
Utilisez l’une des méthodes suivantes pour mettre à l’échelle vos composants master.
Mettre à l’échelle les composants master avec eksctl
Pour utiliser eksctl afin de mettre à l’échelle vos composants master gérés ou non gérés, exécutez la commande suivante :
eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName
Remarque : Remplacez clusterName par le nom de votre cluster, desiredCount par le nombre de nœuds vers lesquels effectuer la mise à l’échelle, et nodegroupName par le nom du groupe de nœuds.
Mettre à l’échelle les composants master sans eksctl
Pour mettre à l’échelle vos composants master gérés sans eksctl, modifiez la configuration du groupe de nœuds.
Mettre à l’échelle les composants master avec CloudFormation
Pour utiliser AWS CloudFormation afin de mettre à l’échelle vos composants master non gérés, utilisez un modèle CloudFormation pour lancer vos composants master pour Windows ou Linux. Puis, modifiez les paramètres NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize ou NodeAutoScalingGroupMaxSize dans votre pile CloudFormation.
Drainer vos composants master
Important : L’action de drainage isole le composant master de sorte que Kubernetes ne planifie plus de nouveaux pods sur le nœud. Kubernetes supprime les pods qui s'exécutent sur le nœud cible et les empêche de les drainer.
Vous pouvez drainer un groupe de nœuds complet ou un seul composant master.
Drainer l’intégralité du groupe de nœuds
Si vous avez utilisé eksctl pour lancer vos composants master, exécutez la commande suivante :
eksctl drain nodegroup --cluster=clusterName --name=nodegroupName
Remarque : Remplacez clusterName par le nom de votre cluster et nodegroupName par le nom de votre groupe de nœuds.
Pour dissocier un groupe de nœuds drainé, exécutez la commande suivante :
eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo
Remarque : Remplacez clusterName par le nom de votre cluster et nodegroupName par le nom de votre groupe de nœuds.
Si vous n'avez pas utilisé eksctl pour lancer vos compsoants master, exécutez le script suivant pour drainer tous les nœuds d'une version spécifique de Kubernetes :
#!/bin/bash K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
echo "Draining $node"
kubectl drain $node --ignore-daemonsets --delete-local-data
done
Remarque : Remplacez 1.18.8-eks-7c9bda par votre version de Kubernetes.
Pour dissocier les nœuds drainés, exécutez le script suivant :
#!/bin/bash K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
echo "Uncordon $node"
kubectl uncordon $node
done
Remarque : Remplacez 1.18.8-eks-7c9bda par votre version de Kubernetes.
Pour obtenir le numéro de version de votre composant master, exécutez la commande suivante :
kubectl get nodesNAME
Remarque : Remplacez nodesNAME par le nom de votre nœud.
Exemple de sortie :
$ kubectl get nodesNAME STATUS ROLES AGE VERSION
ip-ABC-ACB-DE-ABC.ec2.internal Ready <none> 6d4h v1.18.8-eks-7c9bda
ip-ABC-ABC-DE-ABC.ec2.internal Ready <none> 6d4h v1.18.8-eks-7c9bda
Le numéro de version apparaît dans la colonne VERSION.
Drainer un seul composant master
Si vous n’avez pas utilisé eksctl pour lancer vos composants master ou pour drainer un nœud spécifique uniquement, isolez correctement votre composant master : Exécutez la commande suivante :
kubectl drain node_name --ignore-daemonsets
Remarque : Remplacez node_name par le nom de votre nœud.
Pour annuler l’isolation, exécutez la commande suivante :
kubectl uncordon node_name
Remarque : Remplacez node_name par le nom de votre nœud.
Vous pouvez également migrer vos applications existantes vers un nouveau groupe de composants master.
Supprimer vos composants master
Important : Vous ne pouvez pas annuler une action de suppression.
Si vous utilisez eksctl, exécutez la commande suivante :
eksctl delete nodegroup --cluster=clusterName --name=nodegroupName
Remarque : Remplacez clusterName par le nom de votre cluster et nodegroupName par le nom de votre groupe de nœuds.
Si vous disposez d'un groupe de nœuds gérés, consultez la section Supprimer un groupe de nœuds gérés de votre cluster.
Si vous avez un groupe de nœuds non gérés et que vous avez utilisé un modèle CloudFormation pour lancer vos composants master, supprimez la pile du groupe de nœuds.
Si vous avez un groupe de nœuds non gérés, mais que vous n'avez pas utilisé de modèle CloudFormation, supprimez le groupe Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling. Si vous n’avez pas utilisé de groupe Amazon EC2 Auto Scaling, résiliez l’instance.