|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Fehlerbehebung im SUSE Rancher Prime Server-Kubernetes-Cluster
In diesem Abschnitt wird beschrieben, wie man eine Installation von Rancher auf einem Kubernetes-Cluster behebt.
Relevante Namespaces
Die meiste Fehlerbehebung erfolgt an Objekten in diesen 3 Namespaces.
-
cattle-system-rancherImplementierung und Pods. -
traefik- Ingress-Controller-Pods und -Dienste. -
cert-manager-cert-managerPods.
"Standard-Backend - 404"
Eine Reihe von Dingen kann dazu führen, dass der Ingress-Controller den Datenverkehr nicht an Ihre Rancher-Instanz weiterleitet. In den meisten Fällen liegt es an einer fehlerhaften SSL-Konfiguration.
Zu überprüfende Dinge
Überprüfen Sie, ob Rancher ausgeführt wird
Verwenden Sie kubectl, um den cattle-system System-Namespace zu überprüfen und zu sehen, ob die Rancher-Pods im Status "Running" sind.
kubectl -n cattle-system get pods NAME READY STATUS RESTARTS AGE pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
Wenn der Status nicht Running ist, führen Sie ein describe auf dem Pod aus und überprüfen Sie die Ereignisse.
kubectl -n cattle-system describe pod ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 11m default-scheduler Successfully assigned rancher-784d94f59b-vgqzh to localhost Normal SuccessfulMountVolume 11m kubelet, localhost MountVolume.SetUp succeeded for volume "rancher-token-dj4mt" Normal Pulling 11m kubelet, localhost pulling image "rancher/rancher:v2.0.4" Normal Pulled 11m kubelet, localhost Successfully pulled image "rancher/rancher:v2.0.4" Normal Created 11m kubelet, localhost Created container Normal Started 11m kubelet, localhost Started container
Überprüfen Sie die Rancher-Protokolle
Verwenden Sie kubectl, um die Pods aufzulisten.
kubectl -n cattle-system get pods NAME READY STATUS RESTARTS AGE pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
Verwenden Sie kubectl und den Pod-Namen, um die Protokolle des Pods aufzulisten.
kubectl -n cattle-system logs -f rancher-784d94f59b-vgqzh
Das Zertifikat CN ist "Kubernetes Ingress Controller Fake Certificate"
Verwenden Sie Ihren Browser, um die Zertifikatsdetails zu überprüfen. Wenn dort steht, dass der Common Name "Kubernetes Ingress Controller Fake Certificate" ist, könnte etwas beim Lesen oder Ausstellen Ihres SSL-Zertifikats schiefgelaufen sein.
|
Wenn Sie LetsEncrypt verwenden, um Zertifikate auszustellen, kann es manchmal einige Minuten dauern, bis das Zertifikat ausgestellt wird. |
Überprüfen auf Probleme mit von cert-manager ausgestellten Zertifikaten (von Rancher generiert oder LetsEncrypt)
cert-manager hat 3 Teile.
-
cert-managerPod imcert-managerNamespace. -
IssuerObjekt imcattle-systemNamespace. -
CertificateObjekt imcattle-systemNamespace.
Arbeiten Sie rückwärts und führen Sie ein kubectl describe für jedes Objekt aus und überprüfen Sie die Ereignisse. Sie können herausfinden, was möglicherweise fehlt.
Zum Beispiel gibt es ein Problem mit dem Issuer:
kubectl -n cattle-system describe certificate ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning IssuerNotReady 18s (x23 over 19m) cert-manager Issuer rancher not ready
kubectl -n cattle-system describe issuer ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ErrInitIssuer 19m (x12 over 19m) cert-manager Error initializing issuer: secret "tls-rancher" not found Warning ErrGetKeyPair 9m (x16 over 19m) cert-manager Error getting keypair for CA issuer: secret "tls-rancher" not found
Überprüfen auf Probleme mit Ihren eigenen SSL-Zertifikaten
Ihre Zertifikate werden direkt auf das Ingress-Objekt im cattle-system Namespace angewendet.
Überprüfen Sie den Status des Ingress-Objekts und sehen Sie, ob es bereit ist.
kubectl -n cattle-system describe ingress
Wenn es bereit ist und das SSL immer noch nicht funktioniert, haben Sie möglicherweise ein fehlerhaftes Zertifikat oder Geheimnis.
Überprüfen Sie die Protokolle des nginx-ingress-controllers. Da der nginx-ingress-controller mehrere Container in seinem Pod hat, müssen Sie den Namen des Containers angeben.
kubectl logs -n traefik traefik-6b94b8b688-bngw2 ... W0705 23:04:58.240571 7 backend_ssl.go:49] error obtaining PEM from secret cattle-system/tls-rancher-ingress: error retrieving secret cattle-system/tls-rancher-ingress: secret cattle-system/tls-rancher-ingress was not found
Keine Übereinstimmungen für den Typ "Issuer"
Die von Ihnen gewählte SSL-Konfigurationsoption erfordert, dass cert-manager installiert ist, bevor Rancher installiert wird, andernfalls wird der folgende Fehler angezeigt:
Error: validation failed: unable to recognize "": no matches for kind "Issuer" in version "certmanager.k8s.io/v1alpha1"
Installieren Sie cert-manager und versuchen Sie erneut, Rancher zu installieren.
Kanal-Pods zeigen BEREIT 2/3
Die häufigste Ursache für dieses Problem ist, dass der Port 8472/UDP zwischen den Knoten nicht geöffnet ist. Überprüfen Sie Ihre lokale Firewall, das Netzwerk-Routing oder die Sicherheitsgruppen.
Sobald das Netzwerkproblem behoben ist, sollten die canal Pods nach einem Timeout neu starten, um ihre Verbindungen wiederherzustellen.
Verbindung zu /var/run/docker.sock fehlgeschlagen: ssh: abgelehnt: administrativ verboten (Öffnen fehlgeschlagen)
Einige Ursachen für diesen Fehler sind:
-
Der Benutzer, mit dem Sie sich verbinden möchten, hat keine Berechtigung, auf den Docker-Socket zuzugreifen. Dies kann überprüft werden, indem Sie sich auf dem Host anmelden und den Befehl
docker psausführen:$ ssh user@server user@server$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Siehe Docker als Nicht-Root-Benutzer verwalten, wie Sie dies richtig einrichten.
-
Wenn Sie RedHat/CentOS als Betriebssystem verwenden, können Sie den Benutzer
rootnicht verwenden, um sich mit den Knoten zu verbinden, aufgrund von Bugzilla #1527565. Sie müssen einen separaten Benutzer hinzufügen und ihn so konfigurieren, dass er auf den Docker-Socket zugreifen kann. Siehe Docker als Nicht-Root-Benutzer verwalten, wie Sie dies richtig einrichten. -
Die SSH-Serverversion ist nicht Version 6.7 oder höher. Dies ist erforderlich, damit das Socket-Forwarding funktioniert, das verwendet wird, um über SSH auf den Docker-Socket zuzugreifen. Dies kann überprüft werden, indem Sie
sshd -Vauf dem Host verwenden, mit dem Sie sich verbinden, oder indem Sie netcat verwenden:$ nc xxx.xxx.xxx.xxx 22 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10
Verbindung zu ssh über die Adresse [xxx.xxx.xxx.xxx:xx] fehlgeschlagen: ssh: Handshake fehlgeschlagen: ssh: Authentifizierung fehlgeschlagen, versuchte Methoden [none publickey], keine unterstützten Methoden bleiben übrig.
Die als ssh_key_path angegebene Schlüsseldatei ist nicht korrekt, um auf den Knoten zuzugreifen. Überprüfen Sie, ob Sie das richtige ssh_key_path für den Knoten angegeben haben und ob Sie den richtigen Benutzer zum Verbinden angegeben haben.
Kann nicht mit dem Docker-Daemon unter unix:///var/run/docker.sock verbinden. Läuft der Docker-Daemon?
Der Knoten ist über die konfigurierte address und port nicht erreichbar.
Agent meldet TLS-Fehler.
Bei der Verwendung von Rancher können Sie Fehlermeldungen vom fleet-agent, system-agent oder cluster-agent erhalten, wie die folgende Nachricht:
tls: failed to verify certificate: x509: failed to load system roots and no roots provided; readdirent /dev/null: not a directory
Dies tritt auf, wenn Rancher mit agent-tls-mode konfiguriert wurde, das auf strict gesetzt ist, aber keine cacerts in der cacert-Einstellung gefunden werden konnten. Um das Problem zu lösen, setzen Sie die agent-tls-mode auf system-store oder laden Sie die CA für Rancher hoch, wie in TLS-Secrets hinzufügen beschrieben.
Die Bereitstellung des neuen Clusters ist in "Warten auf Agenten-Check-in" hängen geblieben.
Wenn Rancher agent-tls-mode auf strict gesetzt hat, können neue Cluster möglicherweise nicht bereitgestellt werden und melden eine allgemeine Fehlermeldung "Warten auf Agenten-Check-in". Die Hauptursache dafür ist ähnlich wie im obigen Fall von TLS-Fehlern – der Agent von Rancher kann nicht bestimmen, welche CA Rancher verwendet (oder überprüfen, ob das Zertifikat von Rancher tatsächlich von der angegebenen Zertifizierungsstelle signiert wurde).
Um das Problem zu lösen, setzen Sie agent-tls-mode auf system-store oder laden Sie die CA für Rancher hoch, wie in TLS-Secrets hinzufügen beschrieben.