1
votes

Redémarrez un pod sur un nœud différent à partir d'un pod dans Kubernetes

J'ai déployé une application Spring Boot sur un pod (pod1) sur un nœud (node1). J'ai également déployé JMeter sur un autre pod (pod2) sur un nœud différent (node2). J'essaie d'effectuer des tests de charge automatisés à partir de pod2. Pour effectuer des tests de charge, je dois redémarrer le pod1 pour chaque cas de test. Comment redémarrer le pod1 à partir du pod2?


0 commentaires

3 Réponses :


1
votes

Pour redémarrer ou supprimer un pod d'un autre pod, vous devez accéder à APIServer. Il existe de nombreuses façons de le faire, vérifiez ceci lien .


2 commentaires

Pouvez-vous élaborer un peu plus? Je suis débutant dans Kubernetes et je ne comprends pas vraiment quel est le lien que vous avez partagé


Autoriser l'explication: Apiserver a un moyen de se protéger des utilisateurs non autorisés. Pour demander quoi que ce soit à Apiserver, vous devez définir un compte de service pour identifier votre pod et attribuer des autorisations à votre compte de service de pod. Le rôle est créé pour définir un groupe d'autorisations pour répertorier et supprimer le pod, etc. RoleBinding est un moyen d'attribuer ce groupe d'autorisations à votre serviceAccount, il connecte le compte de service au rôle.



1
votes

Via kubectl:

Installez kubectl et configurez-le dans le pod2, puis faites kubectl delete pod1 via le shell après chaque test de charge

Via Springboot:

Ajouter une dépendance d'actionneur

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Activer l'arrêt

management.endpoint .shutdown.enabled = true

Demande d'arrêt

curl -X POST IP: port / actionneur / shutdown


6 commentaires

J'ai installé kubectl dans le pod. Comment configurer?


De la même manière que vous l'avez fait dans votre section locale! en utilisant .kube / config


J'utilise Google Cloud, Cloud Shell. Dans Cloud Shell, kubectl était déjà installé et configuré. Pourriez-vous partager un lien de référence à configurer?


Installez sdk cloud.google.com/sdk/docs/quickstarts , puis Les composants gcloud installent l'authentification kubectl : cloud.google.com/sdk/ gcloud / reference / auth / login


J'ai essayé les étapes ci-dessus. Mais cela ne semble pas fonctionner. Il renvoie l'erreur suivante, lorsque j'exécute kubectl get pods . Erreur du serveur (Interdit): les pods sont interdits: Utilisateur "system: serviceaccount: default: default" ne peut pas lister les ressources "pods" dans le groupe d'API "" dans l'espace de noms "default"


L'erreur est due au fait que votre pod obtient automatiquement un compte de service par défaut attribué. 1 - vous devez définir votre propre compte de service 2 - Attribuez ce compte de service à votre pod. 3 - Définissez un rôle avec des attributs suffisants pour accomplir la tâche de suppression du pod. 4 - Définissez une liaison de rôle pour attribuer ce rôle au compte de service.



1
votes

Si vous disposez d'une charge de travail de type déploiement, vous pouvez accéder à Workloads> [Nom du déploiement]> Pods gérés [nom du pod] et supprimer le pod.

Vous pouvez également le faire avec kubectl delete pod [nom du pod]

Si vous disposez d'un nombre minimum de pods pour cet ensemble de déploiement, GKE lancera automatiquement un autre pod, le redémarrant effectivement.

https://cloud.google.com/kubernetes-engine/docs / concepts / déploiement


0 commentaires