0
votes

Pourquoi le conteneur Rancher a soudainement commencé à s'écraser?

J'utilise Rancher v2.2.2 pour gérer le cluster k8s dans Azure AKS. Tout allait bien pendant environ un an. Tout à coup, mon conteneur Rancher a commencé à redémarrer toutes les 10 à 15 secondes et la console Rancher était inaccessible. J'ai trouvé cela dans les journaux de conteneurs:

***Waiting for server to become available: Get https://localhost:6443/version?timeout=30s: x509: certificate has expired or is not yet valid***

Ensuite, j'ai vérifié le certificat localhost à l'intérieur du conteneur et il semble qu'il vient d'expirer. Ensuite, j'ai décalé le temps vers l'arrière sur l'hôte docker où mon conteneur d'éleveur et mon problème ont disparu et mon éleveur était à nouveau en vie. Mais quelques semaines après j'ai renouvelé les certificats k8s sur Azure et maintenant mon Rancher avec une heure décalée refuse de se connecter au serveur d'API du cluster k8s car il a un certificat qui n'est pas encore valide.

Est-ce que quelqu'un peut m'aider, s'il vous plaît? Des idées pour renouveler le certificat dans le conteneur Rancher?

Merci


2 commentaires

Avez-vous vérifié le guide officiel du site Rancher? Rancher.com: rotation des certificats


Merci. J'ai vérifié ces instructions, mais pour autant que je sache, ces instructions servent à faire pivoter les certificats à l'intérieur du cluster kubernetes. Mon problème est différent, j'ai un problème car mon certificat à l'intérieur du conteneur Rancher a expiré.


4 Réponses :


2
votes

J'ai résolu le problème en créant un nouveau certificat «localhost» dans le conteneur de l'éleveur. Le nouveau certificat est valable 10 ans :)


2 commentaires

Pourriez-vous expliquer comment?


Tous les certificats et clés peuvent être trouvés à l'intérieur du conteneur sur le chemin /var/lib/rancher/management-state/tls.Créez un nouveau csr avec la clé existante comme ceci: openssl req -new -sha256 -key localhost.key -out localhost_new.csr - subj "/ CN = localhost". Ensuite, signez simplement le nouveau csr avec le certificat CA et la clé comme ceci: openssl ca -policy policy_anything -days 3650 -cert ca.crt -keyfile ca.key -in localhost_new.csr -out localhost_new.crt. Après avoir obtenu le nouveau localhost_new.crt, renommez-le simplement en localhost.crt



0
votes

J'ai eu le même problème, pour le résoudre, j'ai dû supprimer le dossier /var/lib/rancher/management-state dans le conteneur en cours d'exécution. Evidemment, la première chose à faire est de faire une sauvegarde des données du conteneur.

$ docker exec -ti sh -c "rm -rf / var / lib / rancher / management-state"

Et puis redémarrez le conteneur juste pour être sûr de recréer le dossier.

$ docker redémarrer

J'espère que ça aide


1 commentaires

Pas besoin de supprimer tout l'état de gestion, lié aux certificats de cluster, si vous les supprimez, cela fonctionnera. Il pourrait y avoir une dépendance dans "l'état de gestion" qui pourrait entraîner une perte



0
votes

J'ai juste le même problème ici sur mon cluster.

Solution de contournement: définissez l'horloge système sur une date antérieure afin que le certificat ne soit pas considéré comme expiré. Pour moi, sur un serveur Ubuntu, c'était réalisable en désactivant NTP, puis en définissant la date et l'heure manuellement;

sudo timedatectl set-ntp off
sudo date --set="2020-07-11 09:03:00.000"
sudo docker exec -it rancher sh -c "rm /var/lib/rancher/management-state/tls/token-node.crt; rm /var/lib/rancher/management-state/tls/localhost.crt"
sudo timedatectl set-ntp on
sudo docker restart rancher

Autre moyen: connectez-vous au conteneur puis supprimez les certificats

sudo docker exec -it rancher sh -c "rm /var/lib/rancher/management-state/tls/token-node.crt; rm /var/lib/rancher/management-state/tls/localhost.crt"

Utilisez la combinaison pour un meilleur résultat sans temps d'arrêt

sudo timedatectl set-ntp off
sudo date --set="2020-05-05 09:03:00.000"


0 commentaires

0
votes

Après la suppression, le redémarrage ne génère pas le certificat localhost, j'ai donc généré manuellement le certificat.

openssl genrsa -out  localhost.key 4096
openssl req -new -key localhost.key -out localhost.csr -subj "/CN=localhost"
openssl x509 -req -in localhost.csr -CA client-ca.crt -CAkey client-ca.key -CAcreateserial -out localhost.crt -days 36500


0 commentaires