Puede configurar su pod con un período de gracia (por ejemplo, 30 segundos o más, dependiendo del tiempo de inicio del contenedor y el tamaño de la imagen) y configurar "imagePullPolicy: "Always". Y uso kubectl delete pod pod_name. Se creará un nuevo contenedor y se descargará automáticamente la última imagen, luego se cancelará el contenedor anterior.
Ejemplo:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
Actualmente estoy usando Jenkins para compilaciones automatizadas y etiquetado de imágenes y se parece a esto:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
Otro truco es ejecutar inicialmente:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
y entonces:
kubectl set image deployment/my-deployment mycontainer=myimage
En realidad, activará la actualización continua, pero asegúrese de que también haya imagePullPolicy: "Always"configurado.
Actualizar:
Otro truco que encontré, donde no tienes que cambiar el nombre de la imagen, es cambiar el valor de un campo que desencadenará una actualización continua, como terminationGracePeriodSeconds. Para ello, puede utilizar kubectl edit deployment your_deploymento kubectl apply -f your_deployment.yamlo el uso de un parche de la siguiente manera:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
Solo asegúrese de cambiar siempre el valor del número.