Fehlerantwort vom Daemon: {„message“:„Kein solcher Container: kubelet“}

Fehlerantwort vom Daemon: {„message“:„Kein solcher Container: kubelet“}

Beim Hinzufügen eines neuen Knotens zu einem Kubernetes-Cluster erhalte ich diesen Fehler:

+ docker start kubelet
Error response from daemon: {"message":"No such container: kubelet"}
Error: failed to start containers: kubelet
+ sleep 2

Dieser Fehler tritt bei einem Cluster auf, der bereits beschädigt ist. Von den drei Knoten ist nur noch ein einziger übrig. Der verbleibende Knoten hat von vornherein ein Problem bei der Wiederherstellung und Verteilung von Zertifikaten. SSL funktioniert auf diesem Knoten nicht mehr. Zur Information: Der Kubernetes-Cluster wurde über Rancher bereitgestellt. Der etcd-Container startet auf Knoten 3 regelmäßig neu und etcd will nicht auf den anderen Knoten bereitgestellt werden, die ich versuche, wieder in den Cluster zu integrieren.

Kubelet wird in einem Docker-Container gestartet, der selbst von Rancher gestartet wurde, als er den Kubernetes-Cluster erstellte. In Bezug auf die durchgeführten Tests habe ich einen neuen Docker-Container mit etcd neu gestartet, ich habe versucht, von einem Snapshot aus neu zu starten ... nichts erlaubt den Neustart des Clusters. Das Hinzufügen eines neuen Knotens funktioniert ebenfalls nicht. Soweit ich gesehen habe, gibt es auch ein Problem mit von Rancher erstellten SSL-Zertifikaten, das er nicht finden kann

Antwort1

Versuchen Sie, die folgenden Schritte auszuführen:

  1. Bereinigen Sie den Knoten durch Ausführen
docker system prune
docker volume prune

Dadurch werden alle Docker-Volumes gelöscht. Seien Sie vorsichtig, wenn sich
in Ihren Volumes wichtige Daten befinden.

  1. Bereinigen Sie die Rancher/Kubernetes-Laufzeitdaten auf dem Knoten.
rm -rf /etc/cni/ /etc/kubernetes/ /opt/cni/ /var/lib/calico/ /var/lib/cni/ /var/lib/rancher/ /var/run/calico/

Die offiziellen Dokumente zur Knotenbereinigung empfehlen auch die Entfernung von /opt/rke und
/var/lib/etcd. Sie können sie nicht entfernen, da sie Cluster-Etcd-
Snapshots und -Daten enthalten. Dies ist insbesondere dann wichtig, wenn sich
im Cluster nur ein Knoten befindet.

  1. Habe -ed in den Rancher-Container ausgeführt execund den Clusterstatus gehackt (danke
    @ibrokethecloud für den Hinweis):
docker exec -it rancher bash

Im Inneren des Containers:

apt-get update && apt-get -y install vim
kubectl edit cluster c-XXXX  # replace the cluster-id with an actual cluster ID

Der Editor findet den Schlüssel apiEndpoint (er sollte direkt unter
dem status Schlüssel liegen) und entfernt ihn. Beenden Sie den Editor und den Container. Stellen Sie sicher, dass
kubectl angibt, dass der Cluster aktualisiert wurde.

  1. Von der Rancher-Benutzeroberfläche habe ich den Befehl zum Registrieren eines neuen Knotens erhalten.
    Legen Sie einen anderen Namen für den Knoten fest als zuvor, indem Sie
    --node-name dem Docker-Run-Befehl ein hinzufügen (tatsächlich gibt es hierfür unter den erweiterten Einstellungen ein Bearbeitungsfeld
    ). Es sah folgendermaßen aus:
docker run -d --privileged --restart=unless-stopped --net=host \
  -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.6 \
  --server https://rancher.example.com --token XXXXXXXXXXXXXXX --node-name mynode2 \
  --etcd --controlplane --worker

  1. Führen Sie den obigen Befehl auf dem bereinigten Knoten aus. Schließlich wird er
    erfolgreich registriert und RKE startet alle kube-* Container kubelet .

Schau mal:Rancher-Kubelet, Rancher-2-Erste-Schritte.

verwandte Informationen