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_deployment
o kubectl apply -f your_deployment.yaml
o 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.