
Tenemos un sistema que actualmente se utiliza docker-compose
para la implementación de contenedores (efectivamente docker-compose pull && docker-compose up
) y estamos en el proceso de convertir el sistema a Kubernetes.
Tenemos CI/CD que se implementa en producción automáticamente en función de las etiquetas git enviadas al repositorio de git. Para la puesta en escena, seguimos avanzando una rama. Las imágenes de la ventana acoplable se crean y se etiquetan con la etiqueta de producción de git o el nombre de la rama provisional de git.
Durante la implementación, docker-compose
es lo suficientemente inteligente como para no reiniciar el contenedor si la imagen es realmente la misma, es decir, dos etiquetas de producción apuntan a la misma imagen.
Estoy buscando una manera de hacer lo mismo en Kubernetes: si en el momento de la implementación, la imagen real utilizada para el contenedor del pod es la misma que ya se está ejecutando (según la suma de comprobación de la imagen, no solo la etiqueta de la imagen), entonces No debería tener que reiniciar el pod. es posible?
Gracias
Respuesta1
Como mencioné en los comentarios, debería funcionar de inmediato con imagePullPolicy:Always
.
De acuerdo adocumentación
Imágenes de contenedores
imagePullPolicy y la etiqueta de la imagen afectan cuando kubelet intenta extraer la imagen especificada.
política de extracción de imágenes:Siempre: cada vez que kubelet inicia un contenedor, kubelet consulta el registro de imágenes del contenedor para resolver el nombre en un resumen de imagen. Si el kubelet tiene una imagen de contenedor con ese resumen exacto almacenado en caché localmente, el kubelet usa su imagen almacenada en caché; de lo contrario, kubelet descarga (extrae) la imagen con el resumen resuelto y usa esa imagen para iniciar el contenedor.
Nota: Para asegurarse de que el contenedor siempre use la misma versión de la imagen, puede especificar su resumen; reemplace: con @ (por ejemplo, image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2). El resumen identifica de forma única una versión específica de la imagen, por lo que Kubernetes nunca lo actualiza a menos que cambie el valor del resumen.
También hay una herramienta llamadaimagen, vale la pena echarle un vistazo. Imago verifica la ejecución de los pods sha256 y simplemente reinicia el recurso que necesita usar imágenes más nuevas.