
Also gut, ich versuche, ein privates Docker-Image in Kubernetes zu veröffentlichen, und stoße dabei auf einige merkwürdige Probleme.
Ich beginne mit der Anmeldung bei Docker
docker login -u $DOCKER_USER -p $DOCKER_TOKEN
und das wird mein Passwort in einer Konfigurationsdatei für mich speichern, also führe ich dies aus
kubectl create secret generic regcred --from-file=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson
Ich würde erwarten, dass die URL in der Datei abgerufen wird config.json
, aber ich erhalte diesen Fehler
The connection to the server localhost:8080 was refused - did you specify the right host or port?
Daher dachte ich, ich könnte auch gleich den Server angeben
kubectl create secret generic regcred --from-file=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson --server=https://index.docker.io/v1/
Aber immer noch kein Glück.
error: EOF
2020-01-12T19:45:39.7433187Z stdout P Please enter Username:
und da dies auf einem Build-Server läuft, kann ich den Benutzernamen nicht eingeben.
Was also übersehe ich hier?
Antwort1
kubectl create secret generic regcred --from-file=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson --server=https://index.docker.io/v1/
Sie verwechseln das --server=
Argument mit kubectl
, das den Kubernetes-Server bestimmt, mit dem eine Verbindung hergestellt wird, mit--docker-server=
Sie sollten den bereitgestellten kubectl create secret docker-registry
Befehl (anstelle des generic
Typs) verwenden, da der Secret
von der spezialisierten Version erstellte Befehlnichtnur die .docker/config.json
in den Cluster hochgeladene Datei – sie sind strukturell unterschiedlich
Auch:
Die Verbindung zum Server localhost:8080 wurde abgelehnt – haben Sie den richtigen Host oder Port angegeben?
ist ein sicheres Zeichen dafür, dass Sie keine korrekt konfigurierte Kubeconfig haben, sodass Sie jeden kubectl
Befehl, der etwas Sinnvolles tut, vergessen können, bis Sie dieses Problem behoben haben