Agence web » Actualités du digital » Comprendre les politiques d’extraction d’image Kubernetes –

Comprendre les politiques d’extraction d’image Kubernetes –

Les politiques d’extraction d’image Kubernetes contrôlent quand Kubelet doit récupérer une version d’image mise à jour. Les règles d’extraction sont utilisées lorsqu’un nouveau pod démarre. Kubelet prendra les mesures appropriées indiquées par la politique du Pod.

Le comportement par défaut

Vous n’avez pas besoin de spécifier une règle d’extraction d’image. Lorsqu’un pod n’a pas de politique, Kubernetes déduira vos intentions à partir de la balise de l’image. Si vous avez fourni une balise spécifique (comme my-image:my-release), l’image ne sera extraite que si la balise n’existe pas déjà sur le nœud Kubelet. Cette politique s’appelle IfNotPresent.

Lorsqu’aucune balise n’est spécifiée ou que vous utilisez le latest balise, l’image sera toujours être tiré. Kubernetes récupère le manifeste de l’image à chaque démarrage d’un nouveau pod. Si le manifeste indique un changement, l’image mise à jour sera extraite avant la création des conteneurs.

Kubernetes ne modifiera jamais imagePullPolicy à la suite d’une autre action. Modification d’un pod image volonté ne pas déclencher Kubernetes pour réévaluer la politique d’extraction par défaut. Cela signifie que si vous commencez par my-image:latest mais plus tard mettre à jour le Pod pour my-image:my-release, la politique d’extraction d’image sera toujours IfNotPresent. Vous devez spécifier manuellement une nouvelle stratégie si vous le souhaitez.

Faire que Kubelet tire toujours

Vous devrez appliquer une politique d’extraction d’image pour forcer Kubelet à toujours tenter une extraction. Ensemble imagePullPolicy: Always sur un Pod pour activer ce comportement.

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

De nouvelles versions d’image seront extraites chaque fois qu’un pod démarre et que le résumé du manifeste de l’image a changé. Une version mise en cache localement de l’image sera toujours réutilisée si le condensé n’a pas changé. Cela évite les téléchargements inutiles sur le réseau. Les résumés Docker sont des références immuables qui identifient de manière unique les images sans nom ni balise.

Les tirages forcés sont utiles lorsque vous souhaitez diffuser de nouvelles versions de votre image en utilisant la même balise. Cela peut être le cas lorsque vous étiquetez des images en utilisant le nom de branche à partir duquel elles ont été créées. Sans le Always politique, Kubernetes ne tirerait jamais vos nouvelles versions d’images si la balise était déjà disponible localement.

Interdiction des tirages automatiques

Toutes les politiques qui autorisent les extractions d’images récupéreront les nouvelles versions de vos balises mises en cache localement. Utilisez un condensé d’image comme pod image champ si vous voulez qu’un conteneur conserve une version d’image exacte à chaque démarrage.

Il existe des scénarios dans lesquels vous ne voudrez peut-être pas que Kubernetes extrait des images du tout. Réglage de la Never La politique empêchera les extractions automatiques de Kubelet. Cette politique ne vérifiera pas du tout les mises à jour – la version manifeste du registre ne sera pas récupérée.

Vous aurez besoin d’un autre moyen d’obtenir des images sur vos nœuds si vous utilisez Never. Chaque image devra exister localement avant d’essayer de démarrer vos pods. Sinon, Kubernetes ne pourra pas exécuter les conteneurs du pod.

Cela agit comme un mécanisme de protection lorsque vous utilisez un mécanisme d’extraction d’image autonome. Vous ne voudrez pas que Kubernetes tente par inadvertance une récupération automatique en cas d’échec d’une extraction. Cela pourrait entraîner la perte d’images déjà mises en cache localement.

Règles d’extraction et mise en cache

Votre politique de tirage sélectionnée ne devrait pas avoir d’impact significatif sur les performances. Tant que votre fournisseur d’images prend en charge la mise en cache des calques, Kubelet n’aura qu’à extraire les véritables nouveaux calques de chaque image.

le Always La politique ajoute un appel réseau à chaque fois que vous démarrez un nouveau pod. Il n’a besoin que de vérifier le condensé de l’image, cela devrait donc être pratiquement instantané. Si le condensé ne correspond pas à la version mise en cache localement, les nouvelles couches d’images seront extraites du registre. Le surcoût de performances le plus important est le transfert réseau réel de ces couches, suivi de leur décompression ultérieure.

Résumé

Kubernetes prend en charge plusieurs modèles de comportement pour les extractions d’images. Les images sont gérées par Kubelet et seront récupérées à chaque démarrage d’un pod. La stratégie par défaut extraira l’image si la balise n’existe pas déjà localement. Si l’image n’est pas taguée ou a latest comme étiquette, le Always la politique sera utilisée à la place.

Réglage de la imagePullPolicy dans vos spécifications de pod rend explicite la stratégie sélectionnée. Cela aide tous les contributeurs à comprendre le comportement choisi, même s’ils ne connaissent pas les paramètres par défaut de Kubernetes. C’est particulièrement important si vous utilisez latest ou des images non étiquetées, où Kubernetes applique un traitement spécial qui pourrait prêter à confusion.

N’oubliez pas que les politiques d’extraction d’image sont toujours définies par pod par défaut. Si vous souhaitez utiliser une règle pour l’ensemble de votre cluster, vous devrez utiliser un outil de validation de configuration pour analyser vos manifestes de pod. kube-score est un outil d’analyse statique pour les manifestes d’objets Kubernetes qui inclut un imagePullPolicy vérifier dans son ensemble de règles par défaut. Cours kube-score score my-manifest.yaml dans le cadre d’un pipeline CI pour empêcher l’utilisation de manifestes sans stratégie définie.

★★★★★