web-dev-qa-db-fra.com

Comment redémarrer les noeuds kubernetes?

Le statut des nœuds est signalé sous la forme unknown

"conditions": [
          {
            "type": "Ready",
            "status": "Unknown",
            "lastHeartbeatTime": "2015-11-12T06:03:19Z",
            "lastTransitionTime": "2015-11-12T06:04:03Z",
            "reason": "Kubelet stopped posting node status."
          }

whle kubectl get nodes renvoie un statut NOTReady. Qu'est-ce que cela implique et comment résoudre ce problème?

14
user_mda

Obtenir des nœuds

kubectl get nodes

Résultat:

NAME            STATUS     AGE
192.168.1.157   NotReady   42d
192.168.1.158   Ready      42d
192.168.1.159   Ready      42d

Décrire le noeud

Voici un NotReady sur le nœud de 192.168.1.157. Ensuite, déboguez ce nœud non prêt et vous pourrez lire des documents officiels - Application Introspection and Debugging .

kubectl describe node 192.168.1.157

Résultat partiel:

Conditions:
Type          Status          LastHeartbeatTime                       LastTransitionTime                      Reason                  Message
----          ------          -----------------                       ------------------                      ------                  -------
OutOfDisk     Unknown         Sat, 28 Dec 2016 12:56:01 +0000         Sat, 28 Dec 2016 12:56:41 +0000         NodeStatusUnknown       Kubelet stopped posting node status.
Ready         Unknown         Sat, 28 Dec 2016 12:56:01 +0000         Sat, 28 Dec 2016 12:56:41 +0000         NodeStatusUnknown       Kubelet stopped posting node status.

Il y a un OutOfDisk sur mon nœud, puis Kubelet a arrêté de poster le statut du nœud. Donc, je dois libérer de l'espace disque en utilisant la commande df sur mon Ubuntu14.04 je peux vérifier les détails de la mémoire, et en utilisant la commande docker rmi image_id/image_name sous le rôle su I peut supprimer les images inutiles.

Login dans le noeud

Connectez-vous à 192.168.1.157 en utilisant ssh, comme ssh [email protected], et passez au 'su' par Sudo su;

Redémarrer le kubelet

/etc/init.d/kubelet restart

Résultat:

stop: Unknown instance: 
kubelet start/running, process 59261

Récupérer des nœuds

Sur le maître:

kubectl get nodes

Résultat:

NAME            STATUS    AGE
192.168.1.157   Ready     42d
192.168.1.158   Ready     42d
192.168.1.159   Ready     42d

Ok, ce noeud fonctionne bien.

Voici une référence: Kubernetes

17
CHENJIAN

Vous pouvez supprimer le nœud du maître en émettant:

kubectl delete node hostname.company.net

L'état NOTReady signifie probablement que le maître ne peut pas accéder au service Kubelet. Vérifiez si tout va bien sur le client.

5
cristi
GET all Nodes

kubectl get nodes

vérifier le noeud avec le statut not ready 

vous supprimez simplement ce nœud et créez un nouveau nœud et joignez-le au cluster

Kubectl delete node <node name>

Si vous utilisez des services de gestion tels que AWS EKS, un nouveau nœud sera créé automatiquement.Vous pouvez également redémarrer à partir du nœud de redémarrage de la console aws (ec2).

0
Harsh Manvar

J'ai eu ce problème aussi mais il semble que cela dépend de l'offre de Kubernetes et de la manière dont tout a été installé. Dans Azure, si vous utilisez l'installation acs-engine, vous pouvez trouver le script Shell en cours d'exécution pour le provisionner à l'adresse suivante:

/opt/Azure/containers/provision.sh

Pour obtenir une compréhension plus fine, il suffit de le lire et d'exécuter les commandes qu'il spécifie. Pour moi, je devais courir en tant que root:

systemctl enable kubectl
systemctl restart kubectl

Je ne sais pas si l'activation est nécessaire et je ne peux pas dire si cela fonctionnera avec votre installation particulière, mais cela a définitivement fonctionné pour moi. 

0
Chad

Si un nœud est si malsain que le maître ne peut en obtenir le statut, Kubernetes risque de ne pas pouvoir redémarrer le nœud. Et si les contrôles de santé ne fonctionnent pas, quel espoir avez-vous d'accéder au nœud via SSH?

Dans ce cas, il se peut que vous deviez hard-reboot - ou, si votre matériel est dans le cloud, laissez votre fournisseur le faire.

Par exemple, le tableau de bord AWS EC2 vous permet de cliquer avec le bouton droit de la souris sur une instance pour afficher un menu "Etat de l'instance" - à partir duquel vous pouvez redémarrer/terminer un nœud qui ne répond pas.

Avant de faire cela, vous pouvez choisir de kubectl cordon node pour faire bonne mesure. Et vous trouverez peut-être que kubectl delete node constitue un élément important du processus de restauration de la situation, si le noeud ne rejoint pas automatiquement le cluster après un redémarrage.


Pourquoi un nœud deviendrait-il insensible? Certaines ressources ont probablement été épuisées de manière à empêcher le système d'exploitation hôte de traiter les nouvelles demandes en temps voulu. Cela peut être un disque ou un réseau - mais le cas le plus insidieux est le manque de mémoire (MOO), que Linux gère mal .

Pour aider Kubernetes à gérer la mémoire des noeuds en toute sécurité, il est conseillé d’effectuer les deux opérations suivantes:

  • Réserve un peu de mémoire pour le système.
  • Soyez très prudent avec (évitez) les spécifications de mémoire opportunistes pour vos pods. En d'autres termes, n'autorisez pas différentes valeurs de requests ET limits pour la mémoire.

L'idée est d'éviter les complications associées à surcharge de mémoire , car la mémoire est incompressible , et à la fois les tueurs de MOO de Kubernetes et Linux ne peuvent pas se déclencher avant le noeud devenir malsain et inaccessible.

0
nobar