news 2026/4/22 20:13:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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版本支持)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:45:15

LangFlow与FastAPI结合:构建高性能AI后端服务

LangFlow与FastAPI结合&#xff1a;构建高性能AI后端服务 在当今AI应用快速迭代的背景下&#xff0c;如何将大语言模型&#xff08;LLM&#xff09;高效、稳定地集成到生产系统中&#xff0c;已成为工程团队面临的核心挑战。传统开发方式依赖大量手写代码串联模型调用、提示工程…

作者头像 李华
网站建设 2026/4/23 9:46:41

LangFlow节日祝福语个性化生成工具

LangFlow节日祝福语个性化生成工具 在每年的春节、中秋、教师节来临之际&#xff0c;你是否也曾为写一条得体又不失温度的祝福语而绞尽脑汁&#xff1f;群发的“节日快乐”显得敷衍&#xff0c;手写的寄语又难以覆盖所有亲朋好友的关系与风格偏好。如今&#xff0c;随着大语言模…

作者头像 李华
网站建设 2026/4/23 9:45:24

如何在LangFlow中集成自定义模型和API接口?

如何在LangFlow中集成自定义模型和API接口&#xff1f; 如今&#xff0c;越来越多的企业希望将大语言模型&#xff08;LLM&#xff09;能力嵌入到自身业务系统中——从智能客服、知识问答&#xff0c;到自动化报告生成。但直接基于 LangChain 手写代码构建复杂链路&#xff0c;…

作者头像 李华
网站建设 2026/4/23 9:46:21

7、深入解析Exchange 2000部署与升级策略

深入解析Exchange 2000部署与升级策略 1. 引言 部署Exchange 2000的过程复杂程度不一,主要取决于现有消息传递环境的复杂程度。若当前没有消息传递系统,或者仅使用一两个运行Exchange Server 5.5的服务器,部署过程相对简单;但如果现有消息传递系统要支持跨四大洲、500个物…

作者头像 李华
网站建设 2026/4/23 5:44:55

LangFlow智能搜索建议生成器实现

LangFlow智能搜索建议生成器实现 在当今信息爆炸的时代&#xff0c;用户面对海量数据时常常陷入“查询困境”&#xff1a;输入一个关键词后&#xff0c;搜索引擎返回的结果要么过于宽泛&#xff0c;要么偏离真实意图。如何在用户尚未明确表达需求时&#xff0c;就精准地提供有…

作者头像 李华
网站建设 2026/4/23 9:46:56

LangFlow发票信息提取与归类AI系统

LangFlow发票信息提取与归类AI系统 在企业财务日常中&#xff0c;处理成百上千张格式各异的发票是一项耗时且易错的任务。传统方式依赖人工录入、逐条核对&#xff0c;不仅效率低下&#xff0c;还容易因疲劳导致数据偏差。随着大语言模型&#xff08;LLM&#xff09;技术的成熟…

作者头像 李华