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

离线环境下Kubernetes无法识别ctr导入的本地镜像

解决思路
  • 验证镜像引用与Pod Spec的一致性
    用命令查看Cilium Pod的实际镜像配置,确认和你导入的镜像完全匹配:

    microk8s kubectl get pod <cilium-pod-name> -n kube-system -o yaml | grep -A3 image
    

    同时检查containerd中镜像的完整摘要:

    microk8s ctr --namespace k8s.io image inspect quay.io/cilium/cilium:v1.14.2 | grep -A5 digest
    

    确保两者的sha256摘要完全一致,无大小写或字符差异。

  • 重新导入镜像排除损坏问题
    可能镜像导入过程中存在损坏,删除现有镜像后重新导入:

    # 删除旧镜像
    microk8s ctr --namespace k8s.io image rm quay.io/cilium/cilium:v1.14.2 quay.io/cilium/cilium@sha256:6263f3a3d5d63b267b538298dbeb5ae87da3efacf09a2c620446c873ba807d35
    # 重新导入镜像文件
    microk8s ctr --namespace k8s.io image import <cilium-image-file.tar>
    

    导入完成后再次确认镜像存在:

    microk8s ctr --namespace k8s.io image ls | grep cilium
    
  • 验证kubelet与containerd的配置一致性
    检查microk8s的kubelet是否指向正确的containerd套接字:

    # 查看kubelet配置中的容器运行时端点
    cat /var/snap/microk8s/current/args/kubelet | grep container-runtime-endpoint
    

    正常输出应为--container-runtime-endpoint=unix:///var/snap/microk8s/current/run/containerd.sock,确保你导入镜像使用的microk8s ctr命令连接的是同一套接字(该命令默认使用microk8s内置的containerd)。

  • 用测试Pod验证镜像可用性
    创建一个极简测试Pod,直接使用目标镜像和Never拉取策略,验证镜像是否能被kubelet识别:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-cilium-image
      namespace: kube-system
    spec:
      containers:
      - name: test-cilium
        image: quay.io/cilium/cilium:v1.14.2@sha256:6263f3a3d5d63b267b538298dbeb5ae87da3efacf09a2c620446c873ba807d35
        imagePullPolicy: Never
        command: ["sleep", "3600"]
    

    应用后查看Pod状态:

    microk8s kubectl apply -f test.yaml
    microk8s kubectl get pod test-cilium-image -n kube-system
    

    如果测试Pod能正常启动,说明问题出在Cilium Helm Chart的配置中(比如存在未导入的sidecar镜像、拉取策略被模板覆盖等);如果测试Pod同样失败,说明镜像或containerd与kubelet的交互存在问题。

  • 检查Helm Values中的拉取策略配置
    确认你的values.yml中是否正确设置了全局镜像拉取策略,以及Cilium组件的拉取策略:

    global:
      imagePullPolicy: Never
    image:
      pullPolicy: Never
    operator:
      image:
        pullPolicy: Never
    

    确保所有涉及镜像的组件都设置了Never拉取策略,避免部分容器被默认设置为IfNotPresent或Always。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:17:03