当前位置: 首页 > news >正文

Containerd 运行时的 K8S 集群离线导入镜像的方案

目录

1. 准备与传输镜像

2. 导入镜像

3. 部署应用

4. 技巧与注意事项


在 Containerd 运行时的 K8S 集群中离线导入应用镜像,关键在于将镜像正确导入到 containerd 的k8s.io命名空间,并确保 K8S部署时能使用这些本地镜像。

1. 准备与传输镜像

首先,你需要在可以访问互联网的环境中,准备好要部署的应用镜像。

拉取并保存镜像:使用 Docker 拉取镜像,重新标记为符合 K8s 需求的标签(如需),然后导出为.tar文件。

docker pull <原镜像名称:标签> docker tag <原镜像名称:标签> <新镜像名称:标签> # 可选,使镜像标签符合部署要求 docker save -o <镜像文件名>.tar <新镜像名称:标签>
docker pull nginx:latest docker save -o nginx.tar nginx:latest
  • 提示docker save保存的是展开后的格式,文件可能较大。虽然docker save也支持输出为.tar.gz,但ctr image import命令不支持直接导入压缩格式,如果得到的是.tar.gz文件,需要先解压 。

  • 举例:如需部署nginx:latest,操作如下:

  • 传输镜像文件:将生成的.tar文件复制到离线环境中的 K8s 工作节点(如果需要部署到多个节点,则每个节点都需要复制)。scp <镜像文件名>.tar <用户名>@<节点IP>:<目

2. 导入镜像

这是最关键的一步,需要将镜像导入到 containerd 的正确命名空间中。

  • 导入镜像:登录到目标 K8s 节点,使用ctr命令导入镜像。务必使用-n k8s.io参数,这能确保镜像被导入到 Kubernetes 使用的命名空间 。

    ctr -n k8s.io image import <镜像文件名>.tar
    • 注意如果镜像文件是.tar.gz格式,需要先解压:

  • 验证导入:导入完成后,使用以下命令检查镜像是否存在。

    # 使用 ctr 查看 ctr -n k8s.io images list | grep <镜像名称> # 或者使用与 CRI 接口兼容的 crictl 查看 crictl images | grep <镜像名称>

3. 部署应用

镜像准备就绪后,就可以在 K8s 集群中部署你的应用了。

  • 创建部署配置文件:编写一个 K8s 的 Deployment YAML 文件。关键点在于需要设置imagePullPolicy: IfNotPresentimagePullPolicy: Never这会指示 Kubelet 不要尝试从远程仓库拉取镜像,而是直接使用本地已存在的镜像 。

    apiVersion: apps/v1 kind: Deployment metadata: name: your-app spec: replicas: 1 selector: matchLabels: app: your-app template: metadata: labels: app: your-app spec: containers: - name: your-app-container image: <你在节点上导入的完整镜像名称和标签> # 例如: nginx:latest imagePullPolicy: IfNotPresent # 重要! ports: - containerPort: 80
  • 应用配置:使用kubectl部署你的应用。

    kubectl apply -f your-deployment.yaml

4. 技巧与注意事项

  • 批量操作:如果需要导入多个镜像,可以写一个简单的循环脚本 。

    for image in /path/to/your/*.tar; do ctr -n k8s.io image import "$image" done
  • 镜像已经存在:如果导入时提示镜像已存在,可以使用ctr -n k8s.io images rm <镜像名>先删除旧镜像再导入,或者使用--force选项强制替换(如果ctr版本支持)。

http://www.gsyq.cn/news/133974.html

相关文章:

  • LangFlow产品说明书自动生成系统
  • 微观交通流仿真软件:VISSIM_(3).交通流基本理论
  • 2025年12月天津电线电缆品牌深度测评与推荐报告 - 2025年品牌推荐榜
  • Excalidraw手绘风格图表+AI版本控制协作无忧
  • LangFlow个性化学习计划生成器实现方案
  • 【Docker Swarm集群004篇】环境搭建篇:Swarm 集群部署与初始化-001
  • LangFlow面试题目智能生成系统
  • LangFlow版本更新日志:新功能与改进点汇总
  • 不会精准对比前人研究写“讨论与对比”段落?教你用ChatGPT辅助,直接让这部分提升一个档次(附提示词指令)
  • LangFlow网页内容抓取+摘要生成一体化流程
  • 以目标检测基础知识学习分割模型算法
  • 11、确保Exchange 2000备份与恢复万无一失
  • LangFlow适合哪些AI场景?文本生成、对话系统、RAG全适配
  • 微观交通流仿真软件:VISSIM_(14).基于VISSIM的公交优先系统设计
  • 【专业词汇】用户交互设计中的核心定律与效应
  • 2、探索 Exchange 2000:全新功能与特性解析
  • LangFlow实时预览功能揭秘:即时调试AI工作流的强大支持
  • gradio_study 学习项目,开始了!
  • 如何在LangFlow中集成自定义模型和API接口?
  • Excalidraw绘图逻辑解析:为何越简单越高效?
  • LangFlow如何管理敏感信息如API密钥?
  • LangFlow结合Prompt工程的最佳实践
  • LangFlow舆情监测系统可视化构建实例
  • LangFlow日志追踪功能上线,便于流程监控
  • 2、Windows 7:功能、安装与使用全解析
  • LangFlow数据流监控功能:清晰查看每一步输出结果
  • 【技术教程】可视化设计与心理学理论
  • 2025年12月德阳新婚挂饰品牌推荐与比较 - 2025年品牌推荐榜
  • 21、网络技术与系统管理综合指南
  • LangFlow前端界面定制化修改指南