web-dev-qa-db-fra.com

Réduisez les pods Kubernetes

J'utilise

kubectl scale --replicas=0 -f deployment.yaml

pour arrêter tous mes pods de course. Veuillez me faire savoir s'il existe de meilleures façons de ramener tous les pods en cours d'exécution à zéro en conservant la configuration, les déploiements, etc. intacts, afin que je puisse évoluer plus tard si nécessaire.

35
PPK

Vous faites la bonne action; traditionnellement le verbe scale est appliqué uniquement au nom de la ressource, comme dans kubectl scale deploy my-awesome-deployment --replicas=0, ce qui élimine le besoin de toujours pointer sur le fichier spécifique qui décrit ce déploiement, mais il n'y a rien de mal (à ma connaissance) à utiliser le fichier si cela vous convient mieux.

53
mdaniel

Et c'est parti. Réduit tous les déploiements dans un espace de noms complet:

kubectl get deploy -n <namespace> -o name | xargs -I % kubectl scale % --replicas=0 -n <namespace>

Pour augmenter l'échelle, définissez --replicas=1 (ou tout autre numéro requis) en conséquence

14
R0MARI0

Si vous voulez un patch générique:

namespace=devops-ci-dev
kubectl get deployment -n ${namespace} --no-headers| awk '{print $1}' | xargs -I elhay kubectl patch deployment -n ${namespace} -p '{"spec": {"replicas": 1}}' elhay 

Changement namespace=devops-ci-dev, pour être votre espace de nom.

1
elhay efrat
  kubectl get deployments
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
app-gke   3/3     3            3           13m

  kubectl scale deploy app-gke --replicas=5
deployment.extensions/app-gke scaled


kubectl get pods
NAME                       READY   STATUS              RESTARTS   AGE
app-gke-7b768cd6d7-b25px   2/2     Running             0          11m
app-gke-7b768cd6d7-glj5v   0/2     ContainerCreating   0          4s
app-gke-7b768cd6d7-jdt6l   2/2     Running             0          11m
app-gke-7b768cd6d7-ktx87   2/2     Running             0          11m
app-gke-7b768cd6d7-qxpgl   0/2     ContainerCreating   0          4s

enter image description here

1
Tiago Medici

Si vous avez besoin de plus de granularité avec des pipes ou grep, voici une autre solution Shell:

for i in $(kubectl get deployments | grep -v NAME | grep -v app | awk '{print $1}'); do kubectl scale --replicas=2 deploy $i; done
0
akahuna