You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes无法识别本地构建的containerd镜像问题求助

Kubernetes无法识别本地构建镜像问题排查与解决

问题背景

本地自建K8s集群中,Kubernetes无法识别本地构建的容器镜像,但通过nerdctl --namespace=k8s.io images和crictl images命令可确认镜像存在于k8s.io命名空间中。

集群环境信息

  • Kubernetes版本:1.26.1
  • 主机操作系统:AlmaLinux 9.1
  • CNI及版本:Calico v3.24.5
  • 容器运行时:Containerd v1.6.16

节点状态:

[root@alma-kube ~]# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
alma-kube    Ready    control-plane   62d   v1.26.1
alma-kube2   Ready    worker          61d   v1.26.0

crictl镜像列表:

crictl images
IMAGE                                     TAG                 IMAGE ID            SIZE
...
docker.io/library/mytestimage             latest              f240b96f676e1       2.81MB
docker.io/library/nginx-test              1                   5e34a0811eefb       56.9MB
docker.io/library/nginx-test              latest              5e34a0811eefb       56.9MB
docker.io/nick/nginx                      latest              5e34a0811eefb       56.9MB
docker.io/registry-nick/nginx-test        latest              5e34a0811eefb       56.9MB

nerdctl镜像列表(k8s.io命名空间):

nerdctl --namespace=k8s.io images
REPOSITORY                                 TAG        IMAGE ID        CREATED         PLATFORM       SIZE         BLOB SIZE
...
mytestimage                                latest     dfb4f2a8f7c9    5 hours ago     linux/amd64    5.6 MiB      2.7 MiB
nginx-test                                 1          7f7e7eb6b3c2    2 days ago      linux/amd64    146.7 MiB    54.3 MiB
registry                                   latest     3f71055ad7c4    2 days ago      linux/amd64    23.7 MiB     8.8 MiB
registry-nick/nginx-test                   latest     7f7e7eb6b3c2    3 days ago      linux/amd64    146.7 MiB    54.3 MiB

Pod配置文件

尝试多种镜像引用方式均触发相同错误:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-test-pod
spec:
  containers:
  - name: nginx-test-crp
    image: mytestimage
    #image: docker.io/library/nginx-test:1
    #image: registry-nick/nginx-test
    #image: localhost:5000/nginx-test
    imagePullPolicy: Never

创建命令:

kubectl apply -f pod-test.yaml

错误现象

Pod启动失败,触发ErrImageNeverPull错误:

kubectl get pod -o wide --all-namespaces
default            nginx-test-pod                             0/1     ErrImageNeverPull   0               124m   192.168.48.11    alma-kube2   <none>  

日志报错:

kubectl logs nginx-test-pod
Error from server (BadRequest): container "nginx-test-crp" in pod "nginx-test-pod" is waiting to start: ErrImageNeverPull

事件详情:

kubectl describe pod nginx-test-pod
Events:
  Type     Reason             Age                   From     Message
  ----     ------             ----                  ----     -------
  Warning  ErrImageNeverPull  58s (x630 over 136m)  kubelet  Container image "local-nick/bokluk" is not present with pull policy of Never

解决方法

1. 确认镜像存在于Pod调度节点

从Pod状态可见,Pod被调度到alma-kube2节点,但当前仅在控制节点alma-kube确认了镜像存在。登录alma-kube2节点,执行crictl images或nerdctl --namespace=k8s.io images,确认目标镜像是否存在。

若镜像仅在控制节点,可选择:

  • 手动复制镜像到工作节点:
    # 在alma-kube导出镜像
    nerdctl --namespace=k8s.io save mytestimage -o mytestimage.tar
    # 复制到alma-kube2
    scp mytestimage.tar root@alma-kube2:/tmp/
    # 在alma-kube2导入镜像
    nerdctl --namespace=k8s.io load -i /tmp/mytestimage.tar
    
  • 搭建本地私有仓库:将镜像推送到仓库后,Pod使用仓库地址拉取(需配置仓库为可信任源)。

2. 镜像名称完全匹配

Kubernetes严格校验镜像名称(含仓库前缀):

  • 若crictl images显示镜像全名为docker.io/library/mytestimage:latest,Pod的image字段必须写全该名称,不能省略前缀。
  • 确认节点上的镜像名称与Pod配置完全一致,包括标签(如latest)。

3. 检查Containerd命名空间

确保镜像存在于Kubernetes使用的k8s.io命名空间:

  • 若构建镜像时未指定命名空间,可能存于默认default命名空间,需迁移到k8s.io:
    nerdctl tag mytestimage:latest k8s.io/mytestimage:latest
    nerdctl --namespace=k8s.io pull mytestimage:latest # 本地迁移操作
    

4. 验证kubelet配置

确认kubelet指向正确的Containerd套接字:

  • 检查kubelet配置文件(通常为/var/lib/kubelet/config.yaml):
    containerRuntimeEndpoint: unix:///run/containerd/containerd.sock
    
  • 重启kubelet服务:
    systemctl restart kubelet
    

5. 调整镜像拉取策略

临时将imagePullPolicy改为IfNotPresent,可排除因镜像名称匹配问题导致的拉取失败(镜像不存在时仍会报错,用于排查场景)。


内容的提问来源于stack exchange,提问作者Nikolas Naydenov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:27:18