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.

Mit dem folgenden Befehl können Sie ermitteln, ob das Container-Image für eine Pod-Arbeitslast erfolgreich abgerufen wurde:
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
Und wenn Sie den folgenden Befehl ausführen:
kubectl get pods
Der 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          79s
Die 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.

Zwei Ermittlungsschritte können durchgeführt werden, indem eine Verbindung zu einem Worker-Knoten über SSH erfolgt.
  1. Überprüfen Sie den Ordner /etc/ssl/certs/ auf Dateien mit dem Namen tkg-<cert_name>.pem, wobei <cert_name> die Eigenschaft „name“ des Zertifikats ist, das in TkgServiceConfiguration hinzugefügt wurde. Wenn die Zertifikate mit jenen in der TkgServiceConfiguration übereinstimmen und die Verwendung einer privaten Registrierung weiterhin nicht funktioniert, fahren Sie mit der Diagnose fort, indem Sie den nächsten Schritt ausführen.
  2. 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, wobei hostname der Hostname/DNS-Name der privaten Registrierung ist, die selbstsignierte Zertifikate verwendet, und port_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.

  3. 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.