Non riesco a far funzionare Kubernetes con la mia immagine privata del registro hub.docker.com.Kubernetes PullImageError using Docker Hub con un'immagine privata
Sto usando la versione kubectl: Client Version: version.Info{Major:"1", Minor:"1+", GitVersion:"v1.1.0-alpha.0.1588+e44c8e6661c931", GitCommit:"e44c8e6661c931f7fd434911b0d3bca140e1df3a", GitTreeState:"clean"} Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.3", GitCommit:"6a81b50c7e97bbe0ade075de55ab4fa34f049dc2", GitTreeState:"clean"}
e Vagrant 1.7.4
su Mac OS X Yosemite 10.10.5
Ho seguito le istruzioni qui riportate: https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/user-guide/images.md#pre-pulling-images
In poche parole, si dice che si dovrebbe effettuare l'accesso al il registro quindi base64 codifica il contenuto dello .docker/config.json
risultante e lo utilizza in un documento yaml come segue:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
data:
.dockercfg: eyAiYXV0aHMiOiB7ICJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7ICJhdXRoIjogImFXNTBjbWx1YzJsak9tSTJVVTR5Z...h1YkBpbnRyaW5zaWMud29ybGQiIH0gfSB9Cg==
type: kubernetes.io/dockercfg
Quindi invia questo a kubectl. Ho quindi utilizzato la chiave risultante (qui chiamato myregistrykey
) nella mia definizione pod:
apiVersion: v1
kind: Pod
metadata:
name: authorities-backend
spec:
containers:
- name: authorities-backend
image: intrinsic/authorities-backend:latest
imagePullSecrets:
- name: myregistrykey
e kubectl create
d esso.
Tuttavia, kubectl continua a non riuscire a recuperare l'immagine:
[[email protected] intrinsic]# kubectl get pods
NAME READY STATUS RESTARTS AGE
authorities-backend 0/1 PullImageError 0 7m
finestra mobile tirare sul master kubernetes funzionato comunque.
Cosa mi manca?
UPDATE
Nella definizione pod sopra, aveva omesso di specificare l'host Registro di sistema, vale a dire docker.io. Risolvendolo, diventa: image: docker.io/intrinsic/authorities-backend:latest
Tuttavia, il problema persiste. Facendo kubectl get events -w
mi fa: 6s 0s 2 authorities-backend Pod spec.containers{authorities-backend} Failed {kubelet 10.245.1.3} Failed to pull image "docker.io/intrinsic/authorities-backend": image pull failed for docker.io/intrinsic/authorities-backend, this may be because there are no credentials on this request. details: (Error: image intrinsic/authorities-backend:latest not found)
So che il segreto è stato correttamente registrato, come ce l'ho sotto kubectl get secrets
: NAME TYPE DATA AGE default-token-a7s5n kubernetes.io/service-account-token 2 51m myregistrykey kubernetes.io/dockercfg 1 50m
Ancora confuso ...
Candide
https://github.com/kubernetes/kubernetes/pull/18777 corregge la documentazione. La tua recensione sarebbe gradita. –
In realtà, a causa di una svista, Kubernetes non sta attualmente validando 'type: kubernetes.io/dockerconfigjson'. Ho scritto https://github.com/kubernetes/kubernetes/pull/18790 per risolvere questo problema. –
Grazie per questo Eric - la documentazione funziona alla grande. Piccola lamentela: non posso realmente eseguire 'nodes = $ (kubectl get nodes -o jsonpath = '{range.items [*]. Metadata} {. Name} {end}')' (ottenendo 'error: output format" jsonpath = {range.items [*]. metadata} {. nome} {end} "non riconosciuto") probabilmente a causa della mia ignoranza su come farlo. Sarebbe bello se fosse un po 'più esplicito. – candide