Sie können eine externe Containerregistrierung mit TKG-Cluster-Pods verwenden.
Fehlerbehebung beim Abrufen von Images aus einer Containerregistrierung
Wenn Sie das TKG mit den vertrauenswürdigen Zertifikaten konfigurieren und das selbstsignierte Zertifikat zur kubeconfig-Datei des Clusters hinzufügen, sollten Sie in der Lage sein, erfolgreich ein Container-Image aus einer privaten Registrierung abzurufen, welche dieses selbstsignierte Zertifikat verwendet.
kubectl describe pod PODNAME
Diese Befehle zeigen detaillierte Status- und Fehlermeldungen für einen bestimmten Pod an. Beispiel für den Versuch, ein Image vor dem Hinzufügen benutzerdefinierter Zertifikate zum Cluster abzurufen:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 33s default-scheduler ... Normal Image 32s image-controller ... Normal Image 15s image-controller ... Normal SuccessfulRealizeNSXResource 7s (x4 over 31s) nsx-container-ncp ... Normal Pulling 7s kubelet Waiting test-gc-e2e-demo-ns/testimage-8862e32f68d66f727d1baf13f7eddef5a5e64bbd-v10612 Warning Failed 4s kubelet failed to get images: ... Error: ... x509: certificate signed by unknown authority
kubectl get pods
ErrImagePull
wird auch in der allgemeinen Pod-Statusansicht angezeigt:
NAME READY STATUS RESTARTS AGE testimage-nginx-deployment-89d4fcff8-2d9pz 0/1 Pending 0 17s testimage-nginx-deployment-89d4fcff8-7kp9d 0/1 ErrImagePull 0 79s testimage-nginx-deployment-89d4fcff8-7mpkj 0/1 Pending 0 21s testimage-nginx-deployment-89d4fcff8-fszth 0/1 ErrImagePull 0 50s testimage-nginx-deployment-89d4fcff8-sjnjw 0/1 ErrImagePull 0 48s testimage-nginx-deployment-89d4fcff8-xr5kg 0/1 ErrImagePull 0 79sDie Fehler „x509: Zertifikat von unbekannter Zertifizierungsstelle signiert“ und „ErrImagePull“ geben an, dass der Cluster nicht mit dem korrekten Zertifikat konfiguriert ist, um eine Verbindung zur Registrierung des privaten Containers herzustellen. Entweder fehlt das Zertifikat oder es ist falsch konfiguriert.
Wenn nach der Konfiguration der Zertifikate Fehler beim Herstellen einer Verbindung zu einer privaten Registrierung auftreten, können Sie überprüfen, ob in der Konfiguration angewendete Zertifikate auf den Cluster angewendet werden. Sie können mithilfe von SSH überprüfen, ob die Zertifikate ordnungsgemäß in ihrer Konfiguration angewendet wurden.
- Überprüfen Sie den Ordner
/etc/ssl/certs/
auf Dateien mit dem Namentkg-<cert_name>.pem
, wobei<cert_name>
die Eigenschaft „name“ des Zertifikats ist, das inTkgServiceConfiguration
hinzugefügt wurde. Wenn die Zertifikate mit jenen in derTkgServiceConfiguration
übereinstimmen und die Verwendung einer privaten Registrierung weiterhin nicht funktioniert, fahren Sie mit der Diagnose fort, indem Sie den nächsten Schritt ausführen. - Führen Sie mithilfe von selbstsignierten Zertifikaten den folgenden openssl-Verbindungstest für den Zielserver durch, indem Sie den Befehl
openssl s_client -connect hostname:port_num
ausführen, wobeihostname
der Hostname/DNS-Name der privaten Registrierung ist, die selbstsignierte Zertifikate verwendet, undport_num
die Nummer des Ports ist, auf dem der Dienst ausgeführt wird (für HTTPS in der Regel 443).Sie können überprüfen, welcher Fehler von openssl ausgegeben wird, wenn Sie versuchen, eine Verbindung mit dem Endpunkt herzustellen, der selbstsignierte Zertifikate verwendet, und die Situation von dort aus beheben, indem Sie beispielsweise die richtigen Zertifikate zur
TkgServiceConfiguration
hinzufügen. Wenn der TKG-Cluster mit dem falschen Zertifikat eingebettet ist, müssen Sie die Konfiguration mit den richtigen Zertifikaten aktualisieren, den TKG-Cluster löschen und ihn dann mit der Konfiguration neu erstellen, die die korrekten Zertifikate enthält. - Stellen Sie sicher, dass der Inhalt der Datenzuordnung des geheimen Schlüssels doppelt base64-codiert ist. Doppelte Base64-Codierung ist erforderlich. Wenn der Inhalt des Datenzuordnungswerts nicht doppelt Base64-codiert ist, kann die resultierende PEM-Datei nicht verarbeitet werden.