J'ai ce Dockerfile de base:
FROM nginx
RUN apt-get -y update && apt install -y curl
Dans le nœud maître de mon cluster Kubernetes, je crée cette image:
docker build -t cnginx:v1 .
docker images
montre que l'image a été correctement générée:
REPOSITORY TAG IMAGE ID CREATED SIZE
cgninx v1 d3b1b19d069e 39 minutes ago 141MB
J'utilise ce déploiement référençant cette image personnalisée:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: cnginx
image: cnginx:v1
imagePullPolicy: Never
ports:
- containerPort: 80
nodeSelector:
nodetype: webserver
Cependant l'image n'est pas trouvée:
NAME READY STATUS RESTARTS AGE
nginx-deployment-7dd98bd746-lw6tp 0/1 ErrImageNeverPull 0 4s
nginx-deployment-7dd98bd746-szr9n 0/1 ErrImageNeverPull 0 4s
Décrire les informations sur le pod:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 1m default-scheduler Successfully assigned nginx-deployment-7dd98bd746-szr9n to kubenode2
Normal SuccessfulMountVolume 1m kubelet, kubenode2 MountVolume.SetUp succeeded for volume "default-token-bpbpl"
Warning ErrImageNeverPull 9s (x9 over 1m) kubelet, kubenode2 Container image "cnginx:v1" is not present with pull policy of Never
Warning Failed 9s (x9 over 1m) kubelet, kubenode2 Error: ErrImageNeverPull
J'ai également essayé d'utiliser l'imagePullPolicy par défaut, et d'autres choses telles que le marquage de l'image avec la dernière ...
Alors, comment puis-je faire en sorte que Kubernetes utilise une image Docker générée localement?
Vos POD sont planifiés sur vos nœuds de travail. Puisque vous définissez imagePullPolicy
sur Never
, vous devez mettre votre image à la disposition des deux nœuds. En d'autres termes, vous devez le créer sur les deux nœuds comme vous l'avez fait sur le maître.
En tant que sidenote, il serait probablement plus facile à long terme si vous configurez un registre de docker personnalisé et y envoyez vos images.