Header Ads

Noções básicas sobre as políticas de pull de imagens do Kubernetes

As políticas de extração de imagem do Kubernetes controlam quando o Kubelet deve buscar uma versão de imagem atualizada. As políticas pull são usadas quando um novo pod está sendo inicializado. O Kubelet tomará as medidas adequadas indicadas pela política do pod.

O comportamento padrão

Você não precisa especificar uma política de extração de imagem. Quando um pod não tem uma política, o Kubernetes infere suas intenções a partir da tag da imagem. Se você forneceu uma tag específica (como my-image: my-release), a imagem só será obtida se a tag ainda não existir no nó Kubelet. Esta política é chamada IfNotPresent.

Quando nenhuma tag for especificada ou você estiver usando a tag mais recente, a imagem sempre será puxada. O Kubernetes buscará o manifesto da imagem sempre que um novo pod for iniciado. Se o manifesto indicar uma mudança, a imagem atualizada será obtida antes que os contêineres sejam criados.

O Kubernetes nunca modificará imagePullPolicy como consequência de outra ação. Editar a imagem de um pod não fará com que o Kubernetes reavalie a política de pull padrão. Isso significa que se você começar com my-image: latest mas depois atualizar o Pod para my-image: my-release, a política de extração de imagem ainda será IfNotPresent. Você deve especificar manualmente uma nova política, se desejar.

Fazendo Kubelet sempre puxar

Você precisará aplicar uma política de extração de imagem para forçar o Kubelet a sempre tentar uma extração. Defina imagePullPolicy: Always on a Pod para ativar esse comportamento.

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

Novas versões de imagens serão obtidas sempre que um pod for iniciado e o resumo do manifesto da imagem for alterado. Uma versão da imagem em cache local ainda será reutilizada se o resumo não tiver sido alterado. Isso evita downloads desnecessários na rede. Os resumos do Docker são referências imutáveis ​​que identificam imagens com exclusividade, sem um nome ou tag.

Os puxões forçados são úteis quando você deseja distribuir novas versões de sua imagem usando a mesma tag. Esse pode ser o caso quando você marca imagens usando o nome do branch a partir do qual foram criadas. Sem a política Always, o Kubernetes nunca puxaria seus novos lançamentos de imagem se a tag já estivesse disponível localmente.

Banindo pulls automáticos

Todas as políticas que permitem extração de imagens buscarão novas versões de suas tags armazenadas localmente. Use um resumo de imagem como o campo de imagem do seu Pod se quiser que um contêiner mantenha uma versão exata da imagem sempre que for iniciado.

Existem cenários em que você pode não querer que o Kubernetes extraia imagens. Definir a política Nunca impedirá pulls automáticos de Kubelet. Esta política não verifica a existência de atualizações de forma alguma – a versão do manifesto do registro não será obtida.

Você precisará de uma maneira alternativa de obter imagens para seus nós se usar o Never. Cada imagem precisará existir localmente antes de você tentar iniciar seus pods. Caso contrário, o Kubernetes não conseguirá executar os contêineres do pod.

Isso atua como um mecanismo de proteção quando você está usando um mecanismo autônomo de extração de imagem. Você não vai querer que o Kubernetes tente inadvertidamente uma busca automática caso o pull falhe. Isso pode levar à perda de imagens que já estão armazenadas em cache localmente.

Políticas de pull e cache

Sua política de pull selecionada não deve afetar significativamente o desempenho. Contanto que seu provedor de imagem seja compatível com o cache de camadas, o Kubelet só precisará extrair as camadas genuinamente novas em cada imagem.

A política Sempre adiciona uma chamada de rede sempre que você inicia um novo pod. Ele só precisa verificar o resumo da imagem, então isso deve ser praticamente instantâneo. Se o resumo não corresponder à versão armazenada em cache localmente, as novas camadas da imagem serão retiradas do registro. A sobrecarga de desempenho mais significativa é a transferência de rede real dessas camadas, seguida por sua descompressão subsequente.

Resumo

O Kubernetes oferece suporte a vários modelos de comportamento para pulls de imagens. As imagens são gerenciadas por Kubelet e serão buscadas sempre que um pod for iniciado. A política padrão extrairá a imagem se a tag ainda não existir localmente. Se a imagem não estiver marcada ou tiver a última como marca, a política Sempre será usada em seu lugar.

Definir a imagePullPolicy nas especificações do seu pod torna a política selecionada explícita. Isso ajuda todos os colaboradores a entender o comportamento escolhido, mesmo que não estejam familiarizados com os padrões do Kubernetes. É particularmente importante se você estiver usando imagens mais recentes ou não marcadas, em que o Kubernetes aplica um tratamento especial que pode ser confuso.

Lembre-se de que as políticas de extração de imagens são sempre definidas por pod por padrão. Se quiser usar uma política para todo o cluster, você precisará usar uma ferramenta de validação de configuração para verificar seus manifestos de pod. kube-score é uma ferramenta de análise estática para manifestos de objetos do Kubernetes que inclui uma verificação imagePullPolicy em seu conjunto de regras padrão. Execute kube-score score my-manifest. yaml como parte de um pipeline de CI para evitar o uso de manifestos que não possuem uma política definida.

Nenhum comentário