web-dev-qa-db-fra.com

Kubernetes: --image-pull-policy ne fonctionne toujours pas

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?

11
DenCowboy

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).

10
Janos Lenart

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.

0
yaach