web-dev-qa-db-fra.com

Comment arrêter un cluster kubernetes?

J'ai démarré le claster sur un moteur de calcul Google à l'aide d'un kube-up.sh. Ce script a créé le nœud maître et le groupe de sbires. Après que je n'en ai plus besoin, je veux arrêter un cluster et arrêter toutes les machines virtuelles afin de ne pas gaspiller de l'argent pour le travail des instants. Lorsque je l'arrête (je viens d'arrêter toutes mes machines virtuelles de cluster, car je ne connais pas d'autre moyen de le faire), puis redémarrer dans un certain temps, mon cluster ne fonctionnera plus. "kubectl get nodes" dispalays ne corrige pas les informations sur les nœuds (par exemple, j'ai A B C nœuds == minions, il affiche uniquement D qui n'existe même pas) et toutes les commandes fonctionnent très très lentement. Peut-être que je l'ai arrêté, ce n'est pas correct. Comment propery arrêter le cluster et arrêter les machines virtuelles afin de le redémarrer dans un certain temps? (pas supprimer)

Quel cluster j'ai:

kubernetes-master             | us-central1-b
kubernetes-minion-group-nq7f  | us-central1-b
kubernetes-minion-group-gh5k  | us-central1-b

Ce qui affiche la commande "kubectl get nodes":

[root@common frest0512]# kubectl get nodes
NAME                           STATUS                     AGE       VERSION
kubernetes-master              Ready,SchedulingDisabled   7h        v1.8.0
kubernetes-minion-group-02s7   Ready                      7h        v1.8.0
kubernetes-minion-group-92rn   Ready                      7h        v1.8.0
kubernetes-minion-group-kn2c   Ready                      7h        v1.8.0

Avant l'arrêt du nœud maître, il était affiché correctement (les noms et le nombre de serviteurs étaient les mêmes).

10
Viacheslav

Merci à Carlos pour l'astuce.

Vous pouvez suivre les étapes ci-dessous pour détacher tous les nœuds actifs du cluster Kubernetes.

1- Accédez au tableau de bord de Kubernetes Engine et sélectionnez le cluster.
https://console.cloud.google.com/kubernetes

enter image description here

2- Accédez aux détails et cliquez sur modifier, définissez la taille du pool sur zéro (0).

enter image description here

3- Valider les nœuds s'arrêtent sur le tableau de bord Compute Engine
https://console.cloud.google.com/compute

enter image description here

7
Teoman shipahi

À moins que je ne comprenne mal, il semble que vous essayez de tuer le cluster en arrêtant les machines virtuelles individuellement via Compute Engine. Si c'est le cas, Container Engine va voir que les machines virtuelles ont été tuées et en démarrer de nouvelles à leur place pour maintenir le cluster en bonne santé. Si vous souhaitez arrêter le cluster, vous devez le faire via l'interface Container Engine. De cette façon, il saura que tuer les nœuds n'était pas une erreur et il arrêtera toutes les machines virtuelles et tous les disques provisionnés.

4
sanche

J'ai trouvé une solution de contournement à ce problème car je faisais face au même problème en raison des frais de Google Cloud lors de la phase de développement. Kubernetes redémarre strictement les machines virtuelles de calcul Google Cloud dès que vous donnez la commande pour arrêter ces instances, car kubenetes est conçu pour cela. Par exemple:

gcloud compute instances stop [instance-name] --async --zone=us-central1-b

arrêtera l'instance une fois, puis kubernetes déclenchera automatiquement le redémarrage lorsqu'il réalisera que l'instance a été arrêtée. Cette commande fonctionnera parfaitement sur toute autre instance mais pas avec celles créées avec le cluster kuberneted.

Parce que kubernetes gère les instances de calcul car c'est sa tendance à redémarrer les instances qui sont arrêtées. Afin d'arrêter l'instance pour réduire le coût opérationnel, vous devez vider les nœuds kuberneted à l'aide de la commande suivante.

Pour arrêter le calcul VM instance.

  • Récupérer la liste od nœuds exécutés à l'aide de kubectl get nodes. Cela répertoriera les nœuds exécutés dans le contexte actuel du cluster kuberneted.
  • Vous devrez peut-être supprimer tous les nœuds en mode drain afin d'arrêter les services kuberneted. UTILISEZ la commande follwing kubectl drain [pod/node-name].
  • Utilisez ensuite la commande gcloud pour arrêter l'instance de calcul à l'aide de la commande suivante gcloud compute instances stop [instances-name] --async --zone=[zone]. Cela arrêtera les VM instances et kubernetes ne déclencheront pas le redémarrage automatique de l'instance car ses nœuds/pods sont déjà en panne.

Pour redémarrer le calcul VM instance

  • Utilisez la commande suivante pour redémarrer le calcul VM instance gcloud compute instances start [instances-name] --async --zone=[zone]. Mais cette commande n'est pas suffisante pour commencer à utiliser votre cluster kubernetes. Vous devez uncordon les nœuds kubernetes que nous avons drainés à l'étape précédente.
  • Puisque nos nœuds sont en mode drain, utilisez cette commande pour les afficher kubectl uncordon [node/pod-name].
  • Maintenant, vous pourrez accéder aux API exposées par le nœud en cluster kubernetes.

Remarque: La même solution pourrait être obtenue en utilisant la console Google Cloud mais je suis un praticien DevOps, donc je continue à créer des scripts pour automatiser les workflows et j'espère que faire un petit script pour le faire pour vous vous aidera à long terme.

1
Gaurav Sharma

Si vous utilisez kubeadm, il n'y a pas de moyen direct pour un arrêt progressif. Seul moyen est réinitialisé

réinitialisation de kubeadm

0
amit23comp