Summary
J’ai déjà partagé un court tutoriel sur Minikube, et pendant que je l’utilisais, j’ai pensé que je réutiliserais mes images locales directement, sans télécharger et puis les télécharger à nouveau.
Deux choses que j’ai essayées (et qui n’ont pas fonctionné)
Importez les images en utilisant kubectl
J’ai d’abord nettoyé les instances de minikube et recommencé à zéro pour m’assurer qu’il n’y a pas de collision.
kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989
kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never
Et la sortie était :
NAME READY STATUS RESTARTS AGE
hdfs-2425930030-q0sdl 0/1 ContainerCreating 0 10m
Comme vous le voyez, il reste bloqué sur un certain statut mais n’atteint jamais l’état prêt.
Créer un registre local
L’idée ici est de créer un registre local et d’y mettre mes images. Avec cela, je n’ai pas besoin de télécharger puis de télécharger mes images.
Cela n’a pas fonctionné non plus.
La solution
La solution consistait à utiliser le eval $(minikube docker-env)
.
Les étapes sont :
Etape 1 : Définissez les variables d’environnement
Pour définir vos variables d’environnement, utilisez la commande :
eval $(minikube docker-env)
Etape 2 : Construire l’image avec le démon de minikube
Pour construire l’image, utilisez cette commande :
docker build -t my-image
De la source, remplacez my-image
par le nom de votre image.
Étape 3 : Définir l’image dans le pod Kubernetes
Utilisez la balise dans le pod kubernetes.
Par exemple : my-image
### Étape 4 : Dites à Kubernetes de ne plus télécharger l’image
Pour y parvenir, vous devez utiliser le imagePullPolicy
à Never
.
Plus d’informations ici : Comment définir imagePullPolicy sur jamais.
Astuces et pillfalls
Exécutez la commande env dans tous vos terminaux
Assurez-vous d’exécuter le eval $(minikube docker-env)
dans tous vos terminaux. Vous aurez les variables d’environnement dans chacun d’eux.
Si ce n’est pas le cas, certaines commandes peuvent échouer en raison de l’absence de ces variables.
Si vous fermez votre terminal, relancez eval $(minikube docker-env)
Une fois que vous fermez votre terminal, les variables d’environnement sont effacées.
Si vous construisez ensuite vos images, elles ne seront pas mises à jour dans minikube. Vous penserez que cela ne fonctionne pas, mais c’est parce que les variables d’environnement ne sont pas là.
Quitter minikube ?
Si vous voulez quitter minikube, lancez cette commande :
eval $(minikube docker-env -u)
Conclusion
Ce tutoriel vous montre comment vous pouvez utiliser votre image locale avec minikube sans les télécharger puis les télécharger.
Attention aux pièges.
Une fois que vous avez utilisé vos images locales, vous souhaiterez peut-être exposer les ports de services pour y accéder. Ce tutoriel vous montre comment.