【k8s】docker无法查看到k8s的镜像,而crictl images查看报错
新版本的k8s 1.26.2使用的是containerd和docker是2套不同的容器系统, 在k8s中push和pull都是使用crictl, 所以生成pod时会发现docker images中存在镜像,但是kubelet提示" kubelet Failed to pull image "mynodejs:v1.0.0": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/mynodejs:v1.0.0""无法生成pod.
此时使用crictl images会报错:"WARN[0000] image connect using default endpoints", 解决办法如下:
第一步, 重新生成containerd的配置文件
# 默认情况下containerd的sock存放于/run/containerd/containerd.sock
# 重新设置一下使用的runtime-endpoint, 生成后的crictl配置默认存放在/etc/crictl.yaml
crictl config runtime-endpoint unix:///run/containerd/containerd.sock
第二步, 编辑vim /etc/crictl.yaml
# 编辑/etc/crictl.yaml文件, 修改, 主要是新版本增加的image-endpoint
runtime-endpoint: "unix:///run/containerd/containerd.sock"
image-endpoint: "unix:///run/containerd/containerd.sock" #与上边runtime-endpoint一致即可
timeout: 10
debug: false
pull-image-on-create: false
disable-pull-on-run: false
第三步, 完成
# 重启内核, 查看k8s镜像
systemctl daemon-reload
crictl image
# containerd在导入镜像时, 使用ctr命令, 并且要指定k8s默认的命名空间"k8s.io", 否则会查询不到
ctr -n k8s.io image import /home/mynodejs.tar.gz
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了