Comprensión de las políticas de extracción de imágenes de Kubernetes – CloudSavvy IT

Tecnología junio 4, 2021

Gráfico que muestra el logotipo de Kubernetes

Las políticas de extracción de imágenes de Kubernetes controlan cuándo Kubelet debe obtener una versión de imagen actualizada. Las políticas de extracción se utilizan cuando se inicia un nuevo Pod. Kubelet tomará la acción apropiada indicada por la política del Pod.

El comportamiento predeterminado

No es necesario que especifique una política de extracción de imágenes. Cuando un pod carece de una política, Kubernetes inferirá sus intenciones a partir de la etiqueta de la imagen. Si ha proporcionado una etiqueta específica (como my-image:my-release), la imagen solo se extraerá si la etiqueta aún no existe en el nodo de Kubelet. Esta política se llama IfNotPresent.

Cuando no se especifica ninguna etiqueta, o está utilizando el latest etiqueta, la imagen siempre ser tirado. Kubernetes buscará el manifiesto de la imagen cada vez que se inicie un nuevo Pod. Si el manifiesto indica un cambio, la imagen actualizada se extraerá antes de que se creen los contenedores.

Kubernetes nunca modificará imagePullPolicy como consecuencia de otra acción. Editar un Pod image voluntad no Activar Kubernetes para volver a evaluar la política de extracción predeterminada. Eso significa que si empiezas con my-image:latest pero luego actualice el Pod a my-image:my-release, la política de extracción de imágenes seguirá siendo IfNotPresent. Debe especificar manualmente una nueva política si deseas una.

Hacer que Kubelet siempre tire

Deberá aplicar una política de extracción de imágenes para obligar a Kubelet a intentar siempre una extracción. Colocar imagePullPolicy: Always en un Pod para habilitar este comportamiento.

spec:
  containers:
      - name: my-container
        image: my-image:my-release
        imagePullPolicy: Always

Se extraerán nuevas versiones de imágenes cada vez que se inicie un Pod y el resumen del manifiesto de la imagen haya cambiado. Una versión de la imagen almacenada en caché local se seguirá utilizando si el resumen no ha cambiado. Esto evita descargas innecesarias a través de la red. Estibador los resúmenes son referencias inmutables que identifican de forma única las imágenes sin nombre ni etiqueta.

Las extracciones forzadas son útiles cuando desea distribuir nuevas versiones de su imagen utilizando la misma etiqueta. Este podría ser el caso cuando etiqueta imágenes con el nombre de la rama a partir de la cual se han creado. Sin el Always política, Kubernetes nunca extraería sus nuevas versiones de imagen si la etiqueta ya estuviera disponible localmente.

Prohibición de tirones automáticos

Todas las políticas que permiten la extracción de imágenes obtendrán nuevas versiones de sus etiquetas almacenadas en caché localmente. Utilice un resumen de imágenes como el de su Pod image campo si deseas que un contenedor se quede con una versión de imagen exacta cada vez que se inicia.

Hay escenarios en los que es posible que no desee que Kubernetes extraiga imágenes en absoluto. Establecer el Never La política evitará los tirones automáticos de Kubelet. Esta política no buscará actualizaciones en absoluto; no se obtendrá la versión del manifiesto del registro.

Necesitará una forma alternativa de llevar imágenes a sus nodos si usa Never. Cada imagen deberá existir localmente antes de intentar iniciar sus pods. De lo contrario, Kubernetes no podrá ejecutar los contenedores del Pod.

Esto actúa como un mecanismo de protección cuando está utilizando un mecanismo de extracción de imagen independiente. No querrá que Kubernetes intente inadvertidamente una recuperación automática en caso de que falle una extracción. Podría provocar la pérdida de imágenes que ya están almacenadas en caché localmente.

Extraer políticas y almacenamiento en caché

Tu política de extracción seleccionada no debería impactar significativamente actuación. Siempre que su proveedor de imágenes admita el almacenamiento en caché de capas, Kubelet solo necesitará extraer las capas realmente nuevas en cada imagen.

La Always La política agrega una llamada de red cada vez que inicia un nuevo Pod. Solo necesita verificar el resumen de la imagen para que sea prácticamente instantáneo. Si el resumen no coincide con la versión almacenada en caché local, las nuevas capas de imágenes se extraerán del registro. La sobrecarga de rendimiento más significativa es la transferencia de red real de esas capas, seguida de su posterior descompresión.

Resumen

Kubernetes admite varios modelos de comportamiento para extracciones de imágenes. Las imágenes son manejadas por Kubelet y se recuperarán cada vez que se inicie un Pod. La política predeterminada extraerá la imagen si la etiqueta aún no existe localmente. Si la imagen no está etiquetada o tiene latest como su etiqueta, el Always En su lugar, se utilizará la política.

Establecer el imagePullPolicy en las especificaciones de tu pod hace que la política seleccionada sea explícita. Esto ayuda a todos los colaboradores a comprender el comportamiento elegido, incluso si no están familiarizados con los valores predeterminados de Kubernetes. Es particularmente importante si está usando latest o imágenes sin etiquetar, donde Kubernetes aplica un manejo especial que podría resultar confuso.

Recuerde que las políticas de extracción de imágenes siempre se establecen por pod de forma predeterminada. Si deseas usar una política para todo su clúster, deberá usar una herramienta de validación de configuración para escanear sus manifiestos de pod. puntuación kube es una herramienta de análisis estático para manifiestos de objetos de Kubernetes que incluye un imagePullPolicy compruebe su conjunto de reglas predeterminado. Correr kube-score score my-manifest.yaml como parte de una canalización de CI para evitar el uso de manifiestos que carecen de una política definida.