J'ai un déploiement Kubernetes qui utilise l'image: test:latest
(pas le vrai nom de l'image mais c'est la dernière balise). Cette image est sur le docker hub. Je viens de lancer une nouvelle version de test:latest
vers dockerhub. Je m'attendais à un nouveau déploiement de mon pod dans Kubernetes mais rien ne se passe.
J'ai créé mon déploiement comme ceci:
kubectl run sample-app --image=`test:latest` --namespace=sample-app --image-pull-policy Always
Pourquoi n'y a-t-il pas un nouveau déploiement déclenché après la poussée d'une nouvelle image?
Kubernetes --- not attend une nouvelle version de l'image. La stratégie d'extraction d'image spécifie comment acquérir l'image pour exécuter le conteneur. Always
signifie qu'il essaiera d'extraire une nouvelle version à chaque démarrage d'un conteneur. Pour voir la mise à jour, vous devez supprimer le pod (pas le déploiement) - le pod nouvellement créé exécutera la nouvelle image.
Il n'existe aucun moyen direct pour que Kubernetes mette automatiquement à jour les conteneurs en cours d'exécution avec de nouvelles images. Cela ferait partie d'un système de livraison continu (peut-être en utilisant kubectl set image
avec le nouveau sha256sum ou une balise image - mais pas latest
).
Si vous travaillez avec des fichiers yml, l'exécution du déploiement avec
kubectl apply -f myfile.yml
et
imagePullPolicy: Always
sur votre fichier, k8s ne tirera pas une nouvelle image. Vous devrez d'abord supprimer le module et le déploiement du K8 tirera automatiquement l'image.