O que fazer se um pod não conseguir extrair a imagem?
Localização de falha
Se o status do pod for ImagePullBackOff, a imagem não será extraída. Para obter detalhes sobre como visualizar eventos do Kubernetes, consulte Exibir eventos do pod.
Processo de solução de problemas
Determine a causa com base nas informações do evento, conforme listado em Tabela 1.
Informações sobre o evento |
Causa e solução |
---|---|
Failed to pull image "xxx": rpc error: code = Unknown desc = Error response from daemon: Get xxx: denied: You may not login yet |
Você não fez logon no repositório de imagens. |
Failed to pull image "nginx:v1.1": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: no such host |
O endereço da imagem está configurado incorretamente. Item de verificação 2: se o endereço da imagem está correto quando uma imagem de terceiros é usada Item de verificação 3: se um segredo incorreto é usado quando uma imagem de terceiros é usada |
Failed to pull image "docker.io/bitnami/nginx:1.22.0-debian-11-r3": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) |
Falhou ao conectar ao repositório de imagens devido à rede desconectada. |
Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "nginx-6dc48bf8b6-l8xrw": Error response from daemon: mkdir xxxxx: no space left on device |
O espaço do disco é insuficiente. Item de verificação 4: se o espaço de disco do nó é insuficiente |
Failed to pull image "xxx": rpc error: code = Unknown desc = error pulling image configuration: xxx x509: certificate signed by unknown authority |
Um certificado desconhecido ou inseguro é usado pelo repositório de imagens de terceiros do qual a imagem é extraída. |
Failed to pull image "XXX": rpc error: code = Unknown desc = context canceled |
O tamanho da imagem é muito grande. Item de verificação 6: se o tamanho da imagem é muito grande |
Failed to pull image "docker.io/bitnami/nginx:1.22.0-debian-11-r3": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) |
|
ERROR: toomanyrequests: Too Many Requests. Ou you have reached your pull rate limit, you may increase the limit by authenticating an upgrading |
A taxa é limitada porque o número de tempos de extração da imagem alcança o limite superior. Item de verificação 8: se o número de extração de imagens públicas atinge o limite superior |

Item de verificação 1: se imagePullSecret é especificado quando você usa kubectl para criar uma carga de trabalho
Se o status da carga de trabalho for anormal e um evento do Kubernetes for exibido indicando que o pod não consegue extrair a imagem, verifique se o campo imagePullSecrets existe no arquivo YAML.
Itens para verificar
- Se uma imagem precisar ser extraída do SWR, o parâmetro name deve ser definido como default-secret.
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - image: nginx imagePullPolicy: Always name: nginx imagePullSecrets: - name: default-secret
- Se uma imagem precisar ser extraída de um repositório de imagens de terceiros, o parâmetro imagePullSecrets deve ser definido como o nome secreto criado.
Quando você usa kubectl para criar uma carga de trabalho a partir de uma imagem de terceiros, especifique o campo imagePullSecret, no qual name indica o nome do segredo usado para extrair a imagem. Para obter detalhes sobre como criar um segredo, consulte Uso do kubectl.
Item de verificação 2: se o endereço da imagem está correto quando uma imagem de terceiros é usada
O CCE permite que você crie cargas de trabalho usando imagens extraídas de repositórios de imagens de terceiros.
Insira o endereço de imagem de terceiros de acordo com os requisitos. O formato deve ser ip:port/path/name:version ou name:version. Se nenhuma tag for especificada, latest é usada por padrão.
- Para um repositório privado, insira um endereço de imagem no formato ip:port/path/name:version.
- Para um repositório de Docker de código aberto, insira um endereço de imagem no formato name:version, por exemplo, nginx:latest.
Figura 2 Usar uma imagem de terceiros
As informações a seguir são exibidas quando você não consegue extrair uma imagem devido ao endereço de imagem incorreto fornecido.
Failed to pull image "nginx:v1.1": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: no such host
Solução
Você pode editar seu arquivo YAML para modificar o endereço da imagem ou fazer logon no console do CCE para substituir a imagem na página de guia Upgrade na página de detalhes da carga de trabalho.
Item de verificação 3: se um segredo incorreto é usado quando uma imagem de terceiros é usada
Geralmente, um repositório de imagens de terceiros pode ser acessado somente após a autenticação (usando sua conta e senha). O CCE usa o modo de autenticação secreto para extrair imagens. Portanto, você precisa criar um segredo para um repositório de imagens antes de extrair imagens do repositório.
Solução
Se o seu segredo estiver incorreto, as imagens não serão extraídas. Nesse caso, crie um novo segredo.
Para criar um segredo, consulte Uso do kubectl.
Item de verificação 4: se o espaço de disco do nó é insuficiente
Um disco de dados de 100 GB dedicado para o Docker é anexado ao novo nó. Se o espaço em disco de dados for insuficiente, a imagem não será extraída.

Se o evento de Kubernetes contiver as informações a seguir, o nó não terá espaço em disco para armazenar imagens. Você precisa limpar as imagens ou expandir a capacidade do disco.
Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "nginx-6dc48bf8b6-l8xrw": Error response from daemon: mkdir xxxxx: no space left on device
Execute o comando lvs para verificar o espaço em disco para armazenar imagens no nó.
Execute o seguinte comando para limpar as imagens:
docker rmi -f {Image ID}
Para expandir a capacidade do disco, execute as seguintes etapas:
- Expanda a capacidade de um disco de dados no console do EVS. Para obter detalhes, consulte Expansão da capacidade de disco do EVS.
Somente a capacidade de armazenamento do disco EVS é expandida. Você também precisa executar as etapas a seguir para expandir a capacidade do volume lógico e do sistema de arquivos.
- Efetue logon no console do CCE e clique no cluster. No painel de navegação, escolha Nodes. Clique em More > Sync Server Data na linha que contém o nó de destino.
- Faça logon no nó de destino.
- Execute o comando lsblk para verificar as informações do dispositivo de bloco do nó.
Um disco de dados é dividido dependendo do armazenamento do contêiner Rootfs:
Overlayfs: nenhum thin pool independente é alocado. Os dados da imagem são armazenados no dockersys.
- Verifique os tamanhos do disco e da partição do dispositivo.
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 150G 0 disk # The data disk has been expanded to 150 GiB, but 50 GiB space is not allocated. ├─vgpaas-dockersys 253:0 0 90G 0 lvm /var/lib/containerd └─vgpaas-kubernetes 253:1 0 10G 0 lvm /mnt/paas/kubernetes/kubelet
- Expanda a capacidade do disco.
Adicione a nova capacidade de disco ao volume lógico dockersys usado pelo mecanismo de contêiner.
- Expanda a capacidade do PV para que o LVM possa identificar a nova capacidade do EVS. /dev/sdb especifica o volume físico onde o dockersys está localizado.
pvresize /dev/sdb
Informação semelhante à seguinte é exibida:
Physical volume "/dev/sdb" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
- Expanda 100% da capacidade livre para o volume lógico. vgpaas/dockersys especifica o volume lógico usado pelo mecanismo de contêiner.
lvextend -l+100%FREE -n vgpaas/dockersys
Informação semelhante à seguinte é exibida:
Size of logical volume vgpaas/dockersys changed from <90.00 GiB (23039 extents) to 140.00 GiB (35840 extents). Logical volume vgpaas/dockersys successfully resized.
- Ajuste o tamanho do sistema de arquivos. /dev/vgpaas/dockersys especifica o caminho do sistema de arquivos do mecanismo de contêiner.
resize2fs /dev/vgpaas/dockersys
Informação semelhante à seguinte é exibida:
Filesystem at /dev/vgpaas/dockersys is mounted on /var/lib/containerd; on-line resizing required old_desc_blocks = 12, new_desc_blocks = 18 The filesystem on /dev/vgpaas/dockersys is now 36700160 blocks long.
- Expanda a capacidade do PV para que o LVM possa identificar a nova capacidade do EVS. /dev/sdb especifica o volume físico onde o dockersys está localizado.
- Verifique se a capacidade está expandida.
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 150G 0 disk ├─vgpaas-dockersys 253:0 0 140G 0 lvm /var/lib/containerd └─vgpaas-kubernetes 253:1 0 10G 0 lvm /mnt/paas/kubernetes/kubelet
- Verifique os tamanhos do disco e da partição do dispositivo.
Item de verificação 5: se o repositório remoto de imagens usa um certificado desconhecido ou inseguro
Quando um pod extrai uma imagem de um repositório de imagens de terceiros que usa um certificado desconhecido ou inseguro, a imagem não é extraída do nó. A lista de eventos do pod contém o evento "Failed to pull the image" com a causa "x509: certificate signed by unknown authority".

A segurança das imagens do EulerOS 2.9 é aprimorada. Alguns certificados inseguros ou expirados são removidos do sistema. É normal que esse erro seja relatado no EulerOS 2.9, mas não ou algumas imagens de terceiros em outros tipos de nós. Você também pode executar as seguintes operações para corrigir a falha.
Solução
- Verifique o endereço IP e o número da porta do servidor de imagem de terceiros para o qual a mensagem de erro "unknown authority" é exibida.
Você pode ver o endereço IP e o número da porta do servidor de imagem de terceiros para o qual o erro é relatado nas informações de evento "Failed to pull image".
Failed to pull image "bitnami/redis-cluster:latest": rpc error: code = Unknown desc = error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/e8/e83853f03a2e792614e7c1e6de75d63e2d6d633b4e7c39b9d700792ee50f7b56/data?verify=1636972064-AQbl5RActnudDZV%2F3EShZwnqOe8%3D: x509: certificate signed by unknown authority
O endereço IP do servidor de imagem de terceiros é production.cloudflare.docker.com, e o número da porta HTTPS padrão é 443.
- Carregue o certificado raiz do servidor de imagem de terceiros para o nó onde a imagem de terceiros deve ser baixada.
Execute os seguintes comandos nos nós de EulerOS e CentOS com {server_url}:{server_port} substituído pelo endereço IP e número da porta obtidos na Etapa 1, por exemplo, production.cloudflare.docker.com:443:
Se o mecanismo de contêiner do nó estiver em contêiner, substitua systemctl restart docker por systemctl restart containerd.openssl s_client -showcerts -connect {server_url}:{server_port} < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/ca-trust/source/anchors/tmp_ca.crt update-ca-trust systemctl restart docker
Execute o seguinte comando nos nós do Ubuntu:openssl s_client -showcerts -connect {server_url}:{server_port} < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /usr/local/share/ca-certificates/tmp_ca.crt update-ca-trust systemctl restart docker
Item de verificação 6: se o tamanho da imagem é muito grande
A lista de eventos do pod contém o evento "Failed to pull image". Isso pode ser causado por um tamanho de imagem grande.
Failed to pull image "XXX": rpc error: code = Unknown desc = context canceled
Efetue logon no nó e execute o comando docker pull para extrair manualmente a imagem. A imagem é extraída com sucesso.
Causa raiz
O valor padrão de image-pull-progress-deadline é 1 minuto. Se o progresso da extração da imagem não for atualizado dentro de 1 minuto, a extração da imagem será cancelada. Se o desempenho do nó for ruim ou o tamanho da imagem for muito grande, a imagem pode falhar ao ser extraída e a carga de trabalho pode falhar ao ser iniciada.
Solução
- (Recomendado) Método 1: faça logon no nó, execute o comando docker pull para extrair manualmente a imagem e verifique se imagePullPolicy da carga de trabalho é IfNotPresent (configuração de política padrão). Nesse caso, a imagem que foi extraída para o host local é usada para criar a carga de trabalho.
- Método 2: modifique os parâmetros de configuração do kubelet.
Para um cluster de v1.15 ou posterior, execute o seguinte comando:
vi /opt/cloud/cce/kubernetes/kubelet/kubelet
Para um cluster anterior a v1.15, execute o seguinte comando:
vi /var/paas/kubernetes/kubelet/kubelet
Adicione --image-pull-progress-deadline=30m ao final do parâmetro DAEMON_ARGS. 30m indica 30 minutos. Você pode alterar o valor conforme necessário. A configuração adicionada e a configuração existente são separadas por um espaço.
Execute o seguinte comando para reiniciar o kubelet:
systemctl restart kubelet
Aguarde um pouco e verifique se o status do kubelet está running.
systemctl status kubelet
A carga de trabalho é iniciada corretamente e a imagem é extraída com êxito.
Item de verificação 7: conexão ao repositório de imagens
Sintoma
A seguinte mensagem de erro é exibida durante a criação da carga de trabalho:
Failed to pull image "docker.io/bitnami/nginx:1.22.0-debian-11-r3": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Causa
Falhou ao conectar ao repositório de imagens devido à rede desconectada. O SWR permite que você extraia imagens do repositório oficial do Docker. Para imagens extraídas de outros repositórios, você precisa se conectar aos repositórios primeiro.
Solução
- Vincule um endereço IP público (EIP) ao nó que extraia a imagem.
- Carregue a imagem para o SWR e, em seguida, extraia a imagem do SWR.
Item de verificação 8: se o número de extração de imagens públicas atinge o limite superior
Sintoma
A seguinte mensagem de erro é exibida durante a criação da carga de trabalho:
ERROR: toomanyrequests: Too Many Requests.
Ou
you have reached your pull rate limit, you may increase the limit by authenticating an upgrading: https://www.docker.com/increase-rate-limits.
Causa
O Docker Hub define o número máximo de solicitações de extrair imagem de contêiner. Para obter detalhes, consulte Entender seu limite de taxa do Docker Hub.
Solução
Envie por push a imagem usada com frequência para o SWR e, em seguida, extraia a imagem do SWR.