尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

用 ctr 将 Docker 镜像导入 K8s 集群并使用本地镜像

用 ctr 将 Docker 镜像导入 K8s 集群并使用本地镜像 文章目录用 ctr 将 Docker 镜像导入 K8s 集群并使用本地镜像一、核心原理二、第一步:在 master 上用 Docker 导出镜像2.1 导出两个镜像(基础镜像 + 构建好的 httpd 镜像)2.2 (可选)合并为一个 tar 包三、第二步:分发到所有节点3.1 用 scp 分发到两个 node3.2 master 自己也导入(虽然 master 有污点不调度,但以防万一)四、第三步:在每个节点用 ctr 导入到 containerd4.1 在 master 上导入4.2 在 node01 上导入4.3 在 node02 上导入4.4 一键批量导入脚本(推荐)五、第四步:验证 containerd 中的镜像5.1 查看 k8s.io namespace 下的所有镜像5.2 查看镜像详细信息5.3 用 crictl 验证(更贴近 K8s 视角)六、第五步:修改 Deployment 使用本地镜像6.1 关键配置:imagePullPolicy6.2 最终的 Deployment YAML6.3 创建并验证七、第六步:完整测试(Service + 访问)7.1 创建 Service7.2 测试访问八、常见问题排查Q1:ctr import 成功,但 Pod 还是 ImagePullBackOff?Q2:ctr: command not found?Q3:导入后镜像名变成了 docker.io/library/...?Q4:如何删除 containerd 里的镜像?Q5:如何确认 kubelet 用的是 containerd?九、一键完整脚本(从构建到部署)十、总结:3 个关键点用 ctr 将 Docker 镜像导入 K8s 集群并使用本地镜像你的集群是v1.24.17 + containerd,docker build的镜像存在 Docker 的存储里,containerd(ctr)看不到,必须导出再导入。下面是完整流程。一、核心原理Docker 守护进程(master 上) containerd(kubelet 用的) ┌─────────────────────┐ ┌─────────────────────┐ │ centos-httpd:v1 │ docker save │ │ │ centos:7.7.1908 │ ──────────► │ tar 包 │ │ (docker 的存储) │ │ │ └─────────────────────┘ └──────────┬──────────┘ │ ctr import ▼ ┌──────────
返回列表