Corrigindo Kubernetes ImagePullbackoff

Corrigindo Kubernetes ImagePullbackoff

Se você trabalha com Kubernetes há muito tempo, provavelmente encontrou a condição do ImagePullbackoff. Se você não está familiarizado com esse problema, pode ser frustrante. Então, neste artigo, você o levará através do básico desta edição, como solucionar problemas, quais são algumas razões típicas e por onde começar se você o enfrentar.

Qual é o erro ImagePullbackoff?

A questão do ImagePullbackoff é causada pelo seu tempo de execução de contêineres Kubernetes por ser incapaz de buscar a imagem de um registro de contêiner público ou privado. Kubernetes vai puxar a imagem constantemente com um atraso crescente de retirada, conforme indicado pelo componente de retirada. A cada tentativa, o Kubernetes aumentará o atraso até atender à restrição de cinco minutos.

Pode parecer uma declaração ampla sugerir que o tempo de execução do contêiner (seja Docker, contêiner ou outra coisa) não recupere a imagem do registro, mas vamos olhar para as várias causas que você pode encontrar na próxima seção.

As seções anteriores ultrapassarão as várias razões pelas quais seu pod pode estar no estado do ImagePullbackoff quando você iniciar seu contêiner. Você também aprenderá a solucionar problemas e resolver esse erro temido.

O que faz com que o erro do ImagePullbackoff ocorra?

A seguir, são apresentadas algumas das razões pelas quais seu pod podem ficar presos no estado ImagePullbackoff:

  • Imagem não disponível
  • O nome ou tag para a imagem está incorreto.
  • A imagem privada é usada e há um problema com a autenticação.
  • Há uma dificuldade com a rede.
  • O nome do registro é impreciso.
  • Limites de taxa para registros de contêineres
  • A vagem não tem acesso à imagem porque não possui as credenciais necessárias.
  • Limites para taxas de registro

Como solucionar problemas de imagem?

Vamos analisar algumas das prováveis ​​causas listadas na lista de marcadores.

1. A imagem do contêiner não está disponível ou o nome usado é impreciso
O problema geralmente é gerado se houver um erro de digitação ou o fato de a imagem empurrada para o registro de contêiner é falhada, mas você está se referindo a uma imagem que não está lá. Vamos tentar recriar isso fazendo uma vagem com um nome de imagem fictícia. O seguinte comando alcança isso.

$ kubectl run newapp --image = my_image/my_image: mais recente

Como você pode ver, o pod é criado.

Se tentarmos obter os detalhes do pod com o comando get Pod, como você pode ver abaixo.

$ KUBECTL Get Pod

Aqui, é mostrado que a imagem não está lá e não podemos puxá -la.

Você pode usar o comando KUBECTL descrever com o objetivo de descobrir a causa raiz e encontrar mais informações sobre esse problema. Como o comando produz muita saída, apenas exibiremos as seções pertinentes à nossa discussão. A mensagem de erro real é vista na seguinte saída em eventos na coluna da mensagem:

$ Kubectl Descreva o pod newapp

Algumas seções do resultado produzido são as seguintes depois de executar o comando descrever.

2. Tag não existe
É possível que as tags de imagem que você está tentando ter sido aposentada ou que você digitou o nome de tag errônea. Em algumas circunstâncias, seu pod ficará preso no Estado ImagePullbackoff mais uma vez, conforme mostrado na amostra de código abaixo. Para reproduzir esse problema, usamos intencionalmente o nome de tag errônea, Lates em vez de mais recente.

$ kubectl run apptwo --image = nginx: lates

O comando acima criou o pod com o nome que você deu.

Depois disso, obtemos os detalhes do pod com o comando get Pod.

$ KUBECTL Get Pod

Como resultado, a imagem puxa falha.

Agora, estamos novamente usando o comando descrever para entender a causa desse status.

$ KUBECTL Descreva o pod apptwo

Nesta seção de eventos, você pode ver o motivo do erro ImagePullbackoff.

O motivo é mostrado claramente aqui para o seu melhor entendimento.

3. Credenciais erradas e registro de imagem privada

Aqui, estamos tentando reproduzir o problema e, por isso, comemos girando uma vagem que tenta puxar uma imagem de um registro privado.

$ KUBECTL RUN AppThree --Image = Docker.io/hiyou/nameofimage

O comando acima fornece o seguinte resultado.

Depois disso, executamos o comando descrever.

O comando descrito mostra os detalhes gerais da vagem e também menciona as razões por trás do erro ImagePullbackoff.

Não adicionamos um segredo a Kubernetes ou incluímos uma referência a ele na definição de pod. O pod ficará preso no estado ImagePullbackoff mais uma vez, e a notificação verifica que o acesso ao registro é negado:

Você pode criar um segredo com o comando kubectl abaixo para corrigir este erro. O comando kubectl é usado para criar um segredo para um registro do Docker (privado).

4. Limites da taxa de registro

Se você verificar algumas de suas credenciais, como URL do registro, detalhes e nome da tag, poderá obter o ImagePullbackoff por causa dos limites da taxa de registro. Agora você pode puxar apenas 100 recipientes a cada seis horas no Docker Hub. Se você fornecer seus detalhes de login, isso subirá para 200 puxões a cada seis horas. Em um aglomerado animado com numerosos vagens frequentemente implantadas, esse limite pode ser alcançado rapidamente.

Você precisará esperar até que a tampa seja alcançada após um prazo específico. Kubernetes agora deve ser capaz de puxar com sucesso a imagem e iniciar seus pods.

Considere usar você é um registro em cluster junto com um proxy para armazenar em cache suas imagens relevantes. Isso pode ajudá -lo a permanecer dentro das restrições de taxa, reduzindo o número de vezes que você atinge os servidores do Docker.

Conclusão

Quando um nó falha em puxar uma imagem, as vagens de Kubernetes entram no estado do ImagePullbackoff. Kubelet tentará a atração regularmente, para que problemas temporários não precisem de qualquer intervenção manual. Este artigo discutiu o ImagePullbackoff e três fontes potenciais do problema. Embora possa haver várias causas, a leitura da mensagem de erro pode revelar rapidamente a verdadeira causa do problema. Se você examinar e seguir os procedimentos acima, corrigir este problema deve ser simples.