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).
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
2- Accédez aux détails et cliquez sur modifier, définissez la taille du pool sur zéro (0).
3- Valider les nœuds s'arrêtent sur le tableau de bord Compute Engine
https://console.cloud.google.com/compute
À 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.
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.
kubectl get nodes
. Cela répertoriera les nœuds exécutés dans le contexte actuel du cluster kuberneted.kubectl drain [pod/node-name]
.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.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.drain
, utilisez cette commande pour les afficher kubectl uncordon [node/pod-name]
.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.
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