web-dev-qa-db-fra.com

ne peut pas supprimer les pods dans kubernetes

J'ai essayé d'installer dgraph (serveur unique) en utilisant kubernetes, maintenant tout ce dont j'ai besoin est de supprimer les pods créés. Je l'ai supprimé en utilisant kubectl delete pod pod-name, le résultat montrant "pod supprimé" mais encore une fois le pod se recréant, il continue de se répliquer. J'ai besoin de ces gousses de mes kubernetes. Qu'est-ce que je devrais faire maintenant?

7
AATHITH RAJENDRAN

Comme vous l'avez spécifié, vous avez créé votre serveur dgraph à l'aide de ce https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml =, Utilisez donc celui-ci pour supprimer vos ressources que vous avez créées:

$ kubectl delete -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml
5
Shudipta Sharma

j'ai fait face au même problème. Exécutez la commande "kubectl get deployment", vous obtiendrez le déploiement respectif sur votre pod. copiez-le puis exécutez la commande "kubectl delete deployment xyz" puis cochez. il n'y aura pas de nouveau pod.

3
hk'

Comme la réponse de @Shudipta Sharma est évidemment la bonne façon de supprimer les pods. Je voudrais juste m'assurer que l'auteur comprendra pourquoi cela se produit. La raison en est "l'état d'esprit" des Kubernetes dans lesquels les Pods sont considérés comme des entités éphémères jetables. Au fur et à mesure que les pods vont et viennent, les StatefulSets sont un moyen de garantir qu'un nombre donné de pods avec des identités uniques sera exécuté à tout moment. Atteindre le fichier yaml que vous avez utilisé pour déployer:

# This StatefulSet runs 1 pod with one Zero, one Alpha & one Ratel containers.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: dgraph
spec:
  serviceName: "dgraph"
  replicas: 1

En déployant cela, vous dites essentiellement que vous voulez que Kubernetes exécute toujours 1 réplique de ce pod, à tout moment. Lorsque vous supprimez le pod, cette condition n'est plus vraie, donc après la suppression, un autre pod apparaît pour vous assurer que la condition ci-dessus sera valide. La façon dont @Shudipta Sharma a fourni est simplement la suppression de cet StatefulSet afin que vous n'ayez plus l'état souhaité qui gardera un œil sur le nombre de pods en cours d'exécution.

Vous pouvez trouver plus d'informations à ce sujet dans la documentation de Kubernetes sur:

StatefulSets

état souhaité du cluster

En savoir plus sur les objets Kubernetes et la différence entre chacun d'eux

1
aurelius

Les pods dans kubernetes dépendent également de son type. Comme

  • Contrôleurs de réplication
  • Ensembles de répliques
  • Statefulsets
  • Déploiements
  • Ensembles de démons
  • Cosse

Faire kubectl describe pod <podname> et vérifie

apiVersion: apps/v1
kind: StatefulSet
metadata:

Maintenant, faites kubectl get <pod-kind>
Enfin, supprimez le même et le pod sera également supprimé.

1
Nikhil Kumar

Vous pouvez effectuer une suppression de pod gracieuse avec la commande suivante:

kubectl delete pods <pod>

Si vous souhaitez supprimer un pod de force en utilisant la version kubectl> = 1.5, procédez comme suit:

kubectl delete pods <pod> --grace-period=0 --force

Si vous utilisez une version de kubectl <= 1.4, vous devez omettre l'option --force et utiliser:

kubectl delete pods <pod> --grace-period=0

Si même après ces commandes, le pod est bloqué sur l'état inconnu, utilisez la commande suivante pour supprimer le pod du cluster:

kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'
0
user4477122