Eu configurei um registro privado no docker acessível por meio de um domínio “makdom.ddns.net”, posso fazer o login push e pull de imagens localmente, sem problemas, mesmo a partir do nó kubes escravo, posso fazer isso,
mas quando escrevo um arquivo de implantação do kubes, ele não consegue extrair imagens do registro privado e falha.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ssh-deployment
spec:
template:
metadata:
labels:
app: helloworld
spec:
containers:
- name: ssh-demo
image: makdom.ddns.net/my-ubuntu
imagePullPolicy: IfNotPresent
ports:
- name: nodejs-port
containerPort: 22
imagePullSecrets:
- name: myregistrykey
segredos:
DOCKER_REGISTRY_SERVER="https://makdom.ddns.net/v1/"
DOCKER_USER="user"
DOCKER_PASSWORD="password"
DOCKER_EMAIL="[email protected]"
kubectl create secret docker-registry myregistrykey \
--docker-server=$DOCKER_REGISTRY_SERVER \
--docker-username=$DOCKER_USER \
--docker-password=$DOCKER_PASSWORD \
--docker-email=$DOCKER_EMAIL
erro:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 1m default-scheduler Successfully assigned ssh-deployment-7b7c7bf977-m6stk to kubes-slave
Normal SuccessfulMountVolume 1m kubelet, kubes-slave MountVolume.SetUp succeeded for volume "default-token-mx7qq"
Normal Pulled 1m (x3 over 1m) kubelet, kubes-slave Container image "makdom.ddns.net/my-ubuntu" already present on machine
Normal Created 1m (x3 over 1m) kubelet, kubes-slave Created container
Normal Started 1m (x3 over 1m) kubelet, kubes-slave Started container
Normal Pulling 34s (x2 over 1m) kubelet, kubes-slave pulling image "makdom.ddns.net/my-ubuntu"
Warning Failed 34s (x2 over 1m) kubelet, kubes-slave Failed to pull image "makdom.ddns.net/my-ubuntu": rpc error: code = Unknown desc = Error: image my-ubuntu:latest not found
Warning Failed 34s (x2 over 1m) kubelet, kubes-slave Error: ErrImagePull
Warning BackOff 19s (x6 over 1m) kubelet, kubes-slave Back-off restarting failed container
Problema conhecido https://github.com/kubernetes/kubernetes/issues/57427 , resolvido no mestre em https://github.com/kubernetes/kubernetes/pull/57463
Correção direcionada para 1.9.1 em https://github.com/kubernetes/kubernetes/pull/57472
Soluções alternativas até então:
Se você já tiver um .dockerconfigjson para seu registro privado, poderá especificar manualmente o tipo e a chave de dados:
Se você ainda não possui um arquivo .dockerconfigjson, pode corrigir o segredo produzido
kubectl create secret docker-registry
manualmente:--dry-run -o yaml > secret.yaml
kubernetes.io/dockercfg
parakubernetes.io/dockercfgjson
.dockercfg
para.dockercfgjson
kubectl create -f secret.yaml