Kubernetes imagePullSecrets funktioniert nicht; "Bild nicht gefunden" bekommen

8

Ich habe einen Kubernetes-Cluster von der Stange, der auf AWS läuft und mit dem Skript kube-up installiert ist. Ich möchte einige Container ausführen, die sich in einem privaten Docker Hub-Repository befinden. Aber ich bekomme immer einen Fehler "nicht gefunden":

%Vor%

Ich habe ein Geheimnis mit einer .dockercfg -Datei erstellt. Ich habe bestätigt, dass es funktioniert, indem Sie das Skript hier ausführen:

%Vor%

Ich habe bestätigt, dass ich nicht das neue Format des .dockercfg-Skripts verwende, meins sieht so aus :

%Vor%

Ich habe versucht, die Base64-Kodierung auf Debian statt auf OS X auszuführen , kein Glück Dort. (Es erzeugt die gleiche Zeichenfolge, wie zu erwarten ist.)

Hier ist das YAML für meinen Replication Controller:

%Vor%

kubectl version :

%Vor%

Irgendwelche Ideen?

    
iameli 10.09.2015, 19:40
quelle

4 Antworten

11

Docker erzeugt eine config.json Datei in ~/.docker/ Es sieht so aus:

%Vor%

Was Sie eigentlich wollen, ist:

%Vor%

Hinweis 3 Dinge:

  • 1) es gibt kein auths wrapping
  • 2) da ist https:// vor dem URL
  • 3) es ist eine Zeile

Dann codieren Sie base64 und verwenden sie als Daten für den .dockercfg name

%Vor%

Beachten Sie, dass die Zeile .dockercfg eine Zeile ist (base64 erzeugt tendenziell eine mehrzeilige Zeichenfolge)

    
MrE 27.09.2015, 04:16
quelle
6

Ein weiterer möglicher Grund, warum "image not found" angezeigt wird, ist, wenn der Namespace Ihres Secret nicht mit dem Namespace des Containers übereinstimmt.

Beispiel: Wenn Ihr Bereitstellungs-YAML wie

aussieht %Vor%

Dann müssen Sie sicherstellen, dass das Secret yaml einen passenden Namespace verwendet:

%Vor%

Wenn Sie keinen Namespace für Ihr Geheimnis angeben, wird es im Standard-Namespace enden und nicht verwendet werden. Es gibt keine Warnmeldung. Ich habe gerade Stunden mit diesem Thema verbracht, also dachte ich, ich würde es hier teilen in der Hoffnung, dass ich jemand anderen die Zeit sparen kann.

    
amarillion 06.12.2016 14:20
quelle
3

Ich habe das gleiche Problem erlebt. Was ich bemerkt habe, ist das im Beispiel ( Ссылка ). dockercfg hat das folgende Format:

%Vor%

Das von docker in meinem Rechner erzeugte sieht ungefähr so ​​aus:

%Vor%

Beim Überprüfen des Quellcodes stellte ich fest, dass es tatsächlich einen Test für diesen Anwendungsfall gibt ( Ссылка )

Ich bestätige Ihnen, dass wenn Sie einfach "auths" wie im Beispiel nehmen und verschlüsseln, es für Sie funktioniert.

Wahrscheinlich sollte die Dokumentation aktualisiert werden. Ich werde ein Ticket auf GitHub erheben.

    
leonfs 18.09.2015 23:58
quelle
3

Ein anderer Grund für diesen Fehler liegt möglicherweise in der Verwendung einer anderen kubectl-Version als der Cluster-Version (z. B. kubectl 1.9.x für einen 1.8.x-Cluster).

Das Format des geheimen Schlüssels, der durch den Befehl kubectl create secret docker-registry erzeugt wurde, hat sich zwischen den Versionen geändert.

Ein 1.8.x-Cluster erwartet ein Geheimnis mit dem folgenden Format:

%Vor%

Aber das Geheimnis, das vom 1.9.x kubectl erzeugt wird, hat dieses Format:

%Vor%

Überprüfen Sie also den Wert der .dockercfg-Daten Ihres Geheimnisses und vergewissern Sie sich, dass es mit dem von Ihrer kubernetes-Clusterversion erwarteten Format übereinstimmt.

    
eschnou 04.01.2018 15:02
quelle

Tags und Links