|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
Dépannage des Rancher Turtles
Ce guide fournit des étapes de dépannage pour les Rancher Turtles et les clusters Cluster API (CAPI). Il couvre les problèmes courants et leurs résolutions pour vous aider à maintenir un environnement stable et fonctionnel.
Avant de lire ce guide, vous pouvez d’abord consulter la documentation officielle troubleshooting du projet CAPI.
Comprendre les subtilités des Rancher Turtles et de CAPI est crucial pour un dépannage efficace. Ce guide vise à vous fournir les connaissances nécessaires pour diagnostiquer et résoudre les problèmes de base dans Rancher Turtles et CAPI.
Conditions préalables
Pour dépanner efficacement les Rancher Turtles et les clusters CAPI, vous avez besoin de :
-
Accès à un terminal avec kubectl configuré pour accéder au cluster de gestion Rancher.
-
Le gestionnaire de plugins Krew pour kubectl installé.
-
L’outil en ligne de commande Helm installé.
Vous pouvez installer Krew en suivant les instructions dans le guide d’installation de Krew.
Comment vérifier les journaux
Vous pouvez visualiser les pods suivants et vérifier leurs journaux dans les espaces de noms suivants :
| Espace de noms | Déploiement | Description |
|---|---|---|
cattle-turtles-system |
rancher-turtles-controller-manager |
Gère l’intégration de Rancher et gère les ressources personnalisées pour Turtles |
fleet-addon-system |
caapf-controller-manager |
Contrôle le cadre du fournisseur d’API de cluster pour les fournisseurs d’infrastructure personnalisés |
cattle-capi-system |
capi-controller-manager |
Contrôleur principal de l’API de cluster qui réconcilie les ressources principales du cluster |
rke2-bootstrap-system |
rke2-bootstrap-controller-manager |
Gère la configuration de démarrage pour les nœuds RKE2 |
rke2-control-plane-system |
rke2-control-plane-controller-manager |
Gère l’initialisation et la gestion des composants du plan de contrôle RKE2 |
*-système |
*-controller-manager |
Gère l’initialisation et la gestion des composants du fournisseur d’infrastructure |
$-bootstrap-system |
$-bootstrap-controller-manager |
Gère la configuration de démarrage pour les fournisseurs personnalisés |
$-control-plane-system |
$-control-plane-controller-manager |
Gère l’initialisation et la gestion des composants du plan de contrôle des fournisseurs personnalisés |
'*' - en fonction du fournisseur d’infrastructure utilisé '$' - en fonction du fournisseur de plan de contrôle/démarrage utilisé, par exemple kubeadm ou rke2
Une façon de surveiller les journaux des pods du plan de contrôle de l’API de cluster est d’utiliser kubectl logs avec le sélecteur d’étiquettes.
kubectl logs -l control-plane=controller-manager -n cattle-turtles-system -f
kubectl logs -l control-plane=controller-manager -n cattle-capi-system -f
kubectl logs -l control-plane=controller-manager -n rke2-bootstrap-system -f
kubectl logs -l control-plane=controller-manager -n rke2-control-plane-system -f
|
Utiliser |
La meilleure méthode pour surveiller les journaux de différents pods est d’utiliser la méthode suivante.
kubectl krew install stern
Vous pouvez ensuite suivre les journaux de tous les pods en temps réel.
kubectl stern . -n cattle-turtles-system -n rke2-bootstrap-system -n rke2-control-plane-system -n cattle-capi-system
ou
kubectl stern -A -l control-plane=controller-manager
Comment gérer les Rancher Turtles et les ressources CAPI
Liste des ressources Rancher et Cluster API
Les utilisateurs demandent souvent comment ils peuvent gérer de longues listes de différents CRD créés par CAPI et Rancher. Voici quelques idées sur la façon de les gérer.
-
Listez toutes les informations d’identification liées à CAPI et à Rancher.
kubectl api-resources | grep 'cattle.io\|cluster.x-k8s.io' -
Découvrez la ressource. Vous pouvez obtenir une explication complète de ce qu’elle fait ou des options de configuration disponibles.
kubectl api-resources | grep clusterclass kubectl explain clusterclass.cluster.x-k8s.io -
Vous recevrez ensuite une description de chaque champ et section de configuration.
kubectl explain clusterclass.spec kubectl explain clusterclass.spec.controlPlane kubectl explain clusterclasses.spec.controlPlane.machineInfrastructure
Liste des objets existants des ressources Rancher et Cluster API
L’erreur la plus courante est d’utiliser l’espace de noms default dans Kubernetes pour votre travail. Cela rend votre configuration vraiment désordonnée et difficile à gérer et à dépanner. Nous recommandons fortement d’utiliser des espaces de noms séparés pour déployer et créer des clusters en aval CAPI et d’éviter d’utiliser les espaces de noms système de Kubernetes, tels que default et kube-*.
Lors de l’application de modèles avec kubectl, spécifiez toujours -n <NAMESPACE> pour provisionner des ressources dans un emplacement connu. Vous pouvez basculer entre les espaces de noms dans KUBECONFIG avec cette commande :
kubectl config view
kubectl config set-context --current --namespace <NAMESPACE>
Avec des espaces de noms séparés, vous pouvez facilement gérer les ressources en suivant cette méthode.
|
Utiliser |
-
Installez les plugins
get-alletlineageen utilisantkrewpourkubectl.kubectl krew install lineage kubectl krew install get-all -
Ensuite, listez toutes les ressources existantes dans l’espace de noms, par exemple
capi-clusters, où votre configuration de cluster en aval est déployée.kubectl get-all -n capi-clustersExemple de sortie :
NAME NAMESPACE AGE configmap/kube-root-ca.crt capi-clusters 23h secret/cluster1-shim capi-clusters 32s serviceaccount/default capi-clusters 23h rke2config.bootstrap.cluster.x-k8s.io/cluster1-mp-0-dm59p capi-clusters 32s rke2config.bootstrap.cluster.x-k8s.io/cluster1-mp-1-gv6kh capi-clusters 32s rke2configtemplate.bootstrap.cluster.x-k8s.io/cluster1-pool0 capi-clusters 33s rke2configtemplate.bootstrap.cluster.x-k8s.io/cluster1-pool1 capi-clusters 33s clusterclass.cluster.x-k8s.io/clusterclass1 capi-clusters 33s cluster.cluster.x-k8s.io/cluster1 capi-clusters 32s machinepool.cluster.x-k8s.io/cluster1-mp-0-d4fdv capi-clusters 32s machinepool.cluster.x-k8s.io/cluster1-mp-1-l86kv capi-clusters 32s clustergroup.fleet.cattle.io/clusterclass1 capi-clusters 33s azureclusteridentity.infrastructure.cluster.x-k8s.io/cluster-identity capi-clusters 33s azuremanagedcluster.infrastructure.cluster.x-k8s.io/cluster1-l2cs6 capi-clusters 32s azuremanagedclustertemplate.infrastructure.cluster.x-k8s.io/cluster capi-clusters 33s azuremanagedcontrolplane.infrastructure.cluster.x-k8s.io/cluster1-rv8v4 capi-clusters 32s azuremanagedcontrolplanetemplate.infrastructure.cluster.x-k8s.io/cluster1-control-plane capi-clusters 33s azuremanagedmachinepool.infrastructure.cluster.x-k8s.io/cluster1-mp-0-78tck capi-clusters 32s azuremanagedmachinepool.infrastructure.cluster.x-k8s.io/cluster1-mp-1-zdscw capi-clusters 32s azuremanagedmachinepooltemplate.infrastructure.cluster.x-k8s.io/cluster1-pool0 capi-clusters 33s azuremanagedmachinepooltemplate.infrastructure.cluster.x-k8s.io/cluster1-pool1 capi-clusters 33s -
Vous pouvez ensuite vérifier la relation entre toutes les ressources d’objet.
kubectl lineage -n capi-clusters cluster.cluster.x-k8s.io/cluster1Sortie :
Comment activer le mode débogage pour SUSE® Rancher Prime Cluster API et les fournisseurs CAPI
-
SUSE® Rancher Prime Cluster API - Pour activer le mode débogage pour SUSE® Rancher Prime Cluster API, vous devez appliquer un correctif au configmap
cattle-system/rancher-configcomme suit :kubectl patch configmap -n cattle-system rancher-config --type merge --patch '{"data":{"rancher-turtles": "managerArguments:\n - --v=5\n"}}'(5 est équivalent à DEBUG)
Cela entraîne le redémarrage du pod Turtles, afin d’utiliser la nouvelle configuration.
-
Fournisseurs CAPI - Modifiez les ressources CAPIProvider pour les fournisseurs où l’augmentation du niveau de journalisation est nécessaire. Changez pour votre niveau désiré :
CAPIProvider.Spec.Manager.Verbosity=5(5 est équivalent à DEBUG)
Comment collecter des informations à partir de Rancher Turtles et CAPI
crust-gather est un projet créé par les développeurs CAPI spécifiquement conçu pour rassembler des journaux et des états de ressources des environnements CAPI. C’est un outil sûr et officiel qui peut être utilisé dans tout type d’environnement (production, test ou développement) pour collecter des informations de diagnostic complètes pour le dépannage.
Vous pouvez l’installer via les instructions suivantes :
kubectl krew install crust-gather
kubectl crust-gather --help
Alternativement, il peut être installé de manière autonome via le script install.sh :
curl -sSfL https://github.com/crust-gather/crust-gather/raw/main/install.sh | sh
crust-gather --help
Vous pouvez spécifier une liste de filtres pour collecter des données. Par défaut, il prend un instantané complet du cluster. Les données sont stockées dans le répertoire crust-gather par défaut. Crust-gather accepte une configuration de filtre prédéfinie pour Rancher ou le cluster enfant. Voir ci-dessous pour des configurations d’exemple.
Exemple de configuration de filtre YAML pour le fichier child-crust-gather.yaml :
filters:
- include_kind:
- Node
- Namespace
- CustomResourceDefinition
- include_group:
- management.cattle.io/.*
- provisioning.cattle.io/.*
- include_namespace:
- cattle.*
- fleet.*
- kube-system
settings:
insecure_skip_tls_verify: true
secrets_file: secrets.txt
Exemple de configuration de filtre YAML pour le fichier rancher-crust-gather.yaml :
filters:
- include_group:
- .*cluster.x-k8s.io/.*
- turtles-capi.cattle.io/.*
- include_kind:
- CustomResourceDefinition
- Node
- Namespace
- include_group:
- management.cattle.io/.*
- provisioning.cattle.io/.*
- include_namespace:
- cattle-turtles-system
- capi-.*
- cattle.*
- fleet.*
- c-.*
- rke2.*
- cert-manager
- kube-system
settings:
insecure_skip_tls_verify: true
secrets_file: secrets.txt
Assurez-vous que le kubeconfig pointe vers le bon cluster, puis exécutez la commande ci-dessous :
kubectl crust-gather collect-from-config -c config.yaml
Utilisation via des drapeaux réguliers :
kubectl crust-gather collect --include-namespace cattle-turtles-system --include-namespace capi-* --include-namespace cattle* --include-namespace c-* --include-namespace=<any-capi-cluster-namespace> --kubeconfig=<KUBECONFIG>
Vous pouvez spécifier un fichier contenant des secrets ou des variables d’environnement avec des chaînes de secrets à exclure.
Par exemple :
kubectl crust-gather collect -s ENV_WITH_SECRET --secrets-file=secrets.txt
Ou exclure toutes les ressources secrètes de la collecte :
kubectl crust-gather collect --exclude-kind Secret
Comment nettoyer les Rancher Turtles et les ressources CAPI
Parfois, le nettoyage de votre infrastructure peut échouer et cela peut entraîner des ressources en attente. Dans cette situation, vous devez supprimer les ressources manuellement.
Gardez à l’esprit que la suppression manuelle des finalizers nécessite un nettoyage manuel des ressources provisionnées par le fournisseur d’infrastructure.
export NAMESPACE=capi-clusters
for RESOURCE in `kubectl get-all -n $NAMESPACE -o name | grep 'cattle.io\|cluster.x-k8s.io'`;
do
echo "Patching $RESOURCE in namespace $NAMESPACE";
kubectl patch $RESOURCE -n $NAMESPACE -p '{"metadata":{"finalizers":[]}}' --type=merge;
kubectl delete $RESOURCE -n $NAMESPACE;
done
Comment désinstaller Rancher Turtles et le projet CAPI
Pour désinstaller Rancher Turtles et les composants CAPI de votre cluster de gestion, suivez ces étapes dans l’ordre :
-
Tout d’abord, supprimez tous les clusters en aval créés avec CAPI. Pour chaque cluster :
kubectl delete -n capi-clusters cluster.cluster.x-k8s.io cluster1Remplacez
capi-clusterspar l’espace de noms où vos clusters sont déployés etcluster1par le nom de votre cluster. Attendez que chaque cluster soit complètement supprimé avant de passer à l’étape suivante. -
Désinstallez le chart Helm de Rancher Turtles :
helm uninstall -n cattle-turtles-system rancher-turtles -
Supprimez toutes les configurations de webhook qui pourraient avoir été créées par les fournisseurs CAPI :
# List all webhook configurations kubectl get validatingwebhookconfigurations.admissionregistration.k8s.io # Delete provider-specific webhooks (examples) kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io azureserviceoperator-validating-webhook-configuration kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io capz-validating-webhook-configuration kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io capi-validating-webhook-configuration kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io rke2-webhook-configuration # Also check and delete mutating webhooks if present kubectl get mutatingwebhookconfigurations kubectl delete mutatingwebhookconfigurations [webhook-name] -
Nettoyez tous les espaces de noms et ressources restants. Les espaces de noms suivants peuvent rester après la désinstallation :
-
cattle-turtles-system
-
rke2-bootstrap-system
-
rke2-control-plane-system
-
capi-system
-
capz-system (ou d’autres espaces de noms spécifiques au fournisseur comme capv-system, capa-system, etc.)
-
capi-clusters (ou d’autres espaces de noms où vous avez déployé des clusters)
Pour supprimer ces espaces de noms :
# First remove any finalizers that might be blocking deletion for NS in cattle-turtles-system rke2-bootstrap-system rke2-control-plane-system capi-system capz-system capi-clusters; do kubectl get namespace $NS -o json | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$NS/finalize" -f - done # Then delete the namespaces kubectl delete namespace cattle-turtles-system rke2-bootstrap-system rke2-control-plane-system capi-system capz-system capi-clusters
-
-
Enfin, supprimez les CRD liés à Cluster API et Rancher Turtles :
# Delete all Cluster API and Rancher Turtles CRDs kubectl get crds | grep 'cluster.x-k8s.io\|turtles-capi.cattle.io' | awk '{print $1}' | xargs kubectl delete crd # Or manually delete them one by one kubectl delete crd clusters.cluster.x-k8s.io kubectl delete crd clusterclasses.cluster.x-k8s.io kubectl delete crd machines.cluster.x-k8s.io kubectl delete crd machinepools.cluster.x-k8s.io kubectl delete crd providers.turtles-capi.cattle.io kubectl delete crd clusterconfigs.turtles-capi.cattle.io # ... and other related CRDsAssurez-vous que tous les clusters sont complètement supprimés avant de retirer ces CRD, sinon vous risquez de laisser des ressources cloud orphelines.