记录一次k8s集群镜像恢复到harbor的过程

之前由于harbor的存储空间不够了,同事干掉了好多镜像,结果把现网生产的镜像也搞掉了。进行了找回操作,这里做下记录。

环境是k8s集群,容器引擎用的containerd。

最初发现这个问题是在增加节点的时候,发现有的节点主机上,拉取镜像报错。排除了节点网络问题后,才发现是harbor上镜像被删除了。

但是部分主机是可以正常创建节点的,所以考虑部分节点本地有镜像缓存,没有走harbor拉取。

于是一个恢复思路出来了。

上当前运行pod的主机上找到image,然后push到harbor上就行了。

本以为挺简单的事情。结果登陆节点一看。

docker images是空。想起来用的containerd。然后ctr image ls也是空。

额。头大了。想起来还有k8s的crictl命令,尝试crictl images,终于找到了镜像。

具体区别如下:

ctr 是 containerd 的一个客户端工具。
crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。
ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。

这里发现一个问题,crictl没有push命令,没法做推送。。。

然后查资料,ctr需要制定n=k8s.io才能够获取k8s的镜像。

尝试

ctr -n=k8s.io image list

能够找到镜像,于是尝试

ctr -n=k8s.io images push image.sd001.cn:30003/zone/app:2401152907 --user=root:password

发现报错

于是尝试从ctr中export出来,导入docker再push。

ctr -n=k8s.io image export 2401152907.tar image.sd001.cn:30003/zone/app:2401152907

docker load -i 2401152907.tar

然后docker images,终于看到镜像了。

然后docker login,docker push,成功把镜像推送到了harbor。

这里记录下过程。

相关推荐

  1. k8sCA证书过期处理

    2024-02-03 20:28:01       23 阅读
  2. K8SEtcd数据备份/恢复

    2024-02-03 20:28:01       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 20:28:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 20:28:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 20:28:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 20:28:01       18 阅读

热门阅读

  1. UDP和TCP的区别和联系

    2024-02-03 20:28:01       28 阅读
  2. 【CSS】动画(Transform,Transition,Animation)

    2024-02-03 20:28:01       33 阅读
  3. 在 PyTorch 中动态构建和更新模型

    2024-02-03 20:28:01       35 阅读
  4. GolangCI-Lint配置变更实践

    2024-02-03 20:28:01       22 阅读
  5. PHP面试题

    2024-02-03 20:28:01       37 阅读
  6. Docker 第六章 : Docker 数据管理

    2024-02-03 20:28:01       29 阅读
  7. Houdini 18.5 VEX VEX Functions 中英对照

    2024-02-03 20:28:01       29 阅读
  8. 嵌入式学习日记 18

    2024-02-03 20:28:01       23 阅读
  9. 实用功能:Git常用命令

    2024-02-03 20:28:01       25 阅读