Como corrigir o erro ImagePullbackoff em Kubernetes

Como corrigir o erro ImagePullbackoff em Kubernetes
Você sabia que o Kubernetes foi projetado para facilitar as configurações declarativas e a automação enquanto gerencia serviços de contêiner e cargas de trabalho? Ele permite que você gerencie todos os seus recipientes com apenas um plano de controle. O contêiner possui um ou mais nós que são usados ​​para executar vagens para diferentes fins. Cada nó no contêiner usa a imagem do recipiente para que ele possa ser executado nesse nó. Se o cluster de Kubernetes não conseguir puxar a imagem do contêiner, um erro do ImagePullbackoff seria levantado. Neste artigo, vamos discutir o que é um erro do ImagePullbackoff e como corrigir esse erro em Kubernetes.

O que é um contêiner Kubernetes?

Um contêiner Kubernetes é uma máquina virtual leve, portátil e extensível, com memória, espaço, CPU, sistema de arquivos, etc. É considerado leve devido à sua capacidade de compartilhar o sistema operacional entre as aplicações com propriedades de isolamento relaxadas. Além disso, é portátil em toda a nuvem e tem diferentes distribuições de sistemas operacionais. Independentemente do ambiente em que o cluster Kubernetes esteja sendo executado, ele sempre descreverá o mesmo comportamento para todos os ambientes, porque as dependências incluídas nele padronizam seu desempenho.

Antes da evolução dos contêineres, uma máquina virtual separada foi usada para cada aplicativo, porque quaisquer alterações nas dependências compartilhadas em uma máquina virtual podem causar resultados estranhos. Isso causa uma perda de recursos de memória, desperdício de CPU e escassez de outros recursos. E então vieram os contêineres, que virtualizaram o sistema operacional host e isolaram as dependências para cada aplicativo no mesmo ambiente. O mecanismo de contêiner no contêiner permite que os aplicativos usem o mesmo sistema operacional isolado de outros aplicativos em execução na máquina virtual host.

O que é uma imagem de contêiner?

Uma imagem de contêiner é a representação das dependências incluídas no contêiner na forma de dados binários. É um pacote de software executável e pronto para execução capaz de executar. Ele contém todas as dependências, incluindo bibliotecas de aplicativos, bibliotecas de sistemas, código, configurações padrão essenciais, etc. necessário para executar um aplicativo em qualquer ambiente de Kubernetes ou sistema operacional. Cada nó no contêiner usa a imagem do contêiner para executar aplicativos e vagens nele.

No cluster Kubernetes, o agente Kubectl é responsável por executar imagens de contêiner em cada nó. Ele puxa a imagem em cada nó presente no cluster. Também é responsável relatar tudo o que acontece de volta à API central de Kubernetes. Se a imagem do contêiner já não existir no nó do cluster, Kubectl instrui o contêiner a puxar a imagem no tempo de execução.

Qual é o erro ImagePullbackoff?

Existem algumas situações em que o Kubernetes pode ter problemas para puxar a imagem do contêiner do registro do contêiner. Se esses problemas resultarem em um erro, os pods entrarão no estado ImagePullbackoff. Quando uma nova implantação é criada ou uma implantação existente é atualizada no cluster Kubernetes, a imagem do contêiner precisa ser puxada. Kubectl puxa a imagem em cada nó do trabalhador no cluster que corresponde à solicitação de agendamento. Então, quando Kubectl falha em puxar a imagem, ele enfrenta o erro ImagePullbackoff.

Em outras palavras, a seção 'ImagePull' do erro ImagePullbackoff refere -se à incapacidade dos Kubernetes de puxar a imagem do contêiner de um registro de contêiner público ou privado. A seção 'Backoff' refere -se ao aumento continuamente do atraso de retorno, puxando a imagem. O atraso de retirada continua aumentando a cada tentativa até que o limite de retorno atinja 5 minutos. A principal ou óbvia razão para o erro ImagePullbackoff é que Kubernetes não consegue puxar a imagem do contêiner em tempo de execução. No entanto, pode haver muitas causas para esse problema, incluindo o seguinte:

  • O caminho da imagem está incorreto.
  • Kubeclt falha em autenticar com o registro de contêineres.
  • Uma falha de rede.
  • Limites da taxa de registro de contêineres.
  • Nome do registro de contêineres incorreto
  • Falha de autenticação devido à imagem ser privada.
  • Nome e tag de imagem incorreta.
  • A imagem não existe.
  • A autenticação é exigida pelo Registro de Imagens.
  • Limite de download excedido no registro.

Como resolver o erro ImagePullbackoff em Kubernetes?

Se alguma das situações dadas acima ocorrer, o pod no cluster acaba no estado do ImagePullbackoff. A melhor maneira de corrigir esse erro é solucionar problemas do cluster Kubernetes. Você pode solucionar problemas seguindo as instruções abaixo:

Etapa 1: Crie um pod e atribua um nome de imagem

Os pods são executados nos nós que executam o contêiner de imagem. Cada imagem tem um nome específico e se você se referir a um nome de imagem que não existe ou digite um nome incorreto por engano resultará em um erro de imagem. Aqui, demonstraremos o erro ImagePullbackoff que ocorre devido a um nome de imagem incorreto. Então, vamos criar um pod e atribuir um nome de imagem sem sentido. Podemos fazer isso executando o seguinte comando:

> kubectl run demonso1 -image = não -histentImage/não existe: bla

O comando 'kubectl run' criará um pod denominado 'Demo1' e o nome da imagem '-Image = NONSISTENTIMAGE/NÃOXIST: BLA' atribuído a ele.

Etapa 2: exibir todos os pods

O próximo passo é exibir todas as vagens para verificar seu status. Kubectl fornece o comando 'Get' para obter a lista de pods com suas propriedades associadas como nome, pronta, status, idade, etc. Use o comando fornecido abaixo para exibir todas as vagens:

> kubectl Obtenha pods

Consulte a saída fornecida na captura de tela abaixo:

A partir da saída acima, você pode ver que existem muitas vagens e cada um tem seu status. Alguns estão no estado 'em execução', outros estão no estado 'ErrimagePull' e outros estão no estado 'ImagePullbackoff'.

Etapa # 3: Solucionar problemas da vagem

Agora que sabemos que há muitos pods em execução no cluster, cada um com seu próprio status, podemos olhar especificamente para a vagem desejada. Isso pode ser feito com a ajuda do comando dado aqui:

> Kubectl Descreva a demonstração do pod

O 'Demo1' é o pod que criamos anteriormente, e o comando 'descrever' nos dará uma descrição detalhada da vagem 'Demo1'. Consulte a saída dada abaixo:

Conclusão

Exploramos o erro ImagePullbackoff no ambiente Kubernetes. Aprendemos sobre o cluster Kubernetes, a imagem do cluster e também exploramos os motivos por trás do erro ImagePullbackoff. A principal e óbvia razão para o erro ImagePullbackoff é a incapacidade dos Kubernetes de puxar uma imagem do contêiner.