web-dev-qa-db-fra.com

comment arrêter / mettre en pause un pod dans kubernetes

J'ai un pod MySQL en cours d'exécution dans mon cluster.
J'ai besoin de suspendre temporairement le pod de travailler sans le supprimer, quelque chose de similaire à docker où le docker stop container-id cmd arrêtera le conteneur et ne le supprimera pas.
Existe-t-il des commandes disponibles dans kubernetes pour suspendre/arrêter un pod?

38
AATHITH RAJENDRAN

Non. Il n'est pas possible d'arrêter un pod et de reprendre plus tard si nécessaire. cependant, vous pouvez envisager l'approche ci-dessous.

Dans les k8, les pods sont extraits à l'aide d'un service. Une façon dont je peux penser à isoler les pods est de mettre à jour le sélecteur de pods dans la définition de service. De cette façon, vous pouvez contrôler le trafic vers les modules à l'aide de la définition de service. Chaque fois que vous souhaitez restaurer la mise à jour du trafic, la valeur du sélecteur de pod revient à ce qu'elle était dans la définition de service.

9
P Ekambaram

Ainsi, comme d'autres l'ont souligné, Kubernetes ne prend pas en charge l'arrêt/la pause de l'état actuel du pod et ne reprend pas si nécessaire. Cependant, vous pouvez toujours y parvenir en n'ayant aucun déploiement opérationnel qui définit le nombre de réplicas à 0.

kubectl scale --replicas=0 deployment/<your-pod>

voir l'aide

# Set a new size for a Deployment, ReplicaSet, Replication Controller, or StatefulSet.
kubectl scale --help

L'échelle permet également aux utilisateurs de spécifier une ou plusieurs conditions préalables pour l'action d'échelle.

Si --current-replicas ou --resource-version est spécifié, il est validé avant que la mise à l'échelle ne soit tentée, et il est garanti que la condition préalable est vraie lorsque la balance est envoyée au serveur.

Exemples:

  # Scale a replicaset named 'foo' to 3.
  kubectl scale --replicas=3 rs/foo

  # Scale a resource identified by type and name specified in "foo.yaml" to 3.
  kubectl scale --replicas=3 -f foo.yaml

  # If the deployment named mysql's current size is 2, scale mysql to 3.
  kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

  # Scale multiple replication controllers.
  kubectl scale --replicas=5 rc/foo rc/bar rc/baz

  # Scale statefulset named 'web' to 3.
  kubectl scale --replicas=3 statefulset/web
77
sulabh chaturvedi