云上发布前镜像预检:runner 和 K8s 节点分开测

简介: 节后发布前,作者对镜像拉取链路开展预检:在CI runner侧用`docker pull`验证各依赖镜像,在K8s节点侧用`crictl pull`二次确认。发现“镜像拉取超时”常被误判为构建失败,实则属基础设施层问题。通过前置检查,可清晰界定故障边界,提升发布成功率。(239字)

节后恢复发布前,我做了一次镜像预检记录。

场景是一个普通后端服务,CI 负责测试和构建镜像,部署到云上 Kubernetes。流水线第一次跑没有进入测试阶段,日志停在:

Pulling docker image node:20-alpine ...
failed to pull image: context deadline exceeded

这类问题容易被误判成构建失败,但实际还在镜像阶段。

runner 侧先测

先把 CI 会用到的镜像列出来:

来源位置 镜像
.gitlab-ci.yml node:20-alpine
service redis:7-alpinepostgres:16-alpine
Dockerfile nginx:stable-alpine
发布工具 your-org/release-helper
K8s 基础组件 pause:3.10

在 runner 所在网络里逐个验证:

docker pull docker.1ms.run/node:20-alpine
docker pull docker.1ms.run/redis:7-alpine
docker pull docker.1ms.run/postgres:16-alpine
docker pull docker.1ms.run/nginx:stable-alpine
docker pull ghcr.1ms.run/your-org/release-helper:2026.05.05
docker pull k8s.1ms.run/pause:3.10

这里主要确认 CI 的构建容器、service 容器和发布工具镜像能不能正常拉取。

节点侧再测

云上 Kubernetes 节点走的是 containerd,不能只拿 runner 的 Docker 结果当结论。

在目标节点上继续验证:

crictl pull docker.1ms.run/nginx:stable-alpine
crictl pull k8s.1ms.run/pause:3.10
crictl images | grep -E "nginx|pause"

如果 runner 能拉、节点不能拉,通常要看这些点:

  1. 节点 DNS 是否和 runner 不同。
  2. containerd 是否有对应镜像入口配置。
  3. 节点是否缺少私有仓库凭证。
  4. VPC、NAT、代理策略是否影响出网。
  5. 节点磁盘空间是否不足。

放进发布前检查

后面我把这组命令放进发布前检查:

#!/usr/bin/env bash
set -euo pipefail

images=(
  "docker.1ms.run/node:20-alpine"
  "docker.1ms.run/redis:7-alpine"
  "docker.1ms.run/postgres:16-alpine"
  "docker.1ms.run/nginx:stable-alpine"
  "ghcr.1ms.run/your-org/release-helper:2026.05.05"
  "k8s.1ms.run/pause:3.10"
)

for image in "${images[@]}"; do
  echo "pull ${image}"
  docker pull "${image}"
done

这一步不解决业务问题,只是把镜像链路提前验证掉。镜像阶段通过以后,再看测试失败、构建失败或 Kubernetes 部署失败,边界会更清楚。

小结

云上发布前,runner 和 K8s 节点最好分开测。

CI 侧看 Docker 能不能拉,节点侧看 containerd 能不能拉。两边都通过,再进入测试、构建和部署,节后第一轮发布会少一些低价值排查。

相关文章
|
6天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23340 5
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
15天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
5355 25
|
11天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
3874 12
|
10天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
3172 10
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
27天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
21247 64
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)